Struts 2フレームの基本使用



Struts 2は優れたMVCフレームであり、各層間の結合度を大幅に低減し、優れた拡張性を持っています.本編からStruts 2の基本的な使い方を学びます.本編では主に以下の内容が含まれています.
  • Struts 2のダウンロードインストール
  • フレーム全体の運行フローを理解する
  • カスタム実装アクション
  • カスタム構成処理結果
  • 一、Struts 2のダウンロードとインストール     アプリ公式サイトに登録する htt p:// stru ts.apa  ヘ.org /ダウン  nload.  cgi str  uts 2 31 最新バージョンのStrutsをダウンロードします.もちろん2.3バージョンをダウンロードすることをお勧めします.2.5バージョンが出てきたばかりなので、いくつかの例示的なアプリケーションはあまりそろっていません.圧縮パッケージを解凍し、Struts 2のソースコードとコード例を入手しました.
    appsディレクトリでは主にオフィシャルで提供されているStruts 2のコードの例がありますが、私たちの学習にとって有用です.docsは主にStruts 2に関する文書の内容です.libディレクトリには主にStruts 2に関するコアクラスと第三者プラグインライブラリが格納されています.srcにはStruts 2のソースコードが全部含まれています.
    二、Struts 2の運行フローを理解する.     Struts 2を使用した完全な例を示します.具体的なコードではなく、フレーム全体の動作フローを理解することが目的です.まず、私たちはappsディレクトリのstruts 2-blankの例項目からlibディレクトリ全体をコピーする必要があります.(これはStruts 2を使用する最も基本的なjarパッケージです.Struts 2のlibの中から探す必要はありません.あなたも何が必要なのか分かりませんから)彼らをプロジェクトに導入します.
    これはStruts 2全体の要求と応答の流れです.具体的なコードの中でどのように表現されていますか?
    //web.xml,   web.xml       ,      ,          Struts2    
            struts
            org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
            struts
            /*
    //  Action     public class LoginAction extends ActionSupport {    private String username;    private String password;    public String getUsername(){        return this.username;
        }    public void setUsername(String s){        this.username = s;
        }    public String getPassword(){        return this.password;
        }    public void setPassword(String s){        this.password = s;
        }    public String execute() throws Exception{        if(getUsername().equals("walker")&&getPassword().equals("yam")){            return SUCCESS;
            }        return ERROR;
        }
    }
    //  Struts.xml        struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
        
            
                /error.jsp
                /index.jsp
            
        
    /*login.jsp*/
      
        login
      
      
        
            名前:
            パスワード:
            
        
      
    私たちはlogin.jspページを訪問します.
    提出後にURLがloginのページであることを要求します.フレームリーダーはStruts.xmlのURLに対応するアクションコントローラを検索して、具体的なコントローラに転向します.私達が書いたLoginnActionコントローラでフォームから提出されたパラメータを取得し、簡単な判断をします.文字列successまたはerrorをコアブロックに返します.コアブロックは、Struts.xmlの構成検索コントローラが返す文字列に対応する具体的なビュー位置を読み取り、forwardビューのページがユーザに応答します.
    これは簡単なStruts 2のフレームワークの要求と応答プロセスであり、フレーム全体の核心はメインブロックと各種コントローラアクションであることが分かります.
    三、カスタムでアクションを実現する     アクションでは、要求されたパラメータをインスタンス変数を使用してカプセル化し、上記の例のように、loging.jspページで提出されたusernameとpasswordの2つのパラメータは、LoginnActionの2つのパラメータに対応し、コアブロックがLoginationにジャンプするときに、2つの要求パラメータを自動的にLoginationの2つのインスタンス変数に割り当てます.なお、LoginnActionにおけるこれらの例示的変数については、setterとgeter方法を提供する必要があり、我々のコアブロックは、LoginnActionにジャンプする際にも、setter方法によって具体的なインスタンスパラメータを付与するものである.     私たちはxxActionコントローラをカスタマイズしたいです.アクションインターフェースを引き継ぎ、その中の方法を実現する必要があります.
    public interface Action {    String SUCCESS = "success";    String NONE = "none";    String ERROR = "error";    String INPUT = "input";    String LOGIN = "login";    String execute() throws Exception;
    }
    これらの文字列は物理的ビュー位置に対応して使用され、詳細な内容は後述する、アクションインターフェースにおいていくつかの一般的な文字列が定義されているのを見ることができる.ここではexecute方法があります.この方法はJavaSEのmain方法と似ています.コアブロック要求がActionページにジャンプすると、executeメソッドはデフォルトで実行されます.注意深い読者は、上記の例ではアクションインターフェースは継承されておらず、アクションスーパークラスを継承していることを発見するかもしれない.実際には、アクションSupportクラスは、まだアクションインターフェースを継承し、execut方法を実現していますが、アクションSupport類だけでなく、デフォルトでは他のツール関数も実装されています.私たちが使用しやすいので、基本的にはカスタムアクションの時に、アクションSupport類を継承して、軽符号化の難しさを減らすことができます.
         Structs 2のActionはServlet APIと結合するところが何もなく、すなわち、アクションコントローラの中にServlet APIを直接操作できるインターフェース呼び出しがない.各モジュール間の分離については、Strutsが優れています.私たちは、アクションコントローラでServletのオブジェクトを直接操作することができませんでした.例えば、request、reponseなどですが、Struts 2のフレームワークはツール類を提供しています.これらのオブジェクトを提供してくれます.アクションテキスト:
    static ThreadLocal actionContext = new ThreadLocal();//        ActionContext    public static ActionContext getContext() {        return (ActionContext)actionContext.get();
        }// map     application        public void setApplication(Map application)//  application        public Map getApplication()// map     session        public void setSession(Map session)//  session        public Map getSession()//  request          public Object get(String key)// request       key-value   public void put(String key, Object value)//  request       public Map getParameters()// request           public void setParameters(Map parameters)
    私たちはよくAction Contectの静的な方法を通じて、ローカルスレッドThreadLocalを通じてAction Contectのインスタンスを取得します.このAction ContectはServletの動作に関する様々なAPI呼び出し方法をカプセル化しました.簡単な使い方を見ます.
    public class LoginAction extends ActionSupport {    private String username;    private String password;    public String getUsername(){        return this.username;
        }    public void setUsername(String s){        this.username = s;
        }    public String getPassword(){        return this.password;
        }    public void setPassword(String s){        this.password = s;
        }    public String execute() throws Exception{        if(getUsername().equals("walker")&&getPassword().equals("yam")){
                ActionContext ac = ActionContext.getContext();
                ac.put("login","    ");            return SUCCESS;
            }        return ERROR;
        }
    }
    
      
        
      
      
        
        <h1>this is the index page</h1>
      </code></pre> 
      <p style="margin:10px auto;padding:0px;list-style-type:none;list-style-p_w_picpath:none;color:rgb(68,68,68);font-family:Tahoma, Arial, Helvetica, sans-serif;font-size:14px;line-height:25.2px;white-space:normal;background-color:rgb(255,255,255);">    :</p> 
      <p style="margin:10px auto;padding:0px;list-style-type:none;list-style-p_w_picpath:none;color:rgb(68,68,68);font-family:Tahoma, Arial, Helvetica, sans-serif;font-size:14px;line-height:25.2px;white-space:normal;background-color:rgb(255,255,255);"/> 
      <p style="margin:10px auto;padding:0px;list-style-type:none;list-style-p_w_picpath:none;color:rgb(68,68,68);font-family:Tahoma, Arial, Helvetica, sans-serif;font-size:14px;line-height:25.2px;white-space:normal;background-color:rgb(255,255,255);">           ActionContext          Servlet API   。       ServletActionContext            Servlet pageContext,request,response   。           。</p> 
      <p style="margin:10px auto;padding:0px;list-style-type:none;list-style-p_w_picpath:none;color:rgb(68,68,68);font-family:Tahoma, Arial, Helvetica, sans-serif;font-size:14px;line-height:25.2px;white-space:normal;background-color:rgb(255,255,255);"><strong> 、Action   </strong><br/>             xxxAction      ,                     URL ,     Action   ,       Struts.xml   。       ,web.xml       web   ,     struts.xml           。struts.xml                 ,  IDE  ,    src    ,           WEB-INF/classes 。</p> 
      <p style="margin:10px auto;padding:0px;list-style-type:none;list-style-p_w_picpath:none;color:rgb(68,68,68);font-family:Tahoma, Arial, Helvetica, sans-serif;font-size:14px;line-height:25.2px;white-space:normal;background-color:rgb(255,255,255);"/> 
      <p style="margin:10px auto;padding:0px;list-style-type:none;list-style-p_w_picpath:none;color:rgb(68,68,68);font-family:Tahoma, Arial, Helvetica, sans-serif;font-size:14px;line-height:25.2px;white-space:normal;background-color:rgb(255,255,255);">       , struts.xml      :</p> 
      <pre><code><?xml  version="1.0" encoding="UTF-8" ??>struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd"><struts>
        <package>
            <action>
                <result>/error.jsp</result>
                <result>/index.jsp</result>
            </action>
        </package></struts></code></pre> 
      <p style="margin:10px auto;padding:0px;list-style-type:none;list-style-p_w_picpath:none;color:rgb(68,68,68);font-family:Tahoma, Arial, Helvetica, sans-serif;font-size:14px;line-height:25.2px;white-space:normal;background-color:rgb(255,255,255);">                     ,              。    Struts               。     ,           package , Struts       Action,      Action            ,              Action 。<br/>     package           :</p> 
      <ul style="list-style-type:none;" class="list-paddingleft-2"> 
       <li><p>name:             ,     </p></li> 
       <li><p>extends:               ,         Action        ,     </p></li> 
       <li><p>namespace:            Action     ,         Action,     </p></li> 
       <li><p>abstract:            ,          Action ,            、      </p></li> 
      </ul> 
      <p style="margin:10px auto;padding:0px;list-style-type:none;list-style-p_w_picpath:none;color:rgb(68,68,68);font-family:Tahoma, Arial, Helvetica, sans-serif;font-size:14px;line-height:25.2px;white-space:normal;background-color:rgb(255,255,255);">      Struts.xml ,       ,     struts-default ,  struts2-core-2.3.32.3.jar     ,      :</p> 
      <p style="margin:10px auto;padding:0px;list-style-type:none;list-style-p_w_picpath:none;color:rgb(68,68,68);font-family:Tahoma, Arial, Helvetica, sans-serif;font-size:14px;line-height:25.2px;white-space:normal;background-color:rgb(255,255,255);"/> 
      <p style="margin:10px auto;padding:0px;list-style-type:none;list-style-p_w_picpath:none;color:rgb(68,68,68);font-family:Tahoma, Arial, Helvetica, sans-serif;font-size:14px;line-height:25.2px;white-space:normal;background-color:rgb(255,255,255);">         ,              ,         ,       ,                     Action     。         Action   ,          package        。<br/>              namespace   ,   Struts.xml        ,             Action ,                  Action,             Action     。           ,         Action   ,           ,           。       :</p> 
      <pre><code>    <package>
            <action>
                <result>/error.jsp</result>
                <result>/index.jsp</result>
            </action>
        </package></code></pre> 
      <pre><code>    <package>
            <action>
                <result>/error.jsp</result>
                <result>/index.jsp</result>
            </action>
        </package></code></pre> 
      <p style="margin:10px auto;padding:0px;list-style-type:none;list-style-p_w_picpath:none;color:rgb(68,68,68);font-family:Tahoma, Arial, Helvetica, sans-serif;font-size:14px;line-height:25.2px;white-space:normal;background-color:rgb(255,255,255);">       ,          Action,               ,        。  :    walker   login action URL :</p> 
      <pre><code>/a/login</code></pre> 
      <p style="margin:10px auto;padding:0px;list-style-type:none;list-style-p_w_picpath:none;color:rgb(68,68,68);font-family:Tahoma, Arial, Helvetica, sans-serif;font-size:14px;line-height:25.2px;white-space:normal;background-color:rgb(255,255,255);"> yam   login action   URL :</p> 
      <pre><code>/b/login</code></pre> 
      <p style="margin:10px auto;padding:0px;list-style-type:none;list-style-p_w_picpath:none;color:rgb(68,68,68);font-family:Tahoma, Arial, Helvetica, sans-serif;font-size:14px;line-height:25.2px;white-space:normal;background-color:rgb(255,255,255);">      package          ,        :      namespace  ,       Action           ,           namespace="/"      ,              ,              namespace   。                         Action,                Action。</p> 
      <p><br/></p> 
     </div> 
    </div>
                                </div>
                            </div>