struts2簡介:
struts2是熱門的MVC框架,三大框架(SSH)之一。它並非是struts1的升級版,它更像是WebWork的進化版。使用struts2之前必需要的步驟:
1>、下載struts2:從struts2的官網上下載struts2文件,它其實是個struts2的項目示例,我們通過它可以瞭解它的文件結構,並利用它提供的jar包,struts.xml和web.xml配置文件。
2>、給項目導入jar包:在Eclipse中新建web項目,把人家文件裏的jar複製到項目的lib目錄下
3>、配置struts.xml文件:放在項目src根目錄下,裏面的配置下面精講。查看精講
4>、配置web.xml文件:把人家的web.xml文件裏的<filter>和<filter-mapping>拷貝到自己的裏。
————————————————————————————————————————————————
一、Struts2要點總結:
二、Struts2攔截器:
在Struts2中怎麼用攔截器:
1.新建一個包,裏面專門放各種攔截器的類。每個類就是一個攔截器,這個類得實現Interceptor接口。
它裏面自帶了三個方法,
init(),indestroy(),iterceptor(ActionInvocation invocation)。最後一個方法裏定義了攔截器的方法,確定你要怎麼樣攔截Action。攔截完後,如果後面還有攔截器,則把程序交給下一個攔截器。
2.寫好攔截器的方法之後,得讓程序知道啊,所以得在struts.xml文件中配置攔截器。申明攔截器,並決定在執行Action前調用相應的攔截器。
三、Struts2動態方法調用:這個博客總結得很好
試想這樣一種場景:
在一個登錄框底下,有“登錄”和“註冊”兩個按鈕。因爲這兩個動作都是操作username和password這兩個數據,所以習慣上把兩個動作的操作都放在一個Action類裏(UserAction),在該類裏分別定義login(User user)和register(User user)倆方法。
但是,問題是,我們該在struts.xml的配置文件裏怎麼寫。此時通常便有幾種方法:
1.在struts.xml的<action>標籤裏指定method。<action name="UserAction " class=" " method="login(user)">。也就是說這種<action>配置是以方法爲單位的,那我們便要寫兩組action標籤,這樣會產生太多的action。
2.在訪問鏈接後面註明方法。<form action="..UserAction!login(user)">或者<a href=..UserAction!login(user)></a>
這種方法使用之前必須得先在常量配置裏開啓動態調用的開關。
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
3.使用通配符:
這種方法是由第一種方法演變而來,因爲當Action類裏有很多方法時,方法1則需要我們配置很多個action,這樣很麻煩,所以誕生了使用通配符的方法,它的原則是命名約定高於配置。
看個例子:
<action name="User*" class="com.cqxs.action.UserAction" method="{1}">
<result>/{1}success.jsp</result>
</action>
但當我們除了User*類之外還有好多其他Action類時該怎麼辦。
<action name="*_*" class="com.cqxs.action.{1}Action" method="{2}"> <result>/{1}_{2}_success.jsp</result>
</action>
4.Struts2異常處理機制:
struts2的異常處理方式是在struts.xml文件中配置實現的,這就降低了代碼和異常處理的耦合性,使代碼更清晰明朗,更易維護。
5.Struts2輸入校驗:
方法A:手動寫校驗的方法(服務器端的校驗)
因爲Action類繼承了ActionSupport,我們可以重寫validate()方法,在這個方法裏寫校驗的方法。把錯誤通過addFieldError("錯誤的名字")保存下來
注意,此時validate()校驗的是這個類裏的所有方法的動作。
若我們只想校驗其中某個方法應該重寫validateXxx(),則它只會校驗xxx()方法。
我們寫了輸入校驗的方法邏輯後,當然得在頁面給用戶反饋校驗的信息啊。在struts標籤添加<s:fielderror/>,就會顯示校驗信息。
方法B:配置Struts2的內置校驗器
比如我們有個UserAction類,它繼承了ActionSupport,並且裏面有login()和regiser()兩個方法。那我們若要對登錄和註冊的輸入內容進行校驗,則要在和UserAction同一級目錄下新建一個UserAction-validation.xml。在這個文件裏我們要配置Struts2內置校驗器。
分爲:以字段配置和非字段配置。
對於輸入校驗,分爲客戶端校驗和服務器端校驗。對於一般的校驗,我們選擇運用JS等技術在客戶端校驗,因爲這樣不通過服務器,速度快且輕便。但是若有些複雜的校驗或者有安全擔憂的,我們還是在服務器端校驗比較好,因爲客戶端數據不太安全。