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

请求中无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)存在有效期限。

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

时间: 2024-11-09 09:44:07

Session的创建和设置的相关文章

使用HttpSessionListener接口监听Session的创建和失效

转自:http://uule.iteye.com/blog/824115 HttpSessionListener : Session创建事件发生在每次一个新的session创建的时候,类似地Session失效事件发生在每次一个Session失效的时候. 这个接口也只包含两个方法,分别对应于Session的创建和失效:# public void sessionCreated(HttpSessionEvent se); # public void sessionDestroyed(HttpSessi

学习笔记(五)Session 的创建和销毁 生命周期 表单重复提交及实现验证码

1. Session 的创建和销毁 page 指定的 session 属性: 1). 默认情况下, 第一次访问一个 WEB 应用的一个 JSP 页面时, 该页面都必须有一个和这个请求相关联的 Session 对象. 因为 page 指定的 session 属性默认为 true 2). 若把 session 属性改为 false, JSP 页面不会要求一定有一个 Session 对象和当前的 JSP 页面相关联所以若第一次访问当前 WEB 应用的 JSP 页面时, 就不会创建一个 Session

Session管理之超时设置和强制下线

(一)Session超时时间设置的三种方式: (1)在web.xml中设置session-config <session-config> <session-timeout>2</session-timeout> </session-config> 即交互间隔时间最长为2分钟(该处时间单位为分钟),2分钟后session.getAttribute()获取的值为空. (2)在Tomcat的/conf/web.xml中session-config,默认值为:30分

Session中短信验证码设置有效时间

Session中短信验证码设置有效时间 package com.mozq.boot.kuayu01.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpSession; import java.text.Simple

vSphere部署系列之05——虚拟机的创建和设置

实验环境总体规划,请见前面的博文<vSphere部署系列之03--实验环境总体规划>. 这一篇中,以使用本地存储的esxi-mgt为例,讲解一下ESXi主机如何创建及设置虚拟机. ▲总体规划网络拓扑图 一.准备工作 本案中,按规划esxi-mgt主机上要创建并运行两台虚拟机sqdc01和sqvcenter,以作为vSphere管理中心中的域控服务器和vCenter服务器. 使用vSphere Client连接该主机.具体操作请见前一篇博文<vSphere部署系列之04--ESXi的安装和

java:session的创建与销毁

创建session: ServletActionContext.getRequest().getSession().setAttribute("update", model); DutiesScienceEndowScore update = (DutiesScienceEndowScore) ServletActionContext.getRequest().getSession().getAttribute("update"); 销毁session: Servl

iOS之UI--指示器HUD的创建和设置

指示器的创建和设置 *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: pointer; position

创建并设置ASP.NET的会话状态服务器(SQL State Server)

首先创建服务器数据库ASPState: C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regsql -ssadd -sstype p -E  -S .\SQLExpress 执行数据库脚本Script:USE ASPStateGOCREATE USER [adr] FOR LOGIN [adr] WITH DEFAULT_SCHEMA=[dbo]GOEXEC sp_addrolemember  'db_datareader', 'a

Hibernate入门(四)之hibernate中session的创建方式

为什么要专注于session的创建方式 在有些场景必须关注session的创建,比如说在银行转账操作的时候,两个账户转账必须在同一个session中 如上面所示,账户1钱没了,账户2钱却没有到,原因就在于两者不再同一个事务当中,不能实现事务的回滚. getCurrentSession 说明: 1.产生方式的说明 1.先检查当前线程中是否有session 2.如果当前线程中有session,则把session提取出来,直接使用 3.如果当前线程中没有session,则采用openSession方法