千家信息网

如何在Action类中获得HttpServletResponse对象

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关如何在Action类中获得HttpServletResponse对象,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在str
千家信息网最后更新 2026年11月03日如何在Action类中获得HttpServletResponse对象

这篇文章将为大家详细讲解有关如何在Action类中获得HttpServletResponse对象,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

在struts1.x Action类的execute方法中,有四个参数,其中两个就是response和request。而在Struts2中,并没有任何参数,因此,就不能简单地从execute方法获得HttpServletResponse或HttpServletRequest对象了。

但在Struts2 Action类中仍然有很多方法可以获得这些对象。下面就列出四种获得这些对象的方法。

【方法1】使用Struts2 Aware拦截器

这种方法需要Action类实现相应的拦截器接口。如我们要获得HttpServletResponse对象,需要实现org.apache.struts2.interceptor.ServletResponseAware接口,代码如下:

package action;   import com.opensymphony.xwork2.ActionSupport;  import javax.servlet.http.*;  import org.apache.struts2.interceptor.*;   public class MyAction extends ActionSupport implements ServletResponseAware  {      private javax.servlet.http.HttpServletResponse response;      // 获得HttpServletResponse对象      public void setServletResponse(HttpServletResponse response)      {          this.response = response;      }          public String execute() throws Exception      {              response.getWriter().write("实现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);

【方法2】使用RequestAware拦截器

这种方法和第1种方法类似。动作类需要实现一个org.apache.struts2.interceptor.RequestAware接口。所不同的是RequestAware将获得一个com.opensymphony.xwork2.util.OgnlValueStack对象,这个对象可以获得response、request及其他的一些信息。代码如下所示:

package action;   import java.util.Map;  import org.apache.struts2.*;  import com.opensymphony.xwork2.ActionSupport;  import javax.servlet.http.*;  import com.opensymphony.xwork2.util.*;  import org.apache.struts2.interceptor.*;   public class FirstAction extends ActionSupport implements RequestAware  {      private Map request;  private HttpServletResponse response;            public void setRequest(Map request)      {          this.request = request;              }          public String execute() throws Exception      {              java.util.Set< String> keys = request.keySet();          // 枚举所有的key值。实际上只有一个key:struts.valueStack          for(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 接口");      }  }

我们也可以使用StrutsStatics.HTTP_REQUEST、StrutsStatics.PAGE_CONTEXT来获得HttpServletRequest和PageContext对象。这种方法有些麻烦,一般很少用,读者可以作为一个参考。

【方法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);

【方法4】使用ServletActionContext类

Struts2为我们提供了一种最简单的方法获得HttpServletResponse及其他对象。这就是org.apache.struts2.ServletActionContext类。我们可以直接使用ServletActionContext类的getRequest、getResponse方法来获得HttpServletRequest、HttpServletResponse对象。代码如下:

HttpServletResponse response = ServletActionContext.getResponse()

response.getWriter().write("hello world");

从这四种方法来看,第一种是最简单的,读者可以根据自己的需要和要求来选择使用哪一种方法来获得这些对象。

关于如何在Action类中获得HttpServletResponse对象就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

方法 对象 接口 参数 代码 动作 动作类 读者 拦截器 内容 及其他 就是 文章 更多 知识 篇文章 参考 不同 不错 两个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网高科技 科技互联网企业 智网互联网科技 远信互联网科技 润盈互联网科技 苏州大垚互联网科技 无锡溥仪互联网科技有限公司 哈尔滨新华互联网科技学院 阿里互联网科技公司 来此购互联网科技有限公司 互联网对科技的发展 崇明区互联网教育科技诚信经营 恒生互联网科技指数跳水 坤平互联网科技 互联网科技大奖都有哪些公司 内蒙古九一互联网科技 工业互联网等科技实现智能化赋能 上海乐五互联网科技有限公司 济南小医互联网科技有限公司招聘 陕西彩京云互联网科技有限公司 科技赋能下的互联网金融 互联网科技的英文 互联网校园科技培训 智腾互联网科技有限公司 青海科技产业互联网发展 互联网金融科技名词解释 为客找房互联网科技公司怎么样 张召忠谈中国互联网科技 北京天晋互联网科技有限公司 安徽九吞吴互联网科技有限公司
0