Request与Session的存值取值操作

Request与Session的存值取值

request域的存值:

request可以直接set进去

request.setAttribute("request", value);

request域的取值有两种方式:

"${request}"
------------
"${requestScope.request}"

或者想获取key值中某一个valueBean对象

"${request.name}"

session域的存值:

session需要先get一下获取session然后才能set进去key,value值

request.getSession().setAttribute("session", value);
----------------------------------------------------
HttpSession session = request.getSession();
session.setAttribute("session", value);

session域的取值:

"${sessionScope.session}"

Request和Session的区别

说简单点 request对象和session对象的最大区别是生命周期。

request

request范围较小一些,只是一个请求。

request对象的生命周期是针对一个客户端(说确切点就是一个浏览器应用程序)的一次请求,当请求完毕之后,request里边的内容也将被释放点 。

简单说就是你在页面上的一个操作,request.getParameter()就是从上一个页面中的url、form中获取参数。

但如果一个request涉及多个类,后面还要取参数,可以用request.setAttribute()和request.getAttribute()。

但是当结果输出之后,request就结束了。

session

session可以跨越很多页面。

而session的生命周期也是针对一个客户端,但是却是在别人设置的会话周期内(一般是20-30分钟),session里边的内容将一直存在,即便关闭了这个客户端浏览器 session也不一定会马上释放掉的。

可以理解是客户端同一个IE窗口发出的多个请求。

这之间都可以传递参数,比如很多网站的用户登录都用到了。

比较

request占用资源比较少,安全性也比较高,可是相对来说缺乏持续性。

session则相对来说对资源的消耗会大点,安全性相对来说也会稍微低点,可是它能实现比如会话跟踪技术。

如果可以使用request的情况下,尽量使用request 因为相对于服务器来说资源的消耗还是比较重要的。

在传递页面过程中request传递到下一页面就不能再传递了,而sesison却不如此,即request仅限于2个相邻的页面

每按一个网页上的一个链接就是一个新的request,当服务器返回给浏览器一个response时,request就结束了,此时保存在request中的对象就不存在了,

但是当你用一个浏器连到服务器上时application-server会新开一个session给你,当连接超时或浏览器关闭时session才销毁。

所以说作用的范围是不一样,session也就可以跟踪用户的状态。

session相当于是一个客户端的全局变量,

比如A机与服务器第一次访问时设置session.setAttribute("aaa")="ComputerA".则在A机访问继续访问的任意一个页面都可以取的session.getAttribute("aaa")的值是ComputerA;

request是某一次访问的局域变量,

生命周期只是一次请求。因此login的变量应该放在session中

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

你可能感兴趣的:(Request与Session的存值取值操作)