在Struts2 Action中快速简便的访问RequestSession等变量

Posted Vol.Richard

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Struts2 Action中快速简便的访问RequestSession等变量相关的知识,希望对你有一定的参考价值。

前言——正常情况下如何在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也可以实现,这里就不一一呈现了。

 

以上是关于在Struts2 Action中快速简便的访问RequestSession等变量的主要内容,如果未能解决你的问题,请参考以下文章

struts2中如何根据请求路径定位到详细的访问action

Struts2:在 Action 中访问 WEB 资源

Struts2的Action中访问servletAPI方式

Struts2:在Action中如何访问Web资源

Struts2-- 如何在 Action 中访问 WEB 资源:

4.Struts2中Action的三种访问方式