session机制深入理解

本文详细介绍了Session的概念及其在Web应用中的作用,包括如何通过Session保存用户登录信息、实现跨页面的数据持久化,以及Session对象的常用方法和工作流程机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1、什么是session

 

   Session对象表示目前个别用户的会话状态,用来识别每个用户。session对象用于存储用户的会话信息。用户在应用程序的web页面之间跳转时,存储在session对象中的变量不会丢失,而是在整个用户会话过程中保存下去。

 

2、为什么使用session呢?

 

   http协议是一个无状态协议,每个客户机请求被当成独立的事物。简单来说就是,web服务器是不知道现在连接上来的人到底是哪个人,为了满足选择性发送信息的需求,在http的基础上做了很多扩展来达到这个目的,如数字签名cookiesessionsession可以保存用户的相关登陆资料等信息。跳转页面的时候服务能根据session的值来判断用户是否登陆,判断用户的权限和其它相关信息等。session在登陆页面中使用,相关于充当了1临时身份证的作用。

 

3、Session对象常用到的方法:

	//获取session对象
			HttpSession session = request.getSession(true);
			//在session中存储信息;将用户的信息设置为session对象的属性
			session.setAttribute("loginState", "OK");
			//获取session中的值
			session.getAttribute("loginState");
			//移除session中的值
			session.removeAttribute("loginState");
			//销毁session
			session.invalidate();
			//操作会话时间
			session.setMaxInactiveInterval(1200);//单位为s
			session.getMaxInactiveInterval();
			//判断是否有新的session
			session.isNew();
			//获取sessionID
			session.getId();
			//获取session创建时间
			session.getCreationTime();
			//获取session最后一次访问时间
			session.getLastAccessedTime();

  1) getAttribute方法用于获取session作用域里指定属性的值,该值是一个Object了性

    public Object getAttribute(String name)//name 获得session属性的名称

 2)setAttribute方法用于设置值到指定属性当中

    public void setAttribute(String name,Object value)

    name:指定设置session属性的名称

    value:绑定session属性的name值,该值是一个对象。

 3)removeAttribute方法用于移除当前session对象中的属性

   

4、session的作用范围:

 

   作用域是一个用户会话范围,从session第一次创建到session因超时(一般为30分钟)或者客户端关闭之前,数据会一直存在。session保持时间通常可以通过setMaxUInactiveInterval(lastTime)函数来确定,也可以通过配置web.xml文件来确定:

   <session-config>

     <session-timeout>10</session-timeout>

 

 

 

      </session-config>

 

5、session工作流程机制:

 

     当一个客户首次方位服务器上的一个jsp或者servlet时,JSP引擎会产生一个session对象,同时分配一个String类型的ID号(即SessionID),JSP引擎同时将这个ID号发送到客户端,存放在Cookie中,这样session对象和客户端就建立了一一对应的关系。当客户再访问连接该服务器的其他页面时,不再分配新的session对象,直到客户浏览器关闭,服务器端的该session对象才取消,并且和客户端的会话关系对应取消。

     通过eclipse的Debug可以很清晰的看到session的工作机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值