Struts 2フレームの基本使用
Struts 2は優れたMVCフレームであり、各層間の結合度を大幅に低減し、優れた拡張性を持っています.本編から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>