在Struts2 Action中快速简便的访问Request、Session等变量
前言——正常情况下如何在Action中获取到这些变量
全部方法(共四种)可以参考:http://blog.csdn.net/itmyhome1990/article/details/7019476
这里采用其中一种作为示例,即利用ServletActionContext上下文来完成:
     public class LoginAction {
         private HttpServletRequest request;
         private HttpSession session;
         private ServletContext application;
         public String execute() {  
             request = ServletActionContext.getRequest();
             session = request.getSession();
             application = session.getServletContext();  
             //application = ServletActionContext.getRequest().getSession().getServletContext();  
             request.setAttribute("aaa", "aaa");
             session.setAttribute("bbb", "bbb");
             application.setAttribute("ccc", "ccc");  
             return "success";
         }
     }  
但是呢,在我之前的学习过程中,在每个Action中都要重复这三部,显得过于繁琐。
在这样的情况下,我们可以通过继承一个BaseAction来解决这些问题。
 public class BaseAction extends ActionSupport{
     protected HttpServletRequest getRequest(){
         return ServletActionContext.getRequest();
     }
     protected HttpServletResponse getResponse(){
         return ServletActionContext.getResponse();
     }
     protected HttpSession getSession(){
         return getRequest().getSession();
     }
         //快速执行标签
     public void addActionErrorsFromResult(ExecuteResult<?> result) {
         for (String error : result.getErrorMessages()) {
             this.addActionError(error);
         }
     }
     public void addFieldErrorsFromResult(ExecuteResult<?> result) {
         for (String field : result.getFieldErrors().keySet()) {
             this.addFieldError(field, result.getFieldErrors().get(field));
         }
     }
 }    
这样,我们在写新的Action的时候,就只用extends BaseAction。
即可实现在Action中像在Servlet中一样直接获取Session、Request、Respose了,当然Application也可以实现,这里就不一一呈现了。
在Struts2 Action中快速简便的访问Request、Session等变量的更多相关文章
- struts2下velocity做视图如何访问request,session等内置对象,如:原来webwork的$req
		
struts2下velocity做视图如何访问request,session等内置对象(转) velocity 内置对象 struts2 requestStruts2环境下用velocity做视图时访 ...
 - 第三章Struts2 Action中动态方法调用、通配符的使用
		
01.Struts 2基本结构 使用Struts2框架实现用登录的功能,使用struts2标签和ognl表达式简化了试图的开发,并且利用struts2提供的特性对输入的数据进行验证,以及访问Servl ...
 - struts2.Action中的method属性配置
		
.Action中的method属性 在struts1.x中我们知道通过继承DispatchAction可以实现把多个Action进行统一操作,在struts2中实现action的统一操作也很简单.我们 ...
 - Struts2 Action中动态方法调用、通配符的使用
		
一.Struts2执行过程图: 二.struts2配置文件的加载顺序 struts-default.xml---struts-plugin.xml---struts.xml 具体步骤: 三.Actio ...
 - struts2 中属性驱动(其实就是struts2 action 中处理 request  的参数【old 方式servlet api 封装数据到javabean中(or beanutils)】),这里属性驱动是新方式
		
1.属性驱动 a\ 一般的set public class UserAction extends ActionSupport { private String username; private S ...
 - Struts2 Action中的方法命名不要以get开头
		
偶然发现,在调用一个action中的某个方法时,会自动调用另一个无关的方法,找了好久,最后发现是方法命名的问题,方法命名以get开头,action会自动调用!所以,以后再写action中的方法时尽量不 ...
 - 将 jsp 页面的值 传到struts2 action中(不是表单中的值)
		
JSP: 页面: <%@ page language="java" pageEncoding="GBK"%> <%@taglib prefi ...
 - struts2 action中获取request session application的方法
		
共四种方式: 其中前两种得到的是Map<String,Object> 后两种得到的才是真正的request对象 而Map就是把request对象中的属性取出做成了键值对而已. [方法一] ...
 - 在IE浏览器中iframe跨域访问cookie/session丢失的解决办法
		
单点登录需要在需要进入的子系统B中添加一个类,用于接收A系统传过来的参数: @Action(value = "outerLogin", results = { @Result(na ...
 
随机推荐
- 中小学信息学奥林匹克竞赛-理论知识考点--ASCII
			
ASCII表说白了就是一张表. 表中记录着:字符 和 数字 的对应关系.比如:字符0对应的ASCII码是48,A对应的是65,a对应的是97. 只要记住这三个,其它的数字,大写,小写字母的ASCII码 ...
 - Juery返回Json数据格式,webForm中使用
			
此篇的详细篇 //webForm中使用异步就会用到一般处理程序,前台调用一般处理程序这个页面去执行里面的方法 using System.Web.Script.Serialization; Newton ...
 - Visual Studio Code快捷键_Linux
			
Keyboard shortcuts for Linux Basic editing Ctrl + X Cut line(empty selection) Ctrk + C Copy line(e ...
 - 12.1.0.2自适应特性导致SQL性能下降
			
背景介绍 在升级到12.1.0.2.0数据库版本后,在使用12c中引入的自适应特性默认配置的情况下,可能引起SQL性能的下降. 问题现象升级到12.1.0.2.0后,SQL语句性能可能出现下降. 影响 ...
 - CI的子目录控制器问题
			
不管是根目录还是子目录里面的文件名必须是首字母大写,否则会报404
 - Python学习之购物车
			
实现功能: 程序启动,提示用户输入用户名和密码,程序读取余额文件last_salary.txt内容(文件不存在则自动创建),若文件内容为空则提示“首次登录,请输入工资”: 用户可以输入商品编号进行购买 ...
 - Thinkphp 取消Url默认模块的现实
			
例子http://www.tp.com/home/index/index 想要现实的效果是:http://www.tp.com/index/index 1是通过配置路由来达到目的 2通过配置首页的入口 ...
 - JAVA / MySql 编程—— 第四章 高级查询(二)
			
1. EXISTS和NOT EXISTS子查询:EXISTS关键字用来检测数数据库对象是否存在. ★EXISTS和NOT EXISTS的结果只取决于是否 ...
 - JAVA / MySql 编程——第二章 初始MySQL
			
1. MySQL: ● MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL最流行的关系型数据库管理系统, ...
 - 守护进程,进程安全,IPC进程间通讯,生产者消费者模型
			
1.守护进程(了解)2.进程安全(*****) 互斥锁 抢票案例3.IPC进程间通讯 manager queue(*****)4.生产者消费者模型 守护进程 指的也是一个进程,可以守护着另一个进程 一 ...