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

    }

     

     

  • 相关阅读:
    学习笔记1:性能问题在于你想不到的任何地方!
    React Native控件之PullToRefreshViewAndroid下拉刷新组件解说(20)
    CSDN-markdown编辑器之导入导出文档功能
    无名管道与有名管道通讯编程
    LeetCode Remove Nth Node From End of List
    libpcap出错信息调试函数pcap_geterr, pcap_perror
    工作流学习——Activiti流程实例、任务管理四步曲
    B
    oracle学习笔记 oracle软件安装和数据库的创建
    路由器逆向分析------MIPS系统网络的配置(QEMU)
  • 原文地址:https://www.cnblogs.com/javscr/p/10285976.html
Copyright © 2011-2022 走看看