Session技术(存放在服务器 基于cookie(存储sessionId))html
每一个客户端 第一次会话请求时 建立独自的session域+JSESSIONIDweb
服务端 响应 set-cookie:JSESSIONID:xxxxx 存入客户端 tomcat
客户端 请求时 携带cookie:JSESSIONID:xxxxx去找对应的session域(内存)服务器
客户端关闭 清除内存cookie / 保留硬盘cookiecookie
客户端开启 再次访问 JSESSIONID没有 session域还在session
Session对象的生命周期iphone
建立:第一次执行request.getSession()时建立spa
销毁:xml
1)服务器(非正常)关闭时htm
2)session过时/销毁(再也不请求,30分钟(tomcat默认)后销毁)
能够在WEB项目下WEB-INF/web.xml中进行配置
<session-config>
<session-timeout>30</session-timeout>
</session-config>
3)手动销毁session 退出时,删除session内数据 不用销毁
session.invalidate();
做用范围:
默认在一次会话中,一次会话中任何资源公用一个session对象
public class Servlet01 extends HttpServlet {
public void doGet(...) throws ServletException, IOException {
//获取每一个客户端私有的session域(内存) 不存在 建立
HttpSession session=request.getSession();//获取/建立session域
session.setAttribute("goods", "iphone"); //存储数据
//String goods=(String)session.setAttribute("goods"); //取数据
//session.removeAttribute("goods"); //删除数据
String id=session.getId(); //获取JsessionId
response.getWriter().write("JsessionId:"+id); //网页输出id
}
public void doPost(...) {doGet(request, response);}
}
public class Servlet02 extends HttpServlet {//一次会话 任何资源共用session
public void doGet(...) throws ServletException, IOException {
HttpSession session=request.getSession();//获取session对象
String value=(String)session.getAttribute("name");//("goods")
response.setContentType("text/html;charset=utf-8");//解决乱码
response.getWriter().write("name:"+value);
}
public void doPost(...) {doGet(request, response);}
}
public class MyServlet extends HttpServlet {//session持久化
public void doGet(...) throws ServletException, IOException {
//获取session对象
HttpSession session=request.getSession();
session.setAttribute("name", "小野猪");
String id=session.getId();//获取JsessionId
//建立一个存储JsessionId的cookie对象
Cookie cookie=new Cookie("JSESSIONID",id);
cookie.setPath("/WEB0005");
cookie.setMaxAge(60*3);//JSESSIONID 存储时间
//发送cookie对象
response.addCookie(cookie);
response.getWriter().write("JSESSION:"+id);
}
public void doPost(...){doGet(request, response);}
}