Struts 2でHttpServletResponseを取得する方法
Struts 2では、次の2つの方法で `HttpServletResponse`オブジェクトを取得できます。
1. ServletActionContext
ServletActionContext`クラスを介して
HttpServletResponse`にアクセスしてください。
package com.mkyong.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()`メソッドをオーバーライドしてください。
もちろん、カスタムのgetServletResponse()を作成して、簡単に `HttpServletResponse`を得ることができます。
package com.mkyong.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`を使うためにStruts 2のドキュメントが推奨されています。