Struts 2でHttpServletResponseを取得する方法

Struts 2でHttpServletResponseを取得する方法

Struts 2では、次の2つの方法を使用してHttpServletResponseオブジェクトを取得できます。

1. ServletActionContext

ServletActionContextクラスを介してHttpServletResponseにアクセスします。

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

ServletResponseAwareインターフェースを実装してHttpServletResponseにアクセスし、+ setServletResponse()+メソッドをオーバーライドします。

Note
Struts 2 'servlet-config'インターセプターは、アクションクラスがServletResponseAwareインターフェイスに実装されていることを確認すると、要求されたものへのHttpServletResponse参照を渡します。 setServletResponse()menthodを介したアクションクラス。

もちろん、カスタム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オブジェクトを取得していますが、ServletResponseAwareを使用するにはStruts2のドキュメントをお勧めします。以下のリファレンスを参照してください。