【方法1】使用Struts2 Aware拦截器
这种方法需要Action类实现相应的拦截器接口。如我们要获得HttpServletResponse对象,需要实现org.apache.struts2.interceptor.ServletResponseAware接口,代码如下:
import javax.servlet.http.HttpServletResponse; import org.apache.struts2.interceptor.ServletResponseAware; import com.opensymphony.xwork2.ActionSupport; public class MyAction extends ActionSupport implements ServletResponseAware{ private HttpServletResponse response; //获得HttpServletResponse对象 public void setServletResponse(HttpServletResponse response) { this.response = response; } @Override public String execute() throws Exception { response.getWriter().write("aaa"); return super.execute(); } }
方法2】使用RequestAware拦截器
这种方法和第1种方法类似。动作类需要实现一个org.apache.struts2.interceptor.RequestAware接口。所不同的 是RequestAware将获得一个com.opensymphony.xwork2.util.OgnlValueStack对象,这个对象可以获得 response、request及其他的一些信息。代码如下所示:
import java.util.Map; import java.util.Set; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.StrutsStatics; import org.apache.struts2.interceptor.RequestAware; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ognl.OgnlValueStack; public class MyAction extends ActionSupport implements RequestAware { private HttpServletResponse response; private Map request; @Override public String execute() throws Exception { 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 接口"); return super.execute(); } public void setRequest(Map<String, Object> request) { this.request = request; } }
【方法3】使用ActionContext类
这种方法比较简单,我们可以通过org.apache.struts2.ActionContext类的get方法获得相应的对象。代码如下:
import javax.servlet.http.HttpServletResponse; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class MyAction extends ActionSupport { private HttpServletResponse response; public MyAction() { response = (HttpServletResponse) ActionContext.getContext().get( "response"); } @Override public String execute() throws Exception { response.getWriter().write("ActionContext"); return super.execute(); } }
【方法4】使用ServletActionContext类
Struts2为我们提供了一种最简单的方法获得HttpServletResponse及其他对象。这就是 org.apache.struts2.ServletActionContext类。我们可以直接使用ServletActionContext类的 getRequest、getResponse方法来获得HttpServletRequest、HttpServletResponse对象。这是最简单的一种方法。代码如 下:
import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class MyAction extends ActionSupport { private HttpServletResponse response; public MyAction() { response = ServletActionContext.getResponse(); } @Override public String execute() throws Exception { response.getWriter().write("ServletActionContext"); return super.execute(); } }
相关推荐
struts2学习教程包括:第一个Struts2程序,处理一个form多个submit,struts.xml常用配置解析,使用validate方法验证数据,使用Validation框架验证数据,在Action类中获得HttpServletResponse对象的四种方法,上传...
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,...
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其...
首先数据表中的Blob字段在Java领域对象中声明为byte[]类型,而非java.sql.Blob类型。 2.数据表Blob字段在Hibernate持久化映射文件中的type为org.springframework.orm.hibernate3.support.BlobByteArrayType,即...
这种编码的具体规则可以在 rfc2231 里查到, 通常使用的表单也是采用这种方式编码的,Servlet 的 API 提供了对这种 编码方式解码的支持,只需要调用 ServletRequest 类中的方法就可以得到 用户表单中的字段和数据。...
1、在backing bean的方法中调用函数1即可。如Abean中download方法调用了该方法,前台可以这样调用: <h:commandButton value="download" action="#{aBean.download}"> 或者 <h:commandLink value="download" ...
即把HTTP request 封装在一个对象中,需要说明的一点就是多个HTTP request可以共用一个FormBean,便于维护和重用。 <br/>ActionBean:RegUserAction <br/> package org.cjea.Struts.example; <br/>...
* 在此方法中处理HTTP请求数据,并作响应 */ public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ...
该指令用于导入FreeMarker模板中的所有变量,并将该变量放置在指定的Map对象中,import指令的语法格式如下: 上面的代码将导入/lib/common.ftl模板文件中的所有变量,将这些变量放置在一个名为com的Map对象中. 创建...
//得到是字节数,即byte,我们可以直接用file.getFileSize(),也可以在创建读取对象时用streamIn.available(); // int ok=streamIn.available(); int ok=file.getFileSize(); String strFee = null; //这个地方...
MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程mybatis in action之...在 IUserOperation 接口中增加方法:public List...
最简单的例子,通过ServletFileUpload静态类来解析Request,工厂类FileItemFactory会对mulipart类的表单中的所有字段进行处理,不只是file字段。getName()得到文件名,getString()得到表单数据内容,isFormField...