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のドキュメントをお勧めします。以下のリファレンスを参照してください。