request.getSession.setAttribute().....

来源:互联网 发布:淘宝客返利网 编辑:程序博客网 时间:2024/04/28 06:40

request.getSession().setAttribute("xxx", "xxx"); request.setAttribute(); request.getSession().setAttribute()的意思是获得当前会话的session,然后再setAttribute到session里 面去,有效范围是session而不是request.而request.setAttribute()是setAttribute到request中去,有效范 围是requestsession对象是jsp的内置对象,是由容器自动创建的,如果你用的是tomcat,就由tomcat来给你创 建,如果用的是weblogic就由weblogic给你创建。容器内部是如何创建的我不大清楚,我估计是这样的,支持 servlet规范的容器(也就是服务器)里有一个实现了HttpSession接口的一个类,容器启动时使用单例模式(这里也 许不对)来实例化这个类。再把这个类的实例赋值给session。用别人的文章“解释一下当前会话的session”的意思 服务端不能主动连接客户端,只能被动等待并答复客户端请求。客户端连接服务端,发出一个HTTP Request,服务端 处理请求,并且返回一个HTTP Response给客户端,本次HTTP Request-Response Cycle结束。我们看到,HTTP协 议本身并不能支持服务端保存客户端的状态信息。于是,Web Server中引入了session的概念,用来保存客户端的状 态信息。这里用一个形象的比喻来解释session的工作方式。假设Web Server是一个商场的存包处,HTTP Request 是一个顾客,第一次来到存包处,管理员把顾客的物品存放在某一个柜子里面(这个柜子就相当于Session),然后把 一个号码牌交给这个顾客,作为取包凭证(这个号码牌就是Session ID)。顾客(HTTP Request)下一次来的时 候,就要把号码牌(Session ID)交给存包处(Web Server)的管理员。管理员根据号码牌(Session ID)找到相 应的柜子(Session),根据顾客(HTTP Request)的请求,Web Server可以取出、更换、添加柜子(Session) 中的物品,Web Server也可以让顾客(HTTP Request)的号码牌和号码牌对应的柜子(Session)失效。顾客 (HTTP Request)的忘性很大,管理员在顾客回去的时候(HTTP Response)都要重新提醒顾客记住自己的号码牌 (Session ID)。这样,顾客(HTTP Request)下次来的时候,就又带着号码牌回来了。Session ID实际上是在客 户端和服务端之间通过HTTP Request和HTTP Response传来传去的。号码牌(Session ID)必须包含在HTTP Request里面。关于HTTP Request的具体格式,请参见HTTP协议(http://www.w3.org/Protocols/)。这里 只做一个简单的介绍。

原创粉丝点击