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