So erhalten Sie die HttpServletResponse in Struts 2
In Struts 2 können Sie auf zwei Arten das ObjektHttpServletResponseabrufen.
1. ServletActionContext
Greifen Sie über die KlasseServletActionContextaufHttpServletResponse zu.
package com.example.common.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
Greifen Sie aufHttpServletResponse zu, indem Sie die SchnittstelleServletResponseAware implementieren und die Methode+ setServletResponse()+ überschreiben.
Note
Wenn der Interceptor von Struts 2 'servlet-config feststellt, dass eine Aktionsklasse in derServletResponseAware-Schnittstelle implementiert ist, übergibt er einenHttpServletResponse-Seferenzverweis an die angeforderte Aktionsklasse über die MenthodsetServletResponse().
Natürlich können Sie benutzerdefiniertegetServletResponse() erstellen, um dieHttpServletResponse einfach zu erhalten.
package com.example.common.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;
}
}
Beide Mechanismen erhalten das gleicheHttpServletResponse-Objekt. In der Struts 2-Dokumentation wird jedoch empfohlen,ServletResponseAware zu verwenden. Weitere Informationen finden Sie in den folgenden Referenzen: