Session的创建和设置

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

Session的创建和设置

 

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

Session的创建和设置

 

 Session的创建和设置

 

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

Session的创建和设置

 

 Session的创建和设置

 

以上为无参的方法获取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错误:

Session的创建和设置

 

 参数为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的有效期限:

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。

Session的创建和设置

 

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

Session的创建和设置

 

 这是因为第一个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());
    }

Session的创建和设置

 

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

4、session的特点:

(1)存储在服务器端。

(2)依赖于Cookie。

(3)有效期限。

 

上一篇:java-客户端上的GWT HTTP会话可用性


下一篇:java – Sturts 2会话失效,将请求会话设置为新会话