zoukankan      html  css  js  c++  java
  • Java 会话技术 之 session

    Session技术(存放在服务器  基于cookie(存储sessionId)

    每个客户端 第一次会话请求时  创建独自的session+JSESSIONID

    服务端 响应 set-cookie:JSESSIONID:xxxxx  存入客户端 

    客户端 请求时 携带cookie:JSESSIONID:xxxxx去找对应的session域(内存)

    客户端关闭 清除内存cookie / 保留硬盘cookie

    客户端开启 再次访问  JSESSIONID没有  session域还在

    Session对象的生命周期

    创建:第一次执行request.getSession()时创建

    销毁:

    1)服务器(非正常)关闭时

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

    }

     

     

  • 相关阅读:
    POJ 2251 Dungeon Master
    HDU 3085 Nightmare Ⅱ
    CodeForces 1060 B Maximum Sum of Digits
    HDU 1166 敌兵布阵(树状数组)
    HDOJ 2050 折线分割平面
    HDU 5879 Cure
    HDU 1878 欧拉回路
    HDU 6225 Little Boxes
    ZOJ 2971 Give Me the Number
    HDU 2680 Choose the best route
  • 原文地址:https://www.cnblogs.com/javscr/p/10285976.html
Copyright © 2011-2022 走看看