码迷,mamicode.com
首页 > 其他好文 > 详细

Session的创建和设置

时间:2019-09-20 19:07:02      阅读:83      评论:0      收藏:0      [点我收藏+]

标签:inactive   max   cep   content   存在   没有   服务器   color   coding   

1、Session的获取:

(1)无参的方法:

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        HttpSession httpSession=request.getSession();
        System.out.println(httpSession.getId());
    }

技术图片

 

 请求中无Cookie,但是响应中存在Cookie:

技术图片

 

 技术图片

 

 当再次访问该Servlet的时候,请求中存在Cookie,响应中的Cookie已经没有了:

技术图片

 

 技术图片

 

以上为无参的方法获取Session,如果没有Session则创建一个,如果有则直接返回。

(2)有参的方法:

参数为false:

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        HttpSession httpSession=request.getSession(false);
        System.out.println(httpSession.getId());
    }

如果有Session则直接返回。

没有的话返回500错误:

技术图片

 

 参数为true:

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        HttpSession httpSession=request.getSession(true);
        System.out.println(httpSession.getId());
    }

此方法与不加参数等效。

 2、Session的有效期限:

技术图片

 

 前三次访问是连续访问三次CookieServlet,可以看出,SESSIONID的值是不会发生变化的,但是当关闭了浏览器,第四次访问CookieServlet时,SESSIONID发生了变化;第五次为更换了浏览器之后的结果,SESSIOID依旧会发生变化。

以下情况下Session需要重新建立:

(1)用户关闭了浏览器。

(2)关闭了服务器。

(3)用户没有向服务器提出请求(超过30分钟),过期后服务器自动删除。

3、Session的设置:

(1)时间:

   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        HttpSession httpSession=request.getSession(true);
        httpSession.setMaxInactiveInterval(10);//十秒后失效
        System.out.println(httpSession.getId());
    }

第一次访问,成功返回SESSIONID。

技术图片

 

 过十几秒钟后重新访问发现SESSIONID的值已经改变了:

技术图片

 

 这是因为第一个SESSIOID已经过期了,需要创建第二个。

(2)强制失效:

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        HttpSession httpSession=request.getSession(true);
        httpSession.invalidate();
        System.out.println(httpSession.getId());
    }

技术图片

 

 即执行invalidate()后可以将创建的SESSION立即结束。

4、session的特点:

(1)存储在服务器端。

(2)依赖于Cookie,借助Cookie存储JSESSIONID。

(3)存在有效期限。

 

Session的创建和设置

标签:inactive   max   cep   content   存在   没有   服务器   color   coding   

原文地址:https://www.cnblogs.com/zhai1997/p/11558649.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!