细节:
- 当客户端关闭后,服务器不关闭,两次获取session是否为同一个?
- 默认情况下。不是。
- 如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活事件,让Cookie持久化保存
package com.ailyt.session;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
@WebServlet(value = "/sessionStudy03")
public class SessionStudy03 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取Session
HttpSession session = request.getSession();
System.out.println(session);
//期望客户端关闭后,Session也能相同
Cookie cookie = new Cookie("JSESSIONID", session.getId());
cookie.setMaxAge(60 * 60);
response.addCookie(cookie);
}
}
-
客户端不关闭,服务端关闭后,两次获取的session是同一个么?
- 不是同m一个,但是要确保数据不丢失
- session的钝化:
- 在服务器正常关闭之前,将session对象序列化到硬盘上
- session的活化:
- 在服务器启动后,将session文件转化为内存中的session对象即可。
- session的钝化:
- 不是同m一个,但是要确保数据不丢失
-
session的销毁?
- 服务器关闭
- session对象调用invalidate()
- session默认失效时间 30分钟
选择性配置修改:
<session-config>
<dession-timeout>30</dession-timeout>
</session-config>
Session的特点:
- session用于存储一次会话的多次请求的数据,存在服务器端
- session可以存储任意类型,任意大小的数据
Session与Cookie的区别:
- Cookie是把用户的数据写给用户的浏览器(可以保存多个)
- Session把用户的数据写到用户独占的Session中!(保存重要的信息,减少服务器资源的狼类)
- Session对象由服务器创建