Java Web之Session和Cookie

Session

什么是Session

Session 是一个接口(HttpSession),是会话,用来维护客户端和服务器之间的技术。每个客户端都会有自己的一个 Session 会话。Session 会话中,人们经常用来保存登录之后的信息。

创建和获取Session

  1. 创建Session
request.getSession()
//第一次调用是:创建 Session 会话。
//之后调用都是:获取前面创建好的 Session 会话对象。
  1. 获取Session
getid()
//得到Session的会话id值。每个会话都有一个ID值。而且这个 ID 是唯一的。
//判断Session是不是刚创建出来的(新的)
isNew()
//true表示刚创建,false 表示获取之前创建

Session数据的存取

//往 Session 中保存数据
protected void setAttribute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
	req.getSession().setAttribute("key1", "value1"); 
    resp.getWriter().write("已经往 Session 中保存了数据"); 
}
//获取 Session 域中的数据
protected void getAttribute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
    Object attribute = req.getSession().getAttribute("key1");           		resp.getWriter().write("从 Session 中获取出 key1 的数据是:" + attribute); 
}

Session的生命周期

//设置 Session 的超时时间(以秒为单位),超过指定的时长,Session 就会被销毁,值为正数的时候,设定 Session 的超时时长。 负数表示永不超时(极少使用)
public void setMaxInactiveInterval(int interval)
//获取 Session 的超时时间
public int getMaxInactiveInterval()
//让当前 Session 会话马上超时
public void invalidate()

Session 默认的超时时间长为 30 分钟。这个时长可以在web.xml 配置文件中修改

<!--表示当前 web 工程创建出来的所有 Session 默认超时时长是 20 分钟--> 
    <session-config> 
    	<session-timeout>20</session-timeout> 
    </session-config>
    
//如果只想修改个别 Session 的超时时长
    session.setMaxInactiveInterval(int interval)

Cookie

什么是Cookie

Cookie 翻译是饼干的意思。Cookie 是服务器通知客户端保存键值对的技术。客户端有了 Cookie 后,每次请求都发送给服务器。

创建和获取Cookie

  1. 创建Cookie
protected void createCookie(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
    //1 创建 Cookie 对象
	Cookie cookie = new Cookie("key1", "value1"); 
    //2 通知客户端保存 
    Cookie resp.addCookie(cookie); 
 
    resp.getWriter().write("Cookie 创建成功");
}
  1. 获取Cookie
req.getCookies():Cookie[]

Cookie值的修改

方法:

  1. 先创建一个要修改的同名(key)的 Cookie 对象。
  2. 在构造器赋于新的 Cookie 值。
  3. 调用 response.addCookie( Cookie )。
Cookie cookie = new Cookie("key1","newValue1");  

resp.addCookie(cookie);

Cookie的生命控制

setMaxAge() 
//正数,表示在指定的秒数后过期;负数,表示浏览器一关,Cookie 就会被删除(默认值是-1); 零,表示马上删除 Cookie。

猜你喜欢

转载自blog.csdn.net/ijwwio/article/details/106260723