So erhalten Sie die HttpServletResponse in Struts 2
In Struts 2 können Sie auf zwei Arten das ObjektHttpServletResponse
abrufen.
1. ServletActionContext
Greifen Sie über die KlasseServletActionContext
aufHttpServletResponse
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: