Java 会话技术 之 session

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

2session过时/销毁(再也不请求,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

//建立一个存储JsessionIdcookie对象

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);}

}

相关文章
相关标签/搜索