Struts2获取HttpServletResponse实例
在Struts2中,可以用以下两种方式来获取HttpServletResponse对象。
1. ServletActionContext
通过 ServletActionContext 类来访问 HttpServletResponse 。
package com.gitbook.netmon.action; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; public class LocaleAction{ //business logic public String execute() { HttpServletResponse response = ServletActionContext.getResponse(); return "SUCCESS"; } }
2. ServletResponseAware
通过实现 ServletResponseAware 接口并覆盖 setServletResponse()方法来访问HttpServletResponse。
注意
当Struts2的“servlet-config”拦截器是看到一个Action类实现ServletResponseAware接口,它会通过一个HttpServletResponse的引用Action类通过setServletResponse()方法请求。
当Struts2的“servlet-config”拦截器是看到一个Action类实现ServletResponseAware接口,它会通过一个HttpServletResponse的引用Action类通过setServletResponse()方法请求。
当然,也可以创建自定义 getServletResponse()来获得 HttpServletResponse。
package com.gitbook.netmon.action; import java.util.Locale; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.interceptor.ServletResponseAware; public class LocaleAction implements ServletResponseAware{ HttpServletResponse response; //business logic public String execute() { Locale locale = getServletResponse().getLocale(); return "SUCCESS"; } public void setServletResponse(HttpServletResponse response) { this.response = response; } public HttpServletResponse getServletResponse() { return this.response; } }
这两个机制都可以得到同样 HttpServletResponse 对象,但 Struts2 文档推荐使用 ServletResponseAware,请参见下面的参考资料: