Struts 2のActionでのWEBリソースへのアクセス
2862 ワード
ActionでWEBリソースにアクセス
一、WEBリソースとは何ですか.
HttpServertRequest,HttpSession,ServertContextなどのオリジナルのServertAPI
二、なぜWEBリソースにアクセスするのか.
BSのアプリケーションのControllerでWEBリソースにアクセスする必要がある
ドメインオブジェクトへの読み書きプロパティ、読み書きCookie、realPathの取得
三、どのように訪問しますか.
1、:サーブレットAPIとのデカップリング方法:限られたサーブレットAPIオブジェクトのみにアクセスでき、限られたメソッドのみにアクセスできます.(リクエストパラメータを読み込み、ドメインオブジェクトのプロパティを読み書きし、sessionを失効させる)
具体的には博文:Struts 2のSessionを参照してください
(1)ActionContextの使用
import comでopensymphony.xwork2.ActionContext;
(2)XxxAwareインタフェースの実現
Actionにより次のインタフェースを実現
(3)選択した推奨事項:1つのActionクラスに複数のactionメソッドがあり、複数のメソッドがドメインオブジェクトのMapまたはparametersを使用する必要がある場合は、Awareインタフェースを使用することを推奨する
(4)セッション対応のMapは実際にはSessionMapタイプであり,強転後にinvalidate()メソッドを呼び出すとセッションを無効にすることができる.
2.サーブレットAPIと結合する方法:より多くのサーブレットAPIオブジェクトにアクセスでき、元の生態の方法を呼び出すことができる.
(1)サーブレットActionContextの使用
(2)サーブレットXxxAwareインタフェースの実現
一、WEBリソースとは何ですか.
HttpServertRequest,HttpSession,ServertContextなどのオリジナルのServertAPI
二、なぜWEBリソースにアクセスするのか.
BSのアプリケーションのControllerでWEBリソースにアクセスする必要がある
ドメインオブジェクトへの読み書きプロパティ、読み書きCookie、realPathの取得
三、どのように訪問しますか.
1、:サーブレットAPIとのデカップリング方法:限られたサーブレットAPIオブジェクトのみにアクセスでき、限られたメソッドのみにアクセスできます.(リクエストパラメータを読み込み、ドメインオブジェクトのプロパティを読み書きし、sessionを失効させる)
具体的には博文:Struts 2のSessionを参照してください
(1)ActionContextの使用
import comでopensymphony.xwork2.ActionContext;
(2)XxxAwareインタフェースの実現
Actionにより次のインタフェースを実現
import org.apache.struts2.dispatcher.SessionMap;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.SessionAware;
(3)選択した推奨事項:1つのActionクラスに複数のactionメソッドがあり、複数のメソッドがドメインオブジェクトのMapまたはparametersを使用する必要がある場合は、Awareインタフェースを使用することを推奨する
(4)セッション対応のMapは実際にはSessionMapタイプであり,強転後にinvalidate()メソッドを呼び出すとセッションを無効にすることができる.
2.サーブレットAPIと結合する方法:より多くのサーブレットAPIオブジェクトにアクセスでき、元の生態の方法を呼び出すことができる.
(1)サーブレットActionContextの使用
public String execute(){
//ServletActionContext: Action Servlet API
//1、 HttpServletRequest:ServletActionContext.getRequest();
//2、 HttpSession:ServletActionContext.getRequest().getSession();
//3、 ServletContext
HttpServletRequest request=ServletActionContext.getRequest();
HttpSession session=ServletActionContext.getRequest().getSession();
ServletContext servletContext=ServletActionContext.getServletContext();
System.out.println("execute...");
return "success";
}
(2)サーブレットXxxAwareインタフェースの実現
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.util.ServletContextAware;
// ServletXxxAware Struts2 Servlet
//ServletRequestAware: HttpServletRequest ( )
//ServletContextAware: ServletContext ( )
//ServletResponseAware: HttpServletResponse
public class TestServletAware implements ServletRequestAware,ServletContextAware,ServletResponseAware{
public void setServletRequest(HttpServletRequest request) {
System.out.println(request);
}
private ServletContext context;
public void setServletContext(ServletContext context) {
System.out.println(context);
this.context=context;
}
public void setServletResponse(HttpServletResponse response) {
System.out.println(response);
}
public String execute(){
System.out.println("ServletContext:" + context);
return "success";
}
}