Session
什么是Session
Session 是一个接口(HttpSession),是会话,用来维护客户端和服务器之间的技术。每个客户端都会有自己的一个 Session 会话。Session 会话中,人们经常用来保存登录之后的信息。
创建和获取Session
- 创建Session
request.getSession()
//第一次调用是:创建 Session 会话。
//之后调用都是:获取前面创建好的 Session 会话对象。
- 获取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
- 创建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 创建成功");
}
- 获取Cookie
req.getCookies():Cookie[]
Cookie值的修改
方法:
- 先创建一个要修改的同名(key)的 Cookie 对象。
- 在构造器赋于新的 Cookie 值。
- 调用 response.addCookie( Cookie )。
Cookie cookie = new Cookie("key1","newValue1");
resp.addCookie(cookie);
Cookie的生命控制
setMaxAge()
//正数,表示在指定的秒数后过期;负数,表示浏览器一关,Cookie 就会被删除(默认值是-1); 零,表示马上删除 Cookie。