So erhalten Sie die HttpServletResponse in Struts 2

So erhalten Sie die HttpServletResponse in Struts 2

In Struts 2 können Sie auf zwei Arten das ObjektHttpServletResponseabrufen.

1. ServletActionContext

Greifen Sie über die KlasseServletActionContextaufHttpServletResponse 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: