サーブレットAPIで参照Struts2の
コンセプト
Struts2のデータとクラスアクションの転送への直接アクセスを達成するがために、なぜ、APIサーブレットをご紹介します。しかし、いくつかのケースでは、あなたはまだ、このようなログインがユーザー・セッション情報保存、成功するよう、サーブレットAPIを使用します。
Struts2のある2つの取得のための方法; ServletAPI A分離型Aのカップリングは、
使用してデカップリングになりStruts2のをサーバが起動されたときにテストのためには必要ありません。ある程度、開発の効率を向上させます。
デカップリング:Struts2のサーブレット・オブジェクトがコンテナで取り出された地図オブジェクトを対応する、マップサーブレットAPIをカプセル化するために容器を使用するように、サーブレット・オブジェクトの追加と相まって直接サーブレットを回避するために使用されます。
カップリング:ダイレクト・アクセス・サーブレット・オブジェクトの適切なメソッドを呼び出します。
デカップリングの方法
1.メソッドするactionContextは、それぞれのクラスを介して取得します。(例:のgetSession()、getapplication()、等)
//获取request---HttpServletRequest对象的attributes
Map<String,Object> request = (Map)ActionContext.getContext().get("request");
//获取application
Map<String,Object> application = ActionContext.getContext().getApplication();
カップリング
するactionContextの1.適切なgetメソッドServletActionContextサブクラス。
HttpServletRequest request = ServletActionContext.getRequest();
request.getSession().setAttribute("user", name);
2.適切なgetメソッドするactionContext
HttpServletRequest request=(HttpServletRequest)ActionContext.getContext().get(StrutsStatics.HTTP_REQUEST);
request.getSession().setAttribute("user", name);
インターフェースクラスを介して3
public class LoginAction2 implements ServletRequestAware{
private String name;
private String pwd;
HttpServletRequest request;
//处理方法
public String execute(){
System.out.println(name+"---"+pwd);
if("siggy".equals(name)&&"1111".equals(pwd)){
request.getSession().setAttribute("user", name);
System.out.println("name===="+request.getParameter("name"));
return "success";
}else{
return "login";
}
}
}
コメント
我々はカップリングとデカップリングの二つの方法を参照の上、存在するactionContextから、するactionContextということは何ですか?
のオープンAPIのStruts2の:
するactionContextとは、コンテキストで Action
実行されます。各コンテキストは、基本的に、セッションパラメータ、ロケール、等のような実行のアクションニーズオブジェクトのコンテナであります
するactionContextはするactionContextに格納された値は、スレッドごとに一意であることローカルれる手段をスレッドです。参照 ThreadLocal
詳細については、クラスを。これの利点は、あなたは、ユーザーの特定のアクション・コンテキストを心配する必要はありませんされて
手段:するactionContext マップのコンテナ構造。するactionContextはあるアクションコンテキスト、ストレージ・アクションの実行