转自: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等的几种方式相关推荐

  1. Action 中获取表单数据的三种方式

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53138905  冷血之心的博客) Action 中获取表单提交数据 ...

  2. 普通类创建获取session 方式_Springboot系列之RestApi中获取枚举类属性的几种方式...

    前言 我们在日常开发中经常会遇到,实体类中的枚举属性,在通过@ResponseBody注解返回到前端后,默认被解析成了枚举对象的name值,当我们需要获取枚举类的详细属性时就会变得非常麻烦,今天给大家 ...

  3. 微信中获取微信用户信息的2种方式

    微信中获取微信用户信息的2中方式 1, 在公众号底部菜单栏地址配置h5地址,如 http://test.dingdong.com/page1 然后前端在所有页面前拦截如login页面,查看是否有tok ...

  4. html获取此次点击的id,github项目解析(八)--Activity启动过程中获取组件宽高的三种方式...

    转载请标明出处:1片枫叶的专栏 上1个github小项目中我们介绍了避免按钮重复点击的小框架,其实现的核心逻辑是重写OnClickListener的onClick方法,添加避免重复点击的逻辑,即为第2 ...

  5. vue 函数 路由跳转_vue中通过路由跳转的三种方式

    router-view 实现路由内容的地方,引入组件时写到需要引入的地方 需要注意的是,使用vue-router控制路由则必须router-view作为容器. 通过路由跳转的三种方式 1.router ...

  6. Struts2.x中获取request,response,session的方式

    Struts2.x中获取request,response,session的方式有两种:非IOC方式和IOC方式: 一:非IOC方式: 要获得request,response,session 这些对象, ...

  7. GridView控件RowDataBound事件中获取列字段值的几种途径

    前台: <asp:TemplateField HeaderText="充值总额|账号余额"><ItemTemplate><asp:Label ID=& ...

  8. php页面文件后缀名,PHP中获取文件扩展名的N种方法

    PHP中获取文件扩展名的N种方法 从网上收罗的,基本上就以下这几种方式: 第1种方法: function get_extension($file) { substr(strrchr($file, '. ...

  9. PHP中获取文件扩展名的N种方法

    PHP中获取文件扩展名的N种方法   从网上收罗的,基本上就以下这几种方式:      第1种方法:  function get_extension($file)  {  substr(strrchr ...

最新文章

  1. nodejs ld linux.so,请教大神,如何在独立虚拟主机上配置node.js开发环境?
  2. SQL基础--完整性约束
  3. 学习Vue的一些看法
  4. Android 热修复 HotFix 混淆apk生成patch包方案
  5. 清除WINDOW远程登录服务器的信息
  6. vue 在已有的购买列表中(数据库返回的数据)修改商品数量
  7. (14)Vivado开发流程(FPGA不积跬步101)
  8. 利用DB Link搞定Oracle两个数据库间的表同步
  9. 新硬盘挂载-fdisk+mount案例实操
  10. SQL Server查询优化
  11. ArcGIS操作小技巧(三)之License service不能启动的解决方法
  12. 菜鸟python实例_菜鸟学Python,双手奉上老司机给上路新手总结的Python实战问题…...
  13. 【青梅快讯】快速迭代,最新版本Greenplum 6.10已发布
  14. VBA常用实例 | OUTLOOK批量下载选中邮件中的附件
  15. chaosblade混沌测试
  16. Seata Failed to get available servers: endpoint format should like ip:port 报错原因/解决方案汇总版(看完本文必解决问题)
  17. 扫码签到突破100000用户
  18. 腾讯抖音搬运视频如何消重
  19. 关于python的文献综述_关于毕业论文文献综述,史上最全总结.doc
  20. 开水果店前期投入,水果店会有哪些费用

热门文章

  1. 使用Python内置浏览器缓存cookies并做更新
  2. Java程序员已经饱和了,还有必要培训Java编程嘛
  3. 未来已来?揭开量子计算机的神秘面纱
  4. 你会想待下去吗?世界上25个最惊险的屋顶
  5. 阿里云轻量应用服务器解读,为中小企业提供数字化的解决之道
  6. 从ip_queue到nfnetlink_queue(上)
  7. 使用Apache Ignite构建C++版本的分布式应用
  8. js判断手指的上滑,下滑,左滑,右滑,事件监听
  9. 给Eclipse在线安装WTP
  10. linux 系统权限相关知识