Struts 2入門

28098 ワード

Struts 2の開発環境の構築
  • 必要なjarパッケージを見つけます.リリースパッケージのlibディレクトリ(異なるバージョンで必要な最小jarパッケージは異なります.異なるバージョンのドキュメントを参照してください.2.1.7)
    struts2-core.jar    jar 
    
    xwork-2.jar  xwork  jar 
    
    ognl.jar  ognl   
    
    freemarker.jar  FreeMarker  
    
    commons-logging.jar    
    
    commons-fileupload.jar      ,2.1.6        
    
    commons-io.jar            
    
  • strutsという名前を確立する.xmlのプロファイル、内容は以下の通り:
  • <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd">
    <struts>
    
    </struts>
  • コアコントローラは、フィルタ
  • である.
            <filter>
                <filter-name>struts2</filter-name>
                <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
            </filter>
            <filter-mapping>
                <filter-name>struts2</filter-name>
                <url-pattern>/*</url-pattern>
            </filter-mapping>

    TOmcatの起動に成功した場合、エラーは報告されず、環境構築に成功したことを証明します.
    最初のStruts 2ケースの開発
    1、strutsを書く.xmlプロファイル
            <?xml version="1.0" encoding="UTF-8"?>
            <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd">
            <struts><!--  Struts2        -->
                <package name="itcast" namespace="/test" extends="struts-default">
                <!-- pageckage:         name:   。    ,           。 namespace:       ,    "/"   extends:        。struts-default     struts2           。( struts2-core.jar    struts-default.xml ) abstract:      。    action         (java ) -->
                    <action name="helloworld" class="cn.itcast.action.HelloWorldAction" method="sayHello">
                    <!-- action:         name:       。      class:     JavaBean     method:JavaBean        。(    :   ,public String    (){}) -->
                        <result name="success">/1.jsp</result>
                        <!-- result:     name:               :View     。 -->
                    </action>
                </package>
            </struts>

    2、プロファイルに基づいて、必要なjavabeanと対応する動作方法を作成し、動作方法で論理呼び出しを完了します.
        package cn.itcast.action;
    
        public class HelloWorldAction implements Serializable {
            private String message;
    
            public String getMessage() {
                return message;
            }
    
            public void setMessage(String message) {
                this.message = message;
            }
            public String sayHello(){
                message = "helloworld by struts2";
                return "success";
            }
        }

    3、Viewを作成し、結果を表示する
         ${message}

    4、helloworldの動作にアクセスする方法:http://localhost:8080/struts2day01/test/helloworld適用名/パッケージの名前空間/アクションの名前
    デフォルトでは、動作名helloworldにアクセスし、直接helloworld、またはhelloworldを使用できます.action
    検索順
    http://localhost:8080/struts2day01/test/a/b/c/helloworld
                /test/a/b/c:    
                helloworld:    
    
            :    
                /test/a/b/c    helloworld
                /test/a/b      helloworld
                /test/a        helloworld
                /test          ,    

    Struts 2プロファイルの詳細
    1、struts.xmlプロファイルの作成にヒントがない問題はありますか?方法1:インターネットを利用して方法2:1、コピーhttp://struts.apache.org/dtds/struts-2.1.7.dtdアドレス2、Eclipseのwindow、preferences、XML Catelog 3検索、addボタンLocation:dtdファイルのパスKeyType:URI Key:http://struts.apache.org/dtds/struts-2.1.7.dtd
    2、Strutsプロファイルの各種のデフォルト値.
    Action:class:デフォルトはcom.opensymphony.xwork2.ActionSupport定数:SUCCESS success NONE none ERROR error INPUT input LOGIN login method:デフォルト値はpublic String execute(){}
         :               com.opensymphony.xwork2.ActionSupport  
    

    result:type:目的地への移動方法.デフォルト値は転送です.名前はdispatcherです(注:typeの値は定義されており、でたらめではありません.struts-default.xmlのpackageに定義されています).
            <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
            <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
            <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
            <result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
            <result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
            <result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
            <result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
            <result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/>
            <result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
            <result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />
  • dispatcher:あるページ
  • に通常転送
  • chain:通常のスナップは、ある動作名
  • に送信されます.
  • redirect:ページ
  • にリダイレクト
  • redirectAction:動作名
  • にリダイレクト
  • plainText:JSPコンテンツ
  • をテキスト形式で出力
    result要素の書き方:
    方法1:
                <result type="chain" name="success">a2</result>

    方式2:
                <result type="chain" name="success">
                    <param name="actionName">a2</param><!--name   chain      setActionName()  -->
                </result>

    注意:別の名前空間での動作に転向する場合は、使用方法2のみです.
                <package name="p1" namespace="/namespace1" extends="struts-default">
                    <action name="a2">
                        <result type="dispatcher" name="success">/3.jsp</result>
                    </action>
                </package>
                <package name="p2" namespace="/namespace2" extends="struts-default">
                    <action name="a1">
                        <result type="chain" name="success">
                            <param name="namespace">/namespace1</param>
                            <param name="actionName">a2</param>
                        </result>
                    </action>
                </package>

    各種result使用例
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd">
    <struts>
        <constant name="struts.devMode" value="true"></constant>
        <constant name="struts.action.extension" value="action,,do"></constant>
        <package name="itcast" namespace="/test" extends="struts-default">
            <action name="helloworld" class="cn.itcast.action.HelloWorldAction" method="sayHello">
                <result name="success">/1.jsp</result>
            </action>
            <action name="visit2jsp">
                <result type="redirect" name="success">/2.jsp</result>
            </action>
        </package>
    
        <package name="p1" namespace="/namespace1" extends="struts-default">
            <!-- <action name="a1"> <result type="chain" name="success">a2</result> </action>-->
            <action name="a2">
                <result type="dispatcher" name="success">/3.jsp</result>
            </action>
        </package>
    
        <package name="p2" namespace="/namespace2" extends="struts-default">
            <action name="a1">
                <result type="chain" name="success">
                    <param name="namespace">/namespace1</param>
                    <param name="actionName">a2</param>
                </result>
            </action>
        </package>
    
        <package name="p3" namespace="/ns3" extends="struts-default">
            <action name="a3">
                <result type="redirectAction" name="success">
                    <param name="namespace">/ns4</param>
                    <param name="actionName">a4</param>
                </result>
            </action>
        </package>
    
        <package name="p4" namespace="/ns4" extends="struts-default">
            <action name="a4">
                <result type="dispatcher" name="success">/4.jsp</result>
            </action>
        </package>
    
        <package name="p5" namespace="/ns5" extends="struts-default">
            <action name="a5">
                <result type="plainText" name="success">/5.jsp</result>
            </action>
        </package>
    
        <!--     Action       -->
        <package name="p6" namespace="/ns6" extends="struts-default">
            <action name="a6" class="cn.itcast.action.HelloWorldAction">
                <param name="message">you are big shit!</param>
                <result name="success">/6.jsp</result>
            </action>
        </package>
        <!--   Action   -->
        <package name="p7" namespace="/ns7" extends="struts-default">
            <action name="a7" class="cn.itcast.action.HelloWorldAction" method="sayHello">
                <result type="redirect" name="success">/7.jsp?msg=${message}</result>
            </action>
        </package>
    
    
    </struts>

    ここで6番目の動的アクションへの属性付与値は7番目のアクションを取得した値と比較して注目に値する.
    6.jsp
    <body>
        6666:${message}
      </body>

    7.jsp
    <body>
        7777:${param.msg}
      </body>

    開発中のプロファイルの変更は、アクセス時にフレームワークを自動的に再ロードします.
    struts.devMode=false(default.properties)strutx.xmlのconstant要素を使用してdefault.propertiesのデフォルト動作を上書き
    <struts>
        <constant name="struts.devMode" value="true"></constant>
    </struts>

    制御actionの接尾辞名
    <constant name="struts.action.extension" value="action,,do"></constant>

    完了