Comment obtenir le HttpServletResponse dans Struts 2

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: