Struts2 Action中获取request对象的方法

Struts2获取request的四种方式 struts2获取request的四种不同的方式 立即下载
在struts1.x Action类的execute方法中,有四个参数,其中两个就是response和request。而在Struts2中,并没有任何参数,因此,就不能简单地从execute方法获得HttpServletResponse或HttpServletRequest对象了。
  但在Struts2 Action类中仍然有很多方法可以获得这些对象。下面就列出四种获得这些对象的方法。

使用Struts2 Aware拦截器

这种方法需要Action类实现相应的拦截器接口。如我们要获得HttpServletResponse对象,需要实现org.apache.struts2.interceptor.ServletResponseAware接口,代码如下:
01 importcom.opensymphony.xwork2.ActionSupport;
02 importjavax.servlet.http.*;
03 importorg.apache.struts2.interceptor.*;
04  
05 publicclass MyAction extendsActionSupport implementsServletResponseAware
06 {
07    privatejavax.servlet.http.HttpServletResponse response;
08    // 获得HttpServletResponse对象
09    publicvoid setServletResponse(HttpServletResponse response)
10    {
11         this.response = response;
12    }   
13    publicString execute() throwsException
14    {   
15         response.getWriter().write("实现ServletResponseAware接口");
16    }
17 }
使用RequestAware拦截器
这种方法和第1种方法类似。动作类需要实现一个org.apache.struts2.interceptor.RequestAware接口。所不同的是RequestAware将获得一个com.opensymphony.xwork2.util.OgnlValueStack对象,这个对象可以获得response、request及其他的一些信息。代码如下所示:
01 importjava.util.Map;
02 importorg.apache.struts2.*;
03 importcom.opensymphony.xwork2.ActionSupport;
04 importjavax.servlet.http.*;
05 importcom.opensymphony.xwork2.util.*;
06 importorg.apache.struts2.interceptor.*;
07  
08 publicclass FirstAction extendsActionSupport implementsRequestAware
09 {
10    privateMap request;
11    privateHttpServletResponse response;
12     
13    publicvoid setRequest(Map request)
14    {
15         this.request = request;        
16    }   
17    publicString execute() throwsException
18    {   
19         java.util.Set<String> keys = request.keySet();
20         // 枚举所有的key值。实际上只有一个key:struts.valueStack
21         for(String key: keys)
22             System.out.println(key);
23         // 获得OgnlValueStack 对象
24         OgnlValueStack stack = (OgnlValueStack)request.get("struts.valueStack");
25         // 获得HttpServletResponse对象
26         response = (HttpServletResponse)stack.getContext().get(StrutsStatics.HTTP_RESPONSE);
27         response.getWriter().write("实现RequestAware 接口");
28    }
29 }



使用ActionContext类
这种方法比较简单,我们可以通过org.apache.struts2.ActionContext类的get方法获得相应的对象。代码如下:
1 HttpServletResponse response = (HttpServletResponse)ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_RESPONSE);
2 HttpServletRequest request = (HttpServletRequest)ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);
使用ServletActionContext类
Struts2为我们提供了一种最简单的方法获得HttpServletResponse及其他对象。这就是org.apache.struts2.ServletActionContext类。我们可以直接使用ServletActionContext类的getRequest、getResponse方法来获得HttpServletRequest、HttpServletResponse对象。代码如下:
1 HttpServletResponse response = ServletActionContext.getResponse();
2   response.getWriter().write("hello world");
总结:从这四种方法来看,最后一种是最简单的,读者可以根据自己的需要和要求来选择使用哪一种方法来获得这些对象。
struts2中获得request对象 struts2中获得request对象的几种方法 立即下载

相关推荐

struts2 获取request

struts2 获取request session对象

Struts2之实现对action请求对象的拦截操作

建立一个拦截器对象,当有客户端的请求要访问action对象的时候将会触发当前的拦截器对象,来对当前的请求数据进行过滤操作。 建立一个登录界面用于进行用户名和密码的输入操作,当登录界面当中的表单对象当中的数据提交到action类对象之前,会被拦截器对象进行拦截操作,拦截器对象会从session对象当中进行注册信息的获取操作,通过注册信息registerMessage是否为空来判断当前用户是否有权限

青之羽 961

Nsight Compute内存图表实战:如何快速定位CUDA内核的内存瓶颈(附配置截图)

本文详细介绍了如何使用Nsight Compute的Memory Chart功能快速定位和诊断CUDA内核中的内存性能瓶颈。通过解析内存图表中的逻辑与物理单元节点、连线颜色含义,并结合实战案例(如低L1缓存命中率、共享内存Bank冲突、全局内存访问未合并),指导开发者从可视化数据回溯至源代码,进行精准有效的内存访问优化,从而提升GPU程序性能。

zeta9的博客 479

Struts2获取request的几种方式汇总(list对象获取)

Struts2获取request三种方法   struts2里面有三种方法可以获取request,最好使用ServletRequestAware接口通过IOC机制注入Request对象。 在Action中获取request方法一:   在Action中的代码: Map request = (Map)ActionContext.getContext().get("

java、c++、机器学习方向King 3636

3D高斯泼溅实战:如何用自采数据集训练出高质量3D模型(附COLMAP避坑指南)

本文详细介绍了使用自采数据集训练高质量3D高斯泼溅模型的完整实战流程。从数据采集规范、COLMAP稀疏重建的深度配置与避坑指南,到数据格式转换及3DGS训练调优策略,提供了针对自采数据的关键参数调整与问题排查方案,帮助读者高效构建专属3D场景。

g9h0i1的博客 977

京瓷扫描驱动安装_京瓷喷头拆解和供墨原理剖析

在工业喷头打印领域,京瓷喷头作为主流喷头广泛应用于喷墨行业,目前京瓷喷头市面上销售主要有两个系列:KJ4A和KJ4B。其中KJ4A系列设计是用于油性墨水,例如UV墨水,主要用在广告领域;而KJ4B设计用于水性墨水,例如活性、分散墨水等,主要用在数码印花领域。最近我们团队对京瓷喷头进行了拆解分析,本期和大家分享一下我们对京瓷喷头拆解和喷头供墨原理的研究。京瓷喷头介绍1. KJ4A系列(油性)如下图所...

weixin_39883906的博客 1673

struts2获取request对象的四种方式

struts2中,有四种方式获取request对象的方式,实现时有解耦和耦合之分 解耦:使得我们使用struts2测试时不需要启动服务器,在一定的程度上,能提高我们的开发效率.具体实现思路,通过ActionContext对象获取,代码如下: //第一种获取requet对象方法---HttpServletRequest对象的attributes(解耦) Map&lt;String,...

qq_36306640的博客 2666

在pycharm2021.2中学习opencv图像处理,基于python3.9.7、pycharm完成配置

在pycharm中学习opencv图像处理安装python下载python安装包开始安装安装pycharm社区版下载pycharm开始安装如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 安装python 使用pycharm学习opencv应该是最简单的了,对新手比较友好,

steveqobs 7708

struts之Action中获取request、response对象的方法

1、访问或添加request/session/application属性 public String scope() throws Exception{     ActionContext ctx = ActionContext.getContext();     ctx.getApplication().put("app", "应用范围");//往ServletContext里放入app ...

weixin_34043301的博客 332

Procedural modeling

What is procedural modeling? One content generation option is modeling buildings, plants, clouds, cities, and worlds using an underlying system of rules. 1 Procedural Modeling: Grammars A rule-based generative system loosely organized as: ...

qq_24505417的博客 711

手把手教你用GEM-2多频电磁仪找地下管道(附真实数据图)

本文详细解析了使用GEM-2多频电磁仪精准定位地下管线的全流程,包括设备调试、频率选择、现场扫描技巧及数据解读。通过真实案例展示了如何应对复杂干扰环境,提升管线检测效率与准确性,特别适合市政工程和地下管线普查。

weixin_42565652的博客 398

Struts2获取request三种方法

复习啊..      struts2里面有三种方法可以获取request,最好使用ServletRequestAware接口通过IOC机制注入Request对象。 在Action中获取request方法一:   在Action中的代码: ? 1 2 3 Map request = (M

CBlUE2014 748

用74LS190和555定时器复刻经典交通灯:一个电子工程新手的实战避坑记录

本文记录了使用74LS190和555定时器复刻经典交通灯的实战过程,详细介绍了元件选型、电路搭建与调试的关键步骤。特别分享了555定时器参数设置、74LS190级联技巧以及状态机设计的避坑经验,为电子工程新手提供实用参考。

weixin_42629671的博客 306

struts2 Action中获取request, response对象的方法

struts2 Action中获取request, response对象的方法  ActionContext ctx = ActionContext.getContext(); HttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_R...

wjboy49的专栏 184

操作系统 | 知识梳理 | 复习(上)

操作系统复习

知识库搭建ing 3476

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

struts2 Action中获取request, response,Session对象的方法

非IoC方式   要获得上述对象,关键Struts 2.0中com.opensymphony.xwork2.ActionContext类。我们可以通过它的静态方法getContext()获取当前 Action的上下文对象。 另外,org.apache.struts2.ServletActionContext作为辅助类(Helper Class),可以帮助您快捷地获得这几个对象。 ///我们平时

3902

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SSH框架_struts2的Action中获取request、response对象的方法

 1、访问或添加request/session/application属性 public String scope() throws Exception{     ActionContext ctx = ActionContext.getContext();    ctx.getApplication().put("app", "应用范围");//往ServletCont

丑小子 1625

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SSH框架--struts2的Action中获取request、response对象的方法

SSH框架--struts2的Action中获取request、response对象的方法 1、访问或添加request/session/application属性 public String scope() throws Exception{     ActionContext ctx =ActionContext.getContext();    ctx.getApplica

takeCareOfYou的博客 1092

Struts2 action中获取session,request对象的方法

Struts2 是通过ActionContext类来对request,session,application对象进行操作。

whx_0408的专栏 1277

struts2 Action中获取request, response对象的 几种 方法

 struts2 Action中获取request, response对象的方法  第一种方法:   ActionContext ctx = ActionContext.getContext();              HttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContex

caizhongda的专栏 981
上一篇: java.lang.NoClassDefFoundError: ActionSupport异常和Action class not found异常
下一篇: s:iterator遍历对象集合
javaPie
博客等级 码龄16年 1171粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值