1、作用
Session的作用就是在服务器端保存一些用户的数据,然后传递给用户一个名字为JESSIONID的Cookie,这个JSEEIONID对应这个服务器中的一个Session对象,通过它就可以获取到、保存用户信息的session。(session中的数据存储到硬盘上即钝化)
session 的时效问题,默认时间为30分钟,可以在服务器的web.xml配置中修改
<session-config>
<session-timeout>30</session-timeout>
</session-config>
2、运行原理
1、第一次向服务器发送请求时在服务器端创建一个session对象,该对象有一个全球唯一的ID
2、在创建Session对象的同时会创建一个特殊的Cookie对象,该Cookie对象的名字是一个固定值:JESSIONID
该Cookie对象的value值就是Session对象的ID值,并将该Cookie对象发送给浏览器
3、以后浏览器再发送请求就会携带着这个特俗的Cookie对象
4、服务器获取Cookie对象的值以后在服务器端寻找与之对应的session对象以此来区分不同的用户
3、示例
CreateOrGetSession.java
package servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* 创建或者获取Session
*/
public class CreateOrGetSession extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//创建session对象
HttpSession session = request.getSession();
//获取session的ID
String id = session.getId();
System.out.println(id);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
在servlet中获取session并使其失效
//获取Session对象
HttpSession session = request.getSession();
//使session对象失效
session.invalidate();
//重定向到首页
response.sendRedirect(request.getContextPath()+"/index.jsp");