Struts 2はRequestとSessionを得る


Struts 2はRequestとSessionを得る
キーワード:struts 2、request、sessionはStruts 1.*では、request、response、sessionなどのサーブレットオブジェクトにアクセスするには便利です.これは、常にパラメータとして各メソッド間で伝達されているためです.Struts 2では、フォームの値が予め設定されたgetメソッドを介して得られるため、それらのトレースが見えにくくなります.パラメータがあればrequestを通過しなければなりませんgetParametreまたはsession.getAttributeで手に入れるには、どうすればいいのでしょうか.Maxのチュートリアルでは、IoC方式と非IoC方式の2つに分けることができますが、この2つの方式の違いをどのように理解しますか?IoCはSpringの特徴の1つで、字面の意味は反転制御で、はっきり言って依存注入で、例えば類A依存類B、それでは積極的にAに1つの類Bの対象を注入して、以下はこの2つの方法の具体的な実現を見てみましょう.1.非Ioc方式この方式は主にcomを利用する.opensymphony.xwork2.ActionContextクラスおよびorg.apache.struts2.サーブレットActionContextクラス、具体的な方法は以下の通りです.requestオブジェクトを取得するには、次の手順に従います.
Javaコード
  • HttpServletRequest request = ServletActionContext.getRequest ();  
  • ActionContext ct= ActionContext.getContext()  
  •    HttpServletRequest request=  
  • (HttpServletRequest)ct.get(ServletActionContext.HTTP_REQUEST);  
  • HttpServletRequest request = ServletActionContext.getRequest ();
    ActionContext ct= ActionContext.getContext()
       HttpServletRequest request=
    (HttpServletRequest)ct.get(ServletActionContext.HTTP_REQUEST);

    セッションオブジェクトの取得:Struts 2では下位レベルのセッションはすべてMapタイプにカプセル化されており、我々はSessionMapと呼ぶが、通常我々が言うセッションはHttpSessionオブジェクトを指し、具体的な取得方法は以下の通りである.
    Javaコード
  • Map session=ActionContext.getSession();  
  • Map session=(Map)ActionContext.getContext().getActionContext.SESSION);  
  • Map session=ActionContext.getSession();
    Map session=(Map)ActionContext.getContext().getActionContext.SESSION);

    このSessionMapを得るとsessionを読み書きすることができ、元のHttpSessionを得るにはまずHttpService Requestオブジェクトを得てrequestを通過することができる.getSession()を使用して、元のHttpSessionオブジェクトを取得します.一般的にSessionMapはすでにすべての仕事を完成することができて、私たちはもう底のsessionに触れる必要はありません.2.IoC方式は相対的に変化が少なく、具体的な流れは以下の通りである.requestオブジェクトを取得する手順1:ServertRequestAwareインタフェースをactionに実装する手順2:HttpServertRequestタイプのインスタンス変数をactionに宣言する手順3:ServertRequestAwareインタフェースをactionで実装するsetSetServertRequestメソッドは、以下に示すように簡単に実装されます.         private HttpServletRequest request;         public void setServletRequest(HttpServletRequest request) {             this.request = request; }Sessionオブジェクトの取得(この場合のsessionはSessionMapタイプであることに注意):第1ステップ:SessionAwareインタフェースをactionに実装させる第2ステップ:HttpService Requestタイプのインスタンス変数をactionに宣言する第3ステップ:SessionAwareインタフェースをactionで実装するsetSessionメソッドは、以下に示すように簡単に実装されます.         private Map session; publicvoid setSession(Map session) {             this. session = session; }Trackback:http://tb.blog.csdn.net/TrackBack.aspx?PostId=1721226次はRequestとSessionを得るための別の記事です.
    Javaコード
  • Struts 2でActionでセッションを使用する必要がある場合は、次の2つの方法で
  • を得ることができます.
  • 1 .ActionContext classのメソッドgetSessionにより
  • を得る.
  • 2 .Action実現org.apache.struts2.interceptor.SessionAwareインタフェースによってsessionが動作する
  •    
  • 次に、actionでsessionが得られた第1の方法を用いる例
  • を参照する.
  • package  s2.ex.action;   
  •   
  •   
  • import  java.util.Map;   
  •   
  •   
  • import  com.opensymphony.xwork2.ActionContext;   
  •   
  • import  com.opensymphony.xwork2.ActionSupport;   
  •   
  •   
  • public   class  SessionTestAction  extends  ActionSupport {   
  •   
  •   
  •     public  String execute() {   
  •   
  •      ActionContext actionContext = ActionContext.getContext();   
  •   
  •        Map session = actionContext.getSession();   
  •   
  •        session.put("USER_NAME",  "Test User");   
  •   
  •        return  SUCCESS;   
  •   
  •     }   
  •   
  • }  
  • この例では、ActionContextによってセッションが得られ、セッションにkeyをUSER_として配置するNAME、値はTest Userの内容です.  
  •    
  • 以下は実装orgである.apache.struts2.interceptor.SessionAwareインタフェースによるsession動作の例
  • package  s2.ex.action;   
  •   
  •   
  • import  java.util.Map;   
  •   
  •   
  • import  org.apache.struts2.interceptor.SessionAware;   
  •   
  •   
  • import  com.opensymphony.xwork2.ActionSupport;   
  •   
  •   
  • public   class  SessionTest1Action  extends  ActionSupport  implements  SessionAware {   
  •   
  •     private  Map session;   
  •   
  •     public   void  setSession(Map session) {   
  •   
  •        this .session = session;   
  •   
  •   
  •     }   
  •   
  •     public  String execute() {   
  •   
  •        this .session.put( "USER_NAME",  "Test User 1");   
  •   
  •        return  SUCCESS;   
  •   
  •     }   
  •   
  • }  
  •    
  • この例では、インタフェースSessionAwareにおけるsetSession方法が実装される.  
  •    
  • 上の2つの方法でsessionが得られ、実現できる機能は同じです.  
  • ここでは第2の方法でsessionを使用することを推奨します.なぜなら、単体テストが容易であるためです.第2の方法では、Mapを1つ構築するだけでaction classを単体テストすることができます.  
  •   
  • は、1つのプロジェクトでセッションを使用する必要がある場合が多い、各actionがorgを実現する場合がある.apache.struts2.interceptor.SessionAwareというインタフェースは、面倒に見えるかもしれないので、orgを実現するために抽象的なBaseActionクラスを提案します.apache.struts2.interceptor.SessionAwareインタフェースは,以降すべてのactionがこのBaseActionを継承すればよい.  
  •    
  • は、JSPでセッションをどのように使用するかの例である.  
  • <%@ page contentType="text/html; charset=UTF-8" %>   
  •   
  • <%@page  pageEncoding= "utf-8" %>   
  •   
  • <%@taglib  prefix= "s" uri= "/struts-tags" %>   
  •   
  •    
  •   
  •    
  •   
  •     Session Test   
  •   
  •    
  •   
  •   
  •    
  •   
  •    
  •   
  •    
  •   
  •    
  •   
  •   
  •   
  • 一般的にプロジェクトではsessionにObjectを配置することが多く、user、userにboolean adminとString userNameがあり、userにisAdminの方法が存在する場合、jspではでユーザーに管理権限があるかどうかを判断することができます.ユーザ名は<:property value="#session.user.userName">または.

  • jackzhangyunjieから