在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也可以实现,这里就不一一呈现了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏进击的程序猿

doctrine缘来 之 造轮子

本系列是读php data persistence with doctrine2 orm的笔记,本文是第一篇:自己造轮子。

851
来自专栏西安-晁州

ssh登录实现

工程目录 ? 配置文件详解 Spring的applicationContext.xml文件 <span ><?xml version="1.0" encodin...

3090
来自专栏Ryan Miao

Jackson序列化LocalDate与Springboot集成

Java8的date API一经推出便广受好评,今日也准备用一用,然后就用出问题了。基本用法见https://www.cnblogs.com/woshimrf/...

1761
来自专栏GIS讲堂

Arcgis4js实现链家找房的效果

买房的各位亲们不知是否留意过链家的"地图找房",这样的功能对于使用者来说,是非常方便的,大家可通过连接(https://bj.lianjia.com/ditu/...

1232
来自专栏冷冷

Spring Security Oauth2 自定义短信验证码登录

spring security oauth2 登录过程详解 未命名文件.png 定义手机号登录令牌 /** * @author lengleng * @...

7037
来自专栏冷冷

Spring Security Oauth2.0 实现短信验证码登录

spring security oauth2 登录过程详解 ​ ? ​ 定义手机号登录令牌 /** * @author lengleng * @date 2...

1.1K5
来自专栏wannshan(javaer,RPC)

ConcurrentHashMap 锁分段 源码分析

看ConcurrentHashMap下几个属性: /** * The default concurrency level for this table...

4176
来自专栏小尘哥的专栏

【springboot+easypoi】大数据量excel导出

上次写了一行代码解决导出导入,没看的小伙伴建议先看下《一行代码做Excel导入导出》,但是实际业务中遇到一个问题,如果数据里比较大的时候,例如10w+数据一次导...

2213
来自专栏Android 研究

APK安装流程详解14——PMS中的新安装流程上(拷贝)补充

mContext.enforceCallingOrSelfPermission(android.Manifest.permission.INSTALL_PACK...

3711
来自专栏菩提树下的杨过

logback + slf4j + jboss + spring mvc

logback、log4j、log4j2 全是以同一个人为首的团伙搞出来的(日志专业户!),这几个各有所长,log4j性能相对最差,log4j2性能不错,但是目...

2568

扫码关注云+社区

领取腾讯云代金券