Struts2のデータビューとの相互作用のモデルを確立するための制御装置(コントローラ)と本質的にサーブレット、MVCデザインパターン、Struts2のに対応するMVCデザインパターンに基づいて、Webアプリケーションフレームワークです。
、Struts2の建築環境
1. Strutsは、プロジェクトのpom.xmlの達人に依存紹介しました
<依存性> 2 <のgroupId> org.apache.struts </ groupIdを> 3 <たartifactId> Struts2のコア</たartifactId> 4 <バージョン> 2.5.13 </バージョン> 5 </依存>
2. [インポート必要なStruts設定ファイル
ストラット-base.xml
<?xmlのバージョン= "1.0"エンコード= "UTF-8"?> <!DOCTYPEがPUBLIC Strutsの " - // Apache Software Foundationの// DTD Strutsの設定は2.5 // EN" 「http://struts.apache.org/ DTD / Strutsの-2.5.dtd "> <Strutsの> <! -符号化フォーマットを設定- > <名前=定数"。struts.i18n.encoding "値=" UTF-8「/> <! -動的なメソッド呼び出しを有効にします- > <定数名= "struts.devMode"値= "trueに" /> <! -プロジェクトを再起動しなくても、すぐに効果を取ることができ、コードを変更する- > =「struts.configuration.xml <定数名。 "/> trueに"値を="リロード />」trueに<名前=定数" struts.i18n.reload "値=" <!-動的なメソッド呼び出しを有効にする- > <名前=定数"struts.enable.DynamicMethodInvocation"値を= "trueに" />パッケージ <! - struts2.5後、動的メソッド呼び出しを有効にするには、この設定を追加します- > <名前=「ベース」が拡張 =「ストラット、デフォルトの」抽象 =「真の」> <グローバル・許可・メソッド>正規表現:。* </グローバル・許可・メソッド> </ パッケージ > </ストラット>
ストラットsy.xml
<?xmlのバージョン= "1.0"エンコード= "UTF-8"?> <!DOCTYPEはPUBLIC支柱 " - // Apache Software Foundationの// DTD Strutsの設定2.5 // EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <ストラット> <! - /ユーザー/ bookAction methodNameの=?リスト / SY / bookAction methodNameの=?リスト - > < パッケージ名= "SY" 拡張 = "ベース"名前空間= "/ SY"> <アクション名= "/ demo_ *" クラス = "com.liuwenwu .web.HelloAction」メソッド= "{1}"> <結果名= "RS"> / rs.jsp </結果>
struts.xml
<?xmlのバージョン= "1.0"エンコード= "UTF-8"?>
<!DOCTYPEはPUBLIC支柱
" - // Apache Software Foundationの// DTD Strutsの設定2.5 // EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<ストラット>
<! -ストラット默认を的配置文件- >
<ファイルが含ま= "-default.xmlの支柱"> </ include>の
<! -ストラット基础配置文件- >
<=>> </を含める"-ストラットbase.xml"ファイルを含める
<含めますファイル= "ストラット-sy.xml"> </ include>の
</ストラット>
3.フィルタコア配置のweb.xml
<web-appのxmlns = "http://xmlns.jcp.org/xml/ns/javaee" のxmlns:XSI = "http://www.w3.org/2001/XMLSchema-instance" のxsi:schemaLocationの = "HTTP ://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd」 バージョン = "3.1"> <表示名>原型作成されたWebアプリケーション</表示名> <フィルター> <フィルター名>支柱</フィルタ名> <フィルター- クラス > org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter </フィルター- クラス > </フィルタ> <フィルタ-mapping> <フィルタ名>ストラット</フィルタ名> の<url-pattern> *。アクション</のurl-pattern> </のfilter-mapping> </ web-app>の
第二に、動的なメソッド呼び出し
行動規範
公共の文字列(){追加 のSystem.out.printlnは( "调用方法を追加します" )。 リターン「RS」。 } パブリック文字列デル(){ System.out.printlnは( "调用デル方法" )。 リターン「RS」。 }
JSページのコードのテストが成功した場合
<a href="${pageContext.request.contextPath }/sy/demo_add.action">新增</a>の <a href="${pageContext.request.contextPath }/sy/demo_del.action">删除< / A>
コンソールは、対応する出力は成功しました
三、背景にパラメータを渡すためにフロントにストラット
三つの方法:
ModelDrivern 1.implements
2.クラスのインスタンスは、NAME属性
3.SETをGET /
カルは、第1のエンティティクラスを作成します
パッケージcom.liuwenwu.entity。 パブリック クラスカル{ プライベート文字列のNUM1。 プライベート文字列からnum2; パブリック文字列getNum1(){ 戻りNUM1。 } 公共 ボイドsetNum1(文字列NUM1){ この .num1 = NUM1。 } パブリック文字列getNum2(){ 戻りNUM2。 } 公共 ボイドsetNum2(文字列NUM2){ この .num2 = NUM2。 } @Override パブリック文字列のtoString(){ リターン "CAL [NUM1 =" + NUM1 + "NUM2 =" + NUM2 + "]" 。 } }
1. modelDrivernを達成するために
パブリック クラス helloActionとが実装 ModelDriven <カル> 、ServletRequestAware { プライベートカルCAL1 = 新しい校正を()。 @Override 公共カルgetModel(){ 戻りCAL1。 } / ** * modelDrivern接收参数值実装 * @return * / パブリック文字列accept1(){ System.out.printlnは( "CAL1:" + CAL1)。 リターン「RS」。 } }
JSPページのコード
<a href="${pageContext.request.contextPath }/sy/demo_accept1.action?num1=20&&num2=5"> accept1する</a>
クラスの属性名の2インスタンス
プライベートカルCAL2; パブリック(){カルgetCal2の リターン; CAL2 } 公共 ボイドsetCal2(カルCAL2){ この .cal2 = CAL2; } / ** *クラスインスタンス属性名は、パラメータ値を受信 * @return * / パブリック(文字列accept2を){ のSystem.out.println( "CAL2:" + CAL2); リターン "RS" ; }
JSPページのコード
<a href="${pageContext.request.contextPath }/sy/demo_accept2.action?cal2.num1=20&&cal2.num2=5"> accept2する</a>
3.SET / GET
プライベート文字列のセックス。 公共の文字列getSex(){ 返すセックスを。 } 公共 ボイドsetSex(文字列性別){ この .sex = セックス。 } / ** *セット/ GET接收参数值 * @return * / パブリック文字列accept3(){ System.out.printlnは(性別)。 リターン「RS」。 }
JSPページのコード
<a href="${pageContext.request.contextPath }/sy/demo_accept3.action?sex=nv"> accept3する</a>
第四に、価値によってフォアグラウンドの背景
プロパティ定義を受信することができますを取得/設定
req.setを.....
1.注入法(カップリング):インターフェイス実装ServletRequestAware
パブリック クラス helloActionとは、実装 ModelDriven <カル> 、ServletRequestAware { // 注入耦合 プライベートのHttpServletRequest reqをします。 / ** * modelDrivern接收参数值実装 * @return * / パブリック文字列accept1(){ System.out.printlnは( "CAL1:" + CAL1)。 // 注入耦合 req.setAttribute( "CAL1" 、CAL1)。 リターン「RS」。 } @Override 公共 ボイドsetServletRequest(HttpServletRequestのREQ){ この .reqに=REQ; } }
2.非注入(カップリング)
/ ** * modelDrivern接收参数值実装 * @return * / パブリック文字列accept1(){ System.out.printlnは( "CAL1:" + CAL1)。 // 非注入耦合 HttpServletRequestのリクエスト= ServletActionContext.getRequest()。 request.setAttribute( "CAL1" 、CAL1)。 リターン「RS」。 }