Struts2中获取HttpServletRequest,HttpSession等的几种方式
转自:http://www.kaifajie.cn/struts/8944.html
package com.log;import java.io.IOException;
import java.util.Map;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;
import org.apache.struts2.StrutsStatics;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ognl.OgnlValueStack;/*** 1、使用Struts2 Aware拦截器* 需要Action类实现相应的拦截器接口。如我们要获得HttpServletResponse对象,需要实现org.apache.struts2.* interceptor.ServletResponseAware接口MyAction实现了一个ServletResponseAware接口,* 并且实现了setServletResponse方法。如果一个动作类实现了ServletResponseAware接口,* Struts2在调用execute方法之前,就会先调用setServletResponse方法,并将response参数传入这个方法。* 如果想获得HttpServletRequest、HttpSession和Cookie等对象,动作类可以分别实现ServletRequestAware、* SessionAware和CookiesAware等接口。这些接口都在org.apache.struts2.interceptor包中。* 如果要获得请求参数,动作类可以实现org.apache.struts2.interceptor.* ParameterAware接口,但如果只想判断某个参数是否存在,也可以实现com.opensymphony.xwork2.interceptor.* ParameterNameAware接口。这个接口有一个acceptableParameterName方法,当Struts2获得一个请求参数时,* 就会调用一次。读者可以在这个方法中将所有的请求参数记录下来,以便以后使用。这个方法的定义如下: boolean* acceptableParameterName(String parameterName)* * @author Wei* @time 2016年10月5日 下午5:20:15*/
class MyAction extends ActionSupport implements ServletResponseAware {/*** */private static final long serialVersionUID = 1L;private javax.servlet.http.HttpServletResponse response;// 获得HttpServletResponse对象public void setServletResponse(HttpServletResponse response) {this.response = response;}public String execute() throws Exception {response.getWriter().write("实现ServletResponseAware接口");return null;}
}/** 使用RequestAware拦截器* 和第1种方法类似。动作类需要实现一个org.apache.struts2.interceptor.RequestAware接口。* 所不同的是RequestAware将获得一个com.opensymphony.xwork2.util.OgnlValueStack对象,* 这个对象可以获得response、request及其他的一些信息*/
class FirstAction extends ActionSupport implements RequestAware {/*** */private static final long serialVersionUID = 1L;private Map request;private HttpServletResponse response;@Overridepublic void setRequest(Map request) {this.request = request;}public String execute() throws Exception {java.util.Set<String> keys = request.keySet();// 枚举所有的key值。实际上只有一个key:struts.valueStackfor (String key : keys)System.out.println(key);// 获得OgnlValueStack 对象OgnlValueStack stack = (OgnlValueStack) request.get("struts.valueStack");// 获得HttpServletResponse对象response = (HttpServletResponse) stack.getContext().get(StrutsStatics.HTTP_RESPONSE);response.getWriter().write("实现RequestAware 接口");return null;}
}/*** struts2中获取HttpServletrequest,HttpServletresponse,HttpSession的四种方式* * @author Wei* @time 2016年10月5日 下午5:23:02*/
public class LoginAction333 {public static void main(String[] args) throws IOException {}public void method3() {/** 3、使用ActionContext类,这个很方便* 我们可以通过org.apache.struts2.ActionContext类的get方法获得相应的对象。代码如下:*/HttpServletResponse response = (HttpServletResponse) ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_RESPONSE);HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);}public void method4() throws IOException {/** 4、最简单的一种,使用ServletActionContext类* Struts2为我们提供了一种最简单的方法获得HttpServletResponse及其他对象。这就是org.apache.struts2* .ServletActionContext类。我们可以直接使用ServletActionContext类的getRequest、* getResponse方法来获得HttpServletRequest、HttpServletResponse对象。*/HttpServletResponse response = ServletActionContext.getResponse();HttpServletRequest request = ServletActionContext.getRequest();HttpSession session = request.getSession();response.getWriter().write("hello world");}
}
Struts2中获取HttpServletRequest,HttpSession等的几种方式相关推荐
- Action 中获取表单数据的三种方式
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53138905 冷血之心的博客) Action 中获取表单提交数据 ...
- 普通类创建获取session 方式_Springboot系列之RestApi中获取枚举类属性的几种方式...
前言 我们在日常开发中经常会遇到,实体类中的枚举属性,在通过@ResponseBody注解返回到前端后,默认被解析成了枚举对象的name值,当我们需要获取枚举类的详细属性时就会变得非常麻烦,今天给大家 ...
- 微信中获取微信用户信息的2种方式
微信中获取微信用户信息的2中方式 1, 在公众号底部菜单栏地址配置h5地址,如 http://test.dingdong.com/page1 然后前端在所有页面前拦截如login页面,查看是否有tok ...
- html获取此次点击的id,github项目解析(八)--Activity启动过程中获取组件宽高的三种方式...
转载请标明出处:1片枫叶的专栏 上1个github小项目中我们介绍了避免按钮重复点击的小框架,其实现的核心逻辑是重写OnClickListener的onClick方法,添加避免重复点击的逻辑,即为第2 ...
- vue 函数 路由跳转_vue中通过路由跳转的三种方式
router-view 实现路由内容的地方,引入组件时写到需要引入的地方 需要注意的是,使用vue-router控制路由则必须router-view作为容器. 通过路由跳转的三种方式 1.router ...
- Struts2.x中获取request,response,session的方式
Struts2.x中获取request,response,session的方式有两种:非IOC方式和IOC方式: 一:非IOC方式: 要获得request,response,session 这些对象, ...
- GridView控件RowDataBound事件中获取列字段值的几种途径
前台: <asp:TemplateField HeaderText="充值总额|账号余额"><ItemTemplate><asp:Label ID=& ...
- php页面文件后缀名,PHP中获取文件扩展名的N种方法
PHP中获取文件扩展名的N种方法 从网上收罗的,基本上就以下这几种方式: 第1种方法: function get_extension($file) { substr(strrchr($file, '. ...
- PHP中获取文件扩展名的N种方法
PHP中获取文件扩展名的N种方法 从网上收罗的,基本上就以下这几种方式: 第1种方法: function get_extension($file) { substr(strrchr ...
最新文章
- nodejs ld linux.so,请教大神,如何在独立虚拟主机上配置node.js开发环境?
- SQL基础--完整性约束
- 学习Vue的一些看法
- Android 热修复 HotFix 混淆apk生成patch包方案
- 清除WINDOW远程登录服务器的信息
- vue 在已有的购买列表中(数据库返回的数据)修改商品数量
- (14)Vivado开发流程(FPGA不积跬步101)
- 利用DB Link搞定Oracle两个数据库间的表同步
- 新硬盘挂载-fdisk+mount案例实操
- SQL Server查询优化
- ArcGIS操作小技巧(三)之License service不能启动的解决方法
- 菜鸟python实例_菜鸟学Python,双手奉上老司机给上路新手总结的Python实战问题…...
- 【青梅快讯】快速迭代,最新版本Greenplum 6.10已发布
- VBA常用实例 | OUTLOOK批量下载选中邮件中的附件
- chaosblade混沌测试
- Seata Failed to get available servers: endpoint format should like ip:port 报错原因/解决方案汇总版(看完本文必解决问题)
- 扫码签到突破100000用户
- 腾讯抖音搬运视频如何消重
- 关于python的文献综述_关于毕业论文文献综述,史上最全总结.doc
- 开水果店前期投入,水果店会有哪些费用