Как получить 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, см. Ссылки ниже: