在Struts2 Action中快速简便的访问Request、Session等变量

前言——正常情况下如何在Action中获取到这些变量

全部方法(共四种)可以参考:http://blog.csdn.net/itmyhome1990/article/details/7019476

这里采用其中一种作为示例,即利用ServletActionContext上下文来完成:

 1     public class LoginAction {
 2         private HttpServletRequest request;
 3         private HttpSession session;
 4         private ServletContext application;
 5         public String execute() {
 6
 7             request = ServletActionContext.getRequest();
 8             session = request.getSession();
 9             application = session.getServletContext();
10
11             //application = ServletActionContext.getRequest().getSession().getServletContext();
12
13             request.setAttribute("aaa", "aaa");
14             session.setAttribute("bbb", "bbb");
15             application.setAttribute("ccc", "ccc");
16
17             return "success";
18         }
19     }  



但是呢,在我之前的学习过程中,在每个Action中都要重复这三部,显得过于繁琐。

在这样的情况下,我们可以通过继承一个BaseAction来解决这些问题。

 1 public class BaseAction extends ActionSupport{
 2
 3     protected HttpServletRequest getRequest(){
 4         return ServletActionContext.getRequest();
 5     }
 6
 7     protected HttpServletResponse getResponse(){
 8         return ServletActionContext.getResponse();
 9     }
10     protected HttpSession getSession(){
11         return getRequest().getSession();
12     }
13
14         //快速执行标签
15     public void addActionErrorsFromResult(ExecuteResult<?> result) {
16         for (String error : result.getErrorMessages()) {
17             this.addActionError(error);
18         }
19     }
20     public void addFieldErrorsFromResult(ExecuteResult<?> result) {
21         for (String field : result.getFieldErrors().keySet()) {
22             this.addFieldError(field, result.getFieldErrors().get(field));
23         }
24     }
25 }    


这样,我们在写新的Action的时候,就只用extends BaseAction。

即可实现在Action中像在Servlet中一样直接获取Session、Request、Respose了,当然Application也可以实现,这里就不一一呈现了。

时间: 2024-10-13 02:13:25

在Struts2 Action中快速简便的访问Request、Session等变量的相关文章

关于Struts2 Action中get和set惹得祸。

代码: 1 public class RandomAction extends PageAction { 2 3 /**随机抽取**/ 4 private IRandomService randomService; 5 6 /**责任民警**/ 7 private IScZrmjService scZrmjService; 8 9 /**企业基本信息**/ 10 private IQyjbxxService qyjbxxService; 11 12 private User user; 13 1

第三章Struts2 Action中动态方法调用、通配符的使用

01.Struts 2基本结构 使用Struts2框架实现用登录的功能,使用struts2标签和ognl表达式简化了试图的开发,并且利用struts2提供的特性对输入的数据进行验证,以及访问ServletAPI时实现用户会话跟踪,其简单的程序运行流程图如下 Struts2框架是基于MVC模式.基于MVC模式框架的核心就是控制器对所有请求进行统一处理.Struts2的控制器StrutsPrepareAndExecuteFilter由ServletAPI中的Filter充当,当web容器的接收到登录

struts2 action中的私有变量

struts2 框架中action 中都有一些私有变量来接收ajax传过来的值,比如:有个page(private String page;)接收传过来的页数,当ajax访问这个action 而没有传过来page参数时,page = null ,而不是""

Struts2 Action中动态方法调用、通配符的使用

一.Struts2执行过程图: 二.struts2配置文件的加载顺序 struts-default.xml---struts-plugin.xml---struts.xml 具体步骤: 三.Action中动态方法调用<Dynamic Method Invocation> DMI 第一种方式: 自定义DMIAction类,使它继承ActionSupport类,该类无需手动重写execute(),底层有默认实现.因此我们也可以自定义方法list. struts.xml中的action元素植入met

struts2 中属性驱动(其实就是struts2 action 中处理 request 的参数【old 方式servlet api 封装数据到javabean中(or beanutils)】),这里属性驱动是新方式

1.属性驱动 a\  一般的set 1 public class UserAction extends ActionSupport { 2 3 private String username; 4 private String password; 5 6 public void setUsername(String username) { 7 this.username = username; 8 } 9 10 public void setPassword(String password) {

struts2 action中获取request session application的方法

共四种方式: 其中前两种得到的是Map<String,Object>  后两种得到的才是真正的request对象 而Map就是把request对象中的属性取出做成了键值对而已. [方法一] public class LoginAction { private Map request; private Map session; private Map application; public String execute() { request = (Map)ActionContext.getCo

[Struts2]访问request,session和application对象(转)

与Servlet API解耦的访问方式 Structs2对HttpServletRequest,HttpSession,和ServletContext进行了封装,构造了三个Map对象来替代这三种对象,在Action中,直接使用HttpServletRequest,Httpsession,ServletContext对应的Map对象来保存和读取数据. 要获取这三个Map对象,可以使用com.opensymphony.xwork2.ActionContext类. ActionContext是acti

struts2 action 中autowired 不能注入

一.pom.xml <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.3.15.3</version> </dependency> 二.struts.xml <!-- struts.xml 使用spring工厂 --> <cons

Cookie中的三个容器request,session,application的设置和获取

public class SaveServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletR