session和request和application有什么区别?
ActionContextcontext=ActionContext.getContext();Maprequest=(Map)context.get("request"...
ActionContext context = ActionContext.getContext();
Map request = (Map)context.get("request");
Map session = context.getSession();
Map application = context.getApplication(); 展开
Map request = (Map)context.get("request");
Map session = context.getSession();
Map application = context.getApplication(); 展开
3个回答
展开全部
(1)类型不同
Page是Object类型
request是HttpservletRequest类型
session是HttpSession类型
application是ServletContext类型
(2)作用范围不同
上述4个对象都可以存储信息,存储变量,但是它们的作用范围不同,具体如下:
application:
全局作用范围,整个应用程序共享,生命周期为从应用程序启动到停止,在这个过程中application里的变量一直在累加,除非你重启tomcat或是人工删除,否则它会一直变大。
session:
会话作用域,当用户首次访问时,产生一个新的会话,以后服务器就可以记住这个会话状态。生命周期为会话 超时或者服务器端强制使会话失效。简单的说就是从浏览器打开到浏览器关闭这个过程中有效。在此过程中session里的变 量一直在累加,开始还看不出区别,只要关闭浏览器,再次重启浏览器访问这页,session里的变量就重新计算了。
request:
请求作用域,客户端的一次请求。生命周期为一次请求或使用forward方式执行请求转发,也就是使用forward方式跳转多个jsp,在这些页面里你都可以使用这个变量。但是只要刷新页面,这个变量就失效了。
page:
指当前页面。在一个jsp页面里有效 。page里的变量没法从index.jsp传递到test.jsp。只要页面跳转了,它们就不见了。
Page、request session和application对象作用范围是越来越大,request和Page的生命周期都是短暂的,它们之间的区别就是:一个request可以包含多个page页(include 、forward以及filter)。
Page是Object类型
request是HttpservletRequest类型
session是HttpSession类型
application是ServletContext类型
(2)作用范围不同
上述4个对象都可以存储信息,存储变量,但是它们的作用范围不同,具体如下:
application:
全局作用范围,整个应用程序共享,生命周期为从应用程序启动到停止,在这个过程中application里的变量一直在累加,除非你重启tomcat或是人工删除,否则它会一直变大。
session:
会话作用域,当用户首次访问时,产生一个新的会话,以后服务器就可以记住这个会话状态。生命周期为会话 超时或者服务器端强制使会话失效。简单的说就是从浏览器打开到浏览器关闭这个过程中有效。在此过程中session里的变 量一直在累加,开始还看不出区别,只要关闭浏览器,再次重启浏览器访问这页,session里的变量就重新计算了。
request:
请求作用域,客户端的一次请求。生命周期为一次请求或使用forward方式执行请求转发,也就是使用forward方式跳转多个jsp,在这些页面里你都可以使用这个变量。但是只要刷新页面,这个变量就失效了。
page:
指当前页面。在一个jsp页面里有效 。page里的变量没法从index.jsp传递到test.jsp。只要页面跳转了,它们就不见了。
Page、request session和application对象作用范围是越来越大,request和Page的生命周期都是短暂的,它们之间的区别就是:一个request可以包含多个page页(include 、forward以及filter)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于2018-03-23 · 知道合伙人软件行家
关注
展开全部
2.request 指在一次请求的全过程中有效,即从http请求到服务器处理结束,返回响应的整个过程,存放在HttpServletRequest对象中。在这个过程中可以使用forward方式跳转多个jsp。在这些页面里你都可以使用这个变量。
3.Session是用户全局变量,在整个会话期间都有效。只要页面不关闭就一直有效(或者直到用户一直未活动导致会话过期,默认session过期时间为30分钟,或调用HttpSession的invalidate()方法)。存放在HttpSession对象中
4.application是程序全局变量,对每个用户每个页面都有效。存放在ServletContext对象中。它的存活时间是最长的,如果不进行手工删除,它们就一直可以使用
总结:当数据只需要在下一个forward有用时,用request就够了;
若数据不只是在下一个forward有用时,就用session。
上下文,环境信息之类的,用application。
3.Session是用户全局变量,在整个会话期间都有效。只要页面不关闭就一直有效(或者直到用户一直未活动导致会话过期,默认session过期时间为30分钟,或调用HttpSession的invalidate()方法)。存放在HttpSession对象中
4.application是程序全局变量,对每个用户每个页面都有效。存放在ServletContext对象中。它的存活时间是最长的,如果不进行手工删除,它们就一直可以使用
总结:当数据只需要在下一个forward有用时,用request就够了;
若数据不只是在下一个forward有用时,就用session。
上下文,环境信息之类的,用application。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询