strut2入門教程,手把手教你搭建項目,配合fcming老師視頻觀看效果更佳

對應視頻配套地址: https://www.imooc.com/video/9088

項目創建:

    Eclipse:

1.創建一個動態項目

 

2.將對應的核心jar包導入到WebContent中的lib中

            commons-fileupload.jar:文件上傳

            commons-io.jar:

            commons-lang.jar:

            commons-logging.jar:

            struts2-core.jar:

            xwork-core.jar:

            freemarker:模板引擎,根據模板生成

            ognl:一些表達式

            javassist.jar:解析java類文件的包

3.在項目中引用jar包

->->->

4.在web.xml中配置過濾器,將所有請求轉交到struts2

<filter>

    <filter-name>struts2</filter-name>

    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>

</filter>

<filter-mapping>

    <filter-name>struts2</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

5.在src下邊創建struts.xml配置文件

6.在src下邊創建上圖中對應的類文件

7.創建對應的jsp文件

開啓運行即可,如果沒有繼承tomcatServer,需要現在eclipse中添加對應的tomcat服務器

4-3 Action搜索順序

http://127.0.0.1:8080/struts/path1/path2/path3/student.aciton

        

        程序會首先從path3開始檢索,看看目錄下有沒有path3包,有的話看看有沒有相應action,

        否則看看目錄下有沒有path2包,有的話看看有沒有相應action,

        否則看看目錄下有沒有path1包,有的話看看有沒有相應action,

        所有的包檢索完了都沒有對應aciton那麼會檢索項目根目錄下,即\下有沒有對應的action即

4-4 動態方法調用

 url訪問HelloWorld.action時,默認請求execute()方法

 

動態方法調用:(爲了解決一個Action對應多個請求的處理,以免Action太多)

    1.置頂method屬性 

通過url訪問addAction中的add方法,然後映射到com.imooc.action.HelloWorldAction類中的add方法

    2.感嘆號方式(不推薦)

        需要提前在struts.xml配置文件中開啓一個常量值

然後配置相應的action

   

如何用感嘆號方式調用呢:

默認跳轉到result.jsp

helloworld!add.action跳轉到add.jsp

helloworld!update.action跳轉到update.jsp

3.通配符方式

        simple:

helloworld_add.action跳轉到add.jsp

    advance:

訪問helloworld_add.action,那麼struts框架會先將helloworld匹配給{1}即請求類helloworldAction.java,然後下劃線後邊的add匹配給{2}即請求類helloworldAction.java中的add方法,然後如果返回add|update都打開add.jsp

4-5 指定多個配置文件

    在struts中使用include包含多個配置文件

然後創建相應的helloworld.xml文件,並且helloworld文件和struts文件結構一致

同理可以多個文件引入

4-5 默認Action的使用

在項目中打開不存在的action時,就會出現404訪問錯誤,用戶體驗較差,遂使用默認action

    ForExample:

        在任意struts的action路徑索引文件中

這樣再打開不存在的action時,就會跳轉到error.jsp了    

4-6 Struts後綴

    修改訪問url時的action,比如http://127.0.0.1:8080/helloStruts/helloworldAction.action,想將action改爲do或html之類的(將動態action頁面僞裝成靜態html頁面)

    只需要在struts.xml配置文件中,添加參數:<constant name="struts.action.extension" value="html" ></constant>

如果不想要後綴,即訪問http://127.0.0.1:8080/helloStruts/helloworldAction

    只需要將<constant name="struts.action.extension" value="" ></constant>中的value置爲空即可

    

    如果不設置這個參數,直接訪問.action是沒有問題的

在struts.properties中配置

在web.xml中配置

4-7    在struts2中接收參數

    4-7-1使用Action的屬性接收

  在jsp頁面中設置form表格:

 

配置處理action:

具體類處理事件:在Action類中聲明form中的名稱爲name值的兩個成員變量,並實現相應的get/set方法

4-7-2    使用DomainModel接收

            先聲明對應的實體類對象,也實現get/set方法

然後在Action中聲明這個對象,在通過對象引用訪問成員變量

最後修改表格中的傳入參數,將參數與實體類名稱綁定,form表格中的user即和Action類中聲明的User對象user一致

4-7-3    使用ModelDriven來接收

                ForExample:

只需要在Action類中集成接口,並且重寫getModel方法,最後將對象實例化即可

                    傳入多個值:

比如接收中的bookList   

先在User中聲明bookList對象

  在Action中做相應處理

 

  傳入一個數組形式的值:

  此時bookList不再只簡單是String類型了,改成user集合了

  只需修改對應的form表格中

 

    對應Action中的

4-9處理結果類型概述

在struts定義的映射中,<resutl name="success">/success.jsp</rsult>,其中result元素中的name就是result元素的邏輯視圖名稱

如果省略成<result>/success.jsp</result>,即使省略了name屬性,系統也將採用默認的name屬性值,默認的name值是success

路徑前方的斜線代表的是項目的根目錄,如果不帶斜線,就會索引到相應struts.xml文件夾對應下的jsp文件

 

com.opensymphone.xwork2.Action

SUCCESS:正確執行,返回相應的視圖

NONE:表示Action正確執行,但並不返回任何視圖

ERROR:表示Action執行失敗,返回到錯誤處理的視圖

LOGIN:Action因爲用戶沒有登錄的原因沒有正確執行,將返回該登錄視圖,要求用戶進行登錄

INPUT:Action的執行,需要從前端界面獲取參數,INput就是代表這個參數輸入的界面,一般在應用中,會對這些參數進行驗證,如果驗證沒有通過,將自動返回該視圖

 

4-10 驗證INPUT的代碼演示

    

    首先在映射文件中定義result爲input的處理

在form中添加name爲age的變量

最後在aciton中添加對應的攔截處理錯誤

 

4-11    處理結果類型

    

    處理結果是通過在struts.xml使用<result/>標籤配置文件

    根據文件的不同,可分爲2種結果

                          1:局部結果,將<result>作爲<action>的子元素   

                          2:將<result>作爲<global-result>元素的子元素

 

    OGNL:Object Graphy Navigation language

    在對應的映射文件中定義

  在對應的class文件中定義

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章