在配置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檔案中有一些預設的配...