struts2配置詳解

2021-07-02 15:46:51 字數 4382 閱讀 8063

在配置struts***時,如果除了核心***外還有其他***,其他***需要放在核心***之前。

struts2中action開發的幾種方式

1).繼承actionsupport

packagecn.test.user;

importcom.opensymphony.xwork2.actionsupport;

publicclassuseractionextendsactionsupport}

2).實現action介面,重寫execute()方法

publicinte***ceaction

packagecn.test.user;

importcom.opensymphony.xwork2.action;

publicclassuseractionimplementsaction}

3).不實現任何介面,也不繼承類。

struts的功能是通過***來實現的,不實現介面或者類,也不會影響到其資料自動封裝的功能

packagecn.test.user;

importcom.opensymphony.xwork2.action;

publicclassuseractionimplementsaction

publicvoidsetname(string name)

publicstring getpassword()

publicvoidsetpassword(string password)

@override

publicstring execute()throwsexception }

struts2的萬用字元

在同乙個action中有多個業務方法返回同乙個值或者頁面的配置方法

可以使用萬用字元來配置

"user_*"class="cn.test.user.useraction" method="">

"success">login.jsp

*代表uer_之後輸入的字串,被填充到中進行查詢,找不到則報錯

"user_*"class="cn.test.user.useraction" method="">

"">.jsp

萬用字元可以在struts配置資訊中用來優化配置,可以在action中任何乙個地方使用。

struts中路徑匹配原則:

訪問路徑 = 協議+主機名+埠號+應用程式名 + 命名空間 + 對外訪問路徑

如果沒有命名空間,預設為/

struts2訪問路徑解析

struts2專案訪問路徑http://localhost:8080/struts02/user/a/b/user_login在伺服器上的解析過程

伺服器

檢視協議:http

解析主機:localhost

解析埠號:8080

解析訪問的專案資源名稱:struts02

解析出要訪問的資源名稱:user_login

檢視命名空間:user/a/b是否存在,如果不存在這個命名空間,則繼續向下找

如果存在,則在該命名空間中查詢名字為user_login的action

檢視命名空間:user/a  是否存在,如果不存在這個命名空間,則繼續向下找

如果存在,則在該命名空間中查詢名字為user_login的action

檢視命名空間:user      是否存在,如果不存在這個命名空間,則繼續向下找

如果存在,則在該命名空間中查詢名字為user_login的action

檢視命名空間:/           

如果還沒有找到,就報錯。

如果存在,則在該命名空間中查詢名字為user_login的action

如果找到其中乙個對應的命名空間,則返回,並獲取類來響應使用者的請求。

struts中的常量

struts的預設訪問字尾名:

struts1中預設訪問字尾名是:*.do;

struts2中預設訪問字尾名是:*.action;

編碼之前,必須知道編碼規則。

修該struts的訪問字尾

1.      struts2的.action字尾定義在**?

struts-core-2.3.4.1.jar/org.apache.struts/default.properties

2.      修改struts2的訪問字尾

"struts.action.extension"value="action,,">

多個訪問字尾名稱之間用英文逗號隔開

一般來說,任何乙個框架的常用配置檔案,都會放在其包檔案的根目錄下或者第乙個包目錄中。對於所有應用都是用的配置,一般會放在全域性變數中。

其他常量:

指定預設編碼集,作用於httpservletrequest的setcharacterencoding方法 和freemarker 、velocity的輸出

自定義字尾修改常量

設定瀏覽器是否快取靜態內容,預設值為true(生產環境下使用),開發階段最好關閉

開發模式下使用,這樣可以列印出更詳細的錯誤資訊

預設的檢視主題

與spring整合時,指定由spring負責action物件的建立

該屬性設定struts 2是否支援動態方法呼叫,該屬性的預設值是true。如果需要關閉動態方法呼叫,則可設定該屬性

為 false

上傳檔案的大小限制

struts2動態方法的呼叫

"struts.enable.dynamicmethodinvocation"value="true">

"/cn/test/user/config/actionstruts.xml">

在struts訪問路徑中,如果出現兩個相同的訪問路徑,後面的訪問路徑會覆蓋前面的訪問路徑。

"user"class="cn.test.user.config.useraction" >

"success">login.jsp

不建議使用動態方法呼叫

全域性配置的常量,應該單獨放在乙個struts檔案中去配置和維護,在總配置檔案中引入這個檔案即可。

全域性檢視

對於多個action返回同乙個結果,也可以同過全域性檢視的方式配置來跳轉結果。

/success.jsp

在返回同乙個結果的action中,不必再配置這個跳轉結果。如果在某乙個action中配置了跳轉結果,則會覆蓋全域性檢視配置的跳轉結果。在查詢跳轉結果是,會先查詢action中配置的跳轉結果,如果當前action沒有配置,則會到全域性檢視中去查詢對應的頁面,如果全域性檢視中也沒有找到跳轉結果配置,則會報錯。

全域性檢視的配置,必須在action配置之前。

配置各項預設值

1.      在struts的action中預設執行的業務邏輯方法是execute()方法

"login"

class="cn.test.action.helloaction" >

中method的預設值是execute

2.action中沒有配置class時,預設值為com.opensymphony.xwork2.actionsupport

"login">

執行的是action在struts-default中的配置

預設執行的方法是execute()方法,返回值為success,對應的頁面在全域性檢視配置中去找。

重定向跳轉不到專案的web-inf目錄下的資源。但是**可以跳轉到web-inf目錄下的資源。

web-inf中放置的是資源檔案,一般不允許客戶直接訪問。

在action中可以通過type來配置**或者重定向。

什麼情況下不配置action的class?

答案:當只是需要跳轉到web-inf下的資源時,可以不配置class。type的預設值為forward

struts2 配置詳解

一 配置詳解 1.核心控制器 需要在web.xml中進行配置 對框架進行初始化,以及處理所有的請求 filter struts2 org.apache.struts2.dispatcher.ng.filter.strutsprepareandexecutefilter 2.struts.xml 核心...

Struts2配置檔案詳解

web.xml的配置 每個web專案都有web.xml檔案,它用來對整個專案進行配置,在struts2應用中的web.xml主要用來配置filterdispatcher,使它過濾所有的客戶端請求,一般情況下,只需在該檔案中加入如下 struts2 org.apache.struts2.dispatc...

struts2配置檔案詳解

本文介紹struts中的配置 1.首先介紹一下配置檔案的載入順序 載入優先順序 tomcat啟動時會先載入struts.xml properties檔案 web.xml檔案。所以後載入的檔案會覆蓋先載入的檔案。web.xml優先順序最高。2.在default.properties檔案中有一些預設的配...