Как получить HttpServletResponse в Struts 2

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