Comment obtenir le HttpServletResponse dans Struts 2
Dans Struts 2, vous pouvez utiliser les deux méthodes suivantes pour obtenir l'objetHttpServletResponse
.
1. ServletActionContext
Accédez àHttpServletResponse
via la classeServletActionContext
.
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
Accédez àHttpServletResponse
en implémentant l'interfaceServletResponseAware
et remplacez la méthode+ setServletResponse()+
.
Note
Lorsque l'intercepteur Struts 2 'servlet-config' voit qu'une classe Action est implémentée l'interfaceServletResponseAware
, il passera une référenceHttpServletResponse
au demandé Classe d'action via la méthodesetServletResponse()
.
Bien sûr, vous pouvez créer ungetServletResponse()
personnalisé pour obtenir facilement lesHttpServletResponse
.
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; } }
Les deux mécanismes obtiennent le même objetHttpServletResponse
, mais la documentation Struts 2 est recommandée pour utiliser lesServletResponseAware
, voir les références ci-dessous: