在Struts2中,可以使用以下两种方法来获取HttpServletRequest对象。
1. ServletActionContext
直接从 org.apache.struts2.ServletActionContext 获取 HttpServletRequest 对象。
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
public class LocaleAction{
//business logic
public String execute() {
HttpServletRequest request = ServletActionContext.getRequest();
return "SUCCESS";
}
}
2. ServletRequestAware
让你的类实现org.apache.struts2.interceptor.ServletRequestAware。
当 Struts2 的 “servlet-config” 拦截器的一个Action类实现ServletRequestAware接口,它会通过一个 HttpServletRequest 的引用请求,通过Action类的setServletRequest()方法完成。
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
public class LocaleAction implements ServletRequestAware{
HttpServletRequest request;
//business logic
public String execute() {
String param = getServletRequest().getParameter("param");
return "SUCCESS";
}
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
public HttpServletRequest getServletRequest() {
return this.request;
}
}
Struts2 文档中建议使用 ServletRequestAware 代替 ServletActionContext。
