java中session和request的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中session和request的区别相关的知识,希望对你有一定的参考价值。

java中session和request的区别
说得越多越好
越详细越好。
在写项目的时候
什么时候用他最好的方面多说说

request 指在一次请求的全过程中有效,即从http请求到服务器处理结束,返回响应的整个过程,存放在HttpServletRequest对象中。在这个过程中可以使用forward方式跳转多个jsp。在这些页面里你都可以使用这个变量。request是用户请求访问的当前组件,以及和当前web组件共享同一用户请求的web组件。如:被请求的jsp页面和该页面用<include>指令包含的页面以及<forward>标记包含的其它jsp页面;
Session是用户全局变量,在整个会话期间都有效。只要页面不关闭就一直有效(或者直到用户一直未活动导致会话过期,默认session过期时间为30分钟,或调用HttpSession的invalidate()方法)。存放在HttpSession对象中 ,同一个http会话中的web组件共享它。
参考技术A 说简单点 request对象和session对象的最大区别是生命周期
request对象的生命周期是针对一个客户端(说确切点就是一个浏览器应用程序)的一起请求 当请求完毕之后,request里边的内容也将被释放点
而session的生命周期也是针对一个客户端 但是却是在别人设置的会话周期内(一般是20-30分钟) session里边的内容将一直存在 即便关闭了这个客户端浏览器 session也不一定会马上释放掉的

request和session的优点和缺点很明显
request占用资源比较少 安全性也比较高 可是相对来说 缺乏持续性
而session则相对来说 对资源的消耗会大点 安全性相对来说也会稍微低点 可是它能实现比如会话跟踪技术 个有优点和缺点
不过 个人觉得 如果可以使用request的情况下 尽量使用request 因为相对于服务器来说 资源的消耗这个问题还是比较重要的本回答被提问者采纳
参考技术B request 和session的有什么区别
一个是在request里面设置属性
另外一个是在session里面设置属性
最典型的区别是,request传送到下一个页面之后,里面的属性就没掉了
不能再传递到下一个页面
而session会把这个attribute hold住一段时间
然后时间到了以后释放
2.你说的是sql语句吧?不同数据库有不同的分页方式
建议你用hibernate,方言dialect这个属性很好地封装了这些区别

1.一个是在request里面设置属性
另外一个是在session里面设置属性,request里保留的值,传到下个页,就会自动失效!,而session 则不同,他的一个会话期差不多有20分中,,就是说他保留的值有20分中的有效期!!!
2.top 几,就是查找按条件的前几条记录!!
参考技术C 上楼都说的很对!但还漏掉了一个重要的一点!
request的作用域范围只在两个相邻页面起作用,而在三个或三个以上的页面就不行!要用session
session的作用域比request的强!
request对象和session对象session的生命周期长

requests和session的区别

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

-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中





以上是关于java中session和request的区别的主要内容,如果未能解决你的问题,请参考以下文章

requests和session的区别

request与session的区别

Laravel 的 session() 和 request()->session() 的真正区别是啥?

目的:熟悉session的两个函数,区别request和session的使用范围

page,request,session和application有啥区别

session::flash 和 request->session->flash 的 laravel 区别