struts2获取request,session,application作用域的几种方式
来源:互联网 发布:农村淘宝怎么查看佣金 编辑:程序博客网 时间:2024/05/30 05:42
先来总结一下 jsp 4大作用域的生命周期吧(scope)(PS:如有总结不到位或有误的地方还请指点)
page:页面作用域,仅限当前页面,页面跳转或者页面关闭后都失效。
request:请求作用域,从http请求到相应的整个过程,也可以是跨越forward前后的两个页面。
session:会话作用域,用户首次访问浏览器会产生一个会话,这个会话直到浏览器关闭或者会话超时才会失效,也就是说从用户打开浏览器开始,到用户关闭浏览器这中间的过程。这个过程可能包含多个请求响应。只要用户不关浏览器,服务器就有办法知道这些请求是一个人发起的,整个过程被称为一个会话(session),而放到会话中的变量,就可以在当前会话的所有请求里使用。
application:应用作用域,从应用启动到应用关闭,生命周期最长,如果不进行收到删除会一直存在。
总结:application里的变量可以被所有用户共用。如果用户甲的操作修改了application中的变量,用户乙访问时得到的是修改后的值。这在其他scope中都是不会发生的,page, request, session都是完全隔离的,无论如何修改都不会影响其他人的数据。按照生命周期时间长短排序:page<request<session<application
下面就来总结一下action获取4大作用域的4种方法
1.实现ServletRequestAware接口通过IOC机制注入request,IoC方式(即使用ServletRequestAware拦截器)(此方法最麻烦,不推荐使用)
public class TestAction extends ActionSupport implements ServletRequestAware {private static final long serialVersionUID = 1L;private HttpServletRequest request;private HttpSession session;private ServletContext application;public String execute() {request.setAttribute("r1", "r1");session.setAttribute("s1", "s1");application.setAttribute("a1", "a1");return SUCCESS;}@Overridepublic void setServletRequest(HttpServletRequest request) {this.request = request;this.session = request.getSession();this.application = session.getServletContext();}}
2.实现Servlet Aware接口通过IOC机制注入request(此方法与第一种类似)
public class TestAction extends ActionSupport implements RequestAware,SessionAware, ApplicationAware {private static final long serialVersionUID = 1L;private Map<String, Object> request;private Map<String, Object> session;private Map<String, Object> application;public String execute() {request.put("r1", "r1");session.put("s1", "s1");application.put("a1", "a1");return SUCCESS;}@Overridepublic void setRequest(Map<String, Object> request) {this.request = request;}@Overridepublic void setSession(Map<String, Object> session) {this.session = session;}@Overridepublic void setApplication(Map<String, Object> application) {this.application = application;}}
3.使用ActionContext类(此方法与servlet解耦,推荐使用)
@SuppressWarnings({"rawtypes","unchecked" })public class TestAction extends ActionSupport {private static final long serialVersionUID = 1L;private Map request;private Map session;private Map application;public TestAction() {request = (Map) ActionContext.getContext().get("request");session = ActionContext.getContext().getSession();application = ActionContext.getContext().getApplication();}public String execute() {request.put("r1", "r1");session.put("s1", "s1");application.put("a1", "a1");return SUCCESS;}}
4.使用ServletActionContext类(此方法与servle耦合)
public class TestAction extends ActionSupport {private static final long serialVersionUID = 1L;private HttpServletRequest request;private HttpSession session;private ServletContext application;public TestAction() {request = ServletActionContext.getRequest();session = request.getSession();application = session.getServletContext();}public String execute() {request.setAttribute("r1", "r1");session.setAttribute("s1", "s1");application.setAttribute("a1", "a1");return SUCCESS;}}
- struts2获取request,session,application作用域的几种方式
- struts2获取request、session、application的方式
- Struts2 获取WEB对象(作用域,request、application、session) 清除Session的值
- Struts2获取request,session,application几种方法
- Struts2 获取域request session application的四种方法
- struts2获取request,session,application方式
- struts2 获取"作用域"对象:Request Session Application 与 Aware 接口的使用
- Struts2获取Request的常用2种方式,Session和Application类似
- struts2 获取 request session application的方法
- Struts2访问request,session,application的四种方式
- struts2 获得request session application的四种方式
- Struts2获取request、session、application的三种方法
- struts2获取request,session,application
- struts2 获取request,session,application
- struts2获取request,session,application
- struts2 获取request session application
- 获取struts2中的对象 方式request、session、application、 resp
- struts2中获取request、session、response、application方式
- 支持向量机 SVM 讲义(四)
- Eclipse安装SVN
- JNI官方规范中文版——如何在JNI中抛出Java异常
- 为什么要设置栈区和堆区
- C++中的数学函数汇总
- struts2获取request,session,application作用域的几种方式
- [iOS 自动打包上传并自动上传蒲公英]
- linux sys目录介绍
- Http总结
- select2 默认选中
- L3-003. 社交集群
- JNI官方规范中文版——如何把一个JVM嵌入到本地程序中
- sr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/crt1.o: In function `_start'问题解决
- SQLite基础