本帖最后由 阿莱 于 2019-10-17 16:58 编辑
【上海校区】Session的持久化
一、前言
我们将部分信息存储在session中,web阶段一般存储的是用户名的一些信息用于验证用户是否登录。我们发现当我们关闭浏览器之后,之前存储的session信息就获取不到了。我们知道session是存储在服务器中、默认的时间是30分钟,为何获取不到了呢?因为获取session的时候需要浏览器携带一个cookie信息,jsessionid。
二、session的持久化操作
设置cookie的持久化时间对session持久化
1、session的存储
[Java] 纯文本查看 复制代码 @WebServlet("/SessionServlet")
public class SessionServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1.创建session
HttpSession session = request.getSession();
session.setAttribute("userName","张三");
// 2.获取JSESSIONID
String jsessionId = session.getId();
//需要携带的cookie,JSESSIONID=648FD3418F2D45E3013F65CD412
Cookie cookie = new Cookie("JSESSIONID",jsessionId);
// 3.对cookie进行持久化
cookie.setMaxAge(60*60*24);
// 4.发送cookie
response.addCookie(cookie);
}
}
2、session的获取
关闭浏览器再进行获取测试
[Java] 纯文本查看 复制代码 @WebServlet("/GetSession")
public class GetSession extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1.获取session
HttpSession session = request.getSession();
// 2.获取session的值
String userName = (String) session.getAttribute("userName");
System.out.println("userName = " + userName);
}
}
3、web.xml设置session的存储时间
[XML] 纯文本查看 复制代码 <session-config>
<!--设置session的存储时间为一小时-->
<session-timeout>60</session-timeout>
</session-config>
|