专栏首页日常分享在Struts2 Action中快速简便的访问Request、Session等变量

在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 条评论
登录 后参与评论

相关文章

  • Java 访问权限控制 小结

    总所周知,Java提供了访问权限修饰词,以供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的。

    Rekent
  • MyBatis 基本构成与框架搭建

            根据配置信息(eg:mybatis-config.xml)或者代码来生成SqlSessionFactory。

    Rekent
  • SpringMVC<一> 基本结构与配置

    刚刚踏入SpringMVC的学习,有一定Strust2的使用经验,边看书看博客,边总结,如有不对的地方还希望各位大佬多多指正。

    Rekent
  • 10.侧拉删除

    六月的雨
  • RediSQL 0.8.0 发布 将查询结果写入流中

    RediSQL 0.8.0 发布了,RediSQL 是一个 Redis 模块,为 Redis 提供完整的 SQL 功能。RediSQL 支持所有 Redis 数...

    Zip
  • 小程序运营的3大场景和5大推广模式,速来Get!

    2017年小程序上线,关注小程序的朋友肯定都还记得上线最开始的那段时间,小程序频繁的在深夜更新,每次更新都会引发第二天的“刷屏”。截止到目前,已上线的小程序超过...

    场景录小程序
  • JCTools简介

    JCTools是一款对jdk并发数据结构进行增强的并发工具,主要提供了map以及queue的增强数据结构。原来netty还是自己写的MpscLinkedQueu...

    codecraft
  • Android 基础[Layout & View]

    推一篇Android基础文章,关于Layout,View的一些小细节。目前已经把MediaCodec系列的第四篇拆分成两部分,会尽快编写完推给大家,大家先看点这...

    小海编码日记
  • Spring详解(六)------AspectJ 实现AOP

      上一篇博客我们引出了 AOP 的概念,以及 AOP 的具体实现方式。但是为什么要这样实现?以及提出的切入点表达式到底该怎么理解?   这篇博客我们通过对 A...

    IT可乐
  • 由sqlplus中的一个小细节所做的折腾(r5笔记第11天)

    sqlplus是Oracle DBA每天都要用到烂的工具了。如果没有sqlplus还真不知道怎么和oracle对话了。转念一想,自己已经很久没使用过toad了。...

    jeanron100

扫码关注云+社区

领取腾讯云代金券