JSP & Servlet - 5.Session技术

Session技术

Request对象解决了一次请求内不同的Servlet数据共享问题, 那么一个用户不同请求的处理需要使用相同数据就要使用到session技术。

1. Session简介

1.1 session原理

​ 用户使用浏览器第一次向服务器发送请求,服务器在接收到请求后没调用对应的Servlet进行处理。在处理过程中会给用户创建一个session对象,用来存储用户请求处理相关的公共数据,并将此Session对象的JSESIONID以COokie的形式存储在浏览器中(临时存储,浏览器关闭即失效)。用户在发起第二次请求后续请求直接根据JSESIONID获取到session对象,保证不同请求获取共享数据。

1.2 session特点

  • 存储在服务器端
  • 服务器进行创建
  • 依赖Cookie技术
  • 生命周期为一次会话
  • 默认存储时间为30分种(在指定的时间内使用后,重新计时)

1.3 session作用

​ 解决了一个用户不同请求处理的数据共享问题。

2. Session的使用

@WebServlet("/mySession1")
public class SessionTestServlet extends HttpServlet{
	private static final long serialVersionUID = 1L;

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
		resp.setContentType("text/html;charset=utf-8");
    //创建/获取session对象,session默认存储时间为30分钟
		HttpSession s = req.getSession();
    //设置存储时间为1天,单位为秒
    s.setMaxInactiveInterval(24*60*60);
    //设置session存储数据
		s.setAttribute("name", "mySession");
	}
}

@WebServlet("/mySession2")
public class SessionTestServlet2 extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      //创建/获取session对象
    	HttpSession s = req.getSession();
      //从session中取出存储数据
    	String name = (String)s.getAttribute("name");
    	System.out.println(name);
      //强制session失效
      s.invalidate();
    }
}
/*output:
mySession
*/
  • HttpSession hs = req.getSession();

    如果请求中拥有session标识符(JSESSIONID),则返回其对应的session队形。

    如果请求中没有session标识服,则创建新的session对象,并将其JSESSIONID作为cookid数据存储到浏览器内存中(临时存储)。

    如果之前的session对象失效了,也会重新创建一个新的session对象,并将其JSESSIONID存储到浏览器内存中

  • 在tomcat中统一修改session存储时间

    <session-config>
      <session-timeout>30</session-timeout>
    </session-config>
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值