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

    }

     

     

  • 相关阅读:
    Mysql.linux登录数据库
    Linux.vim编辑器显示行号
    经济学-泰勒
    MyBatis.多条件排序
    Mysql.复选条件的查询
    前端.省市级联框
    前端.解决form-contral总是换行问题
    若依框架. 仿ThymeLeaf前端SelectDictLable方法
    excel中为什么不显示单引号
    python-爬虫(3)---lxml匹配css
  • 原文地址:https://www.cnblogs.com/javscr/p/10285976.html
Copyright © 2020-2023  润新知