Как получить HttpServletResponse в Struts 2
В Struts 2 вы можете использовать следующие два способа получить объектHttpServletResponse
.
1. ServletActionContext
Доступ кHttpServletResponse
через классServletActionContext
.
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
Получите доступ кHttpServletResponse
, реализовав интерфейсServletResponseAware
и переопределив метод+ setServletResponse()+
.
Note
Когда перехватчик Struts 2 'servlet-config видит, что класс Action реализует интерфейсServletResponseAware
, он передает ссылкуHttpServletResponse
на запрошенный Класс действия с помощью методаsetServletResponse()
.
Конечно, вы можете создать собственныйgetServletResponse()
, чтобы легко получитьHttpServletResponse
.
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; } }
Оба механизма получают один и тот же объектHttpServletResponse
, но в документации Struts 2 рекомендуется использоватьServletResponseAware
, см. Ссылки ниже: