struts2 jsp跳转action 404_Struts2 学习笔记(三)
1. Struts2的攔截器
1.1 攔截器概述
1.1.1 什么是攔截器
- Interceptor:攔截器,起到攔截Action的作用;
- Filter:過濾器,過濾從客戶端向服務器發送的請求;
- Interceptor:攔截器,攔截是客戶端對Action的訪問。更細粒度化的攔截。
- Struts2框架核心的功能都是依賴攔截器實現的;
1.1.2 Struts2的執行流程
客戶端向服務器發送一個Action的請求,執行核心過濾器(doFilter)方法。在這個方法中,調用executeAction()方法,在這個方法內部調用dispatcher.serviceAction();在這個方法內部創建一個Action代理,最終執行的是Action代理中的execute(),在代理中執行的execute方法中調用ActionInvocation的invoke方法。在這個方法內部遞歸執行一組攔截器(完成部分功能),如果沒有下一個攔截器,就會執行目標Action,根據Action的返回的結果進行頁面跳轉。
Struts2攔截器是可插拔的,攔截器是AOP的一種實現。Struts2攔截器棧就是將攔截器按照一定的順序連接成一條鏈。在訪問被攔截的方法或字段時,Struts2攔截器鏈中的攔截器就會按照其之前的順序被調用。
1.2 攔截器入門
1.2.1 搭建Struts2的環境
1.2.2 編寫攔截器類
編寫一個類實現Interceptor接口或者繼承AbstractInterceptor類。
- Interceptor接口的定義代碼:
- AbstractInterceptor類的定義代碼:
- 實例
1.2.2 對攔截器進行配置
- 定義攔截器進行配置
要想讓攔截器起作用,首先需要對它進行配置,攔截器的配置是在struts.xml文件中完成的,它通常以<interceptor>標簽開頭,以</interceptor>標簽結束,定義攔截器的語法如下:
name屬性用來指定攔截器的名稱,class屬性用于指定攔截器的實現類,有時在定義攔截器時需要傳入參數,這時候需要指定<param>標簽。name屬性用來指定參數的名稱,paramValue表示參數的值。
- 定義一個攔截器棧的方式
在實際開發過程中,經常需要在Action執行前同時執行多個攔截動作,這是可以把多個攔截器組成一個攔截器棧。在使用時,可以將棧內的多個攔截器當成一個整體來引用。當攔截器被附加到一個Action上時,在執行Action之前必須先執行攔截器棧中的每一個攔截器。
2. Struts2的標簽庫
對于一個MVC框架而言,重點是實現兩個部分:業務邏輯控制器部分和視圖頁面部分。Struts22作為一個優秀的MVC框架,也把重點放在這兩個部分。控制器主要由Action來提供支持。而視圖則是由大量的標簽來提供支持。
2.1 Struts2標簽庫概述
2.1.1 Struts2標簽庫概述
在JavaWeb中,Struts2標簽庫是一個比較完善,而且功能強大的標簽庫,它將所有標簽都統一到一個標簽庫中,從而簡化了標簽的使用。它還提供主題和模板的支持,極大地簡化了視圖頁面的代碼編寫,同時它還提供Ajax的支持,大大豐富了視圖的表現效果。
2.1.2 Struts2標簽庫的分類
普通標簽主要是在頁面生成時,控制執行的流程;UI標簽則是以豐富而可復用的HTML文件來顯示數據。普通標簽又分為控制標簽和數據標簽,控制標簽用來完成條件邏輯、循環邏輯的控制,也可用來做集合的操作。數據標簽用來輸出后臺的數據和完成其他數據訪問功能。UI標簽則分為表單標簽、非表單標簽和Ajax標簽。表單標簽主要用來生成HTML頁面中的表單元素,非表標簽主要用來生成HTML的div標簽及輸出Action中封裝的信息等,Ajax標簽主要用來提供Ajax技術支持。
2.2 Struts2標簽的使用
Struts2標簽庫被定義在struts.tags.tld文件中。要是用struts標簽庫,一般只要在JSP文件中使用taglib指令導入Struts2標簽庫:
<%@ taglib profix="s" uri="/struts-tags" %>2.2.1 控制標簽
- <s:if>、<s:elseif>、 <s:else>
- <s:iterator>
2.2.2 數據標簽
- <s:property>
該標簽用于輸出指定的值,通常輸出的是value屬性指定的值。
- <s:a>標簽
標簽用于構造HTML頁面中的超鏈接。
屬性 | 是否必須 | 類型 | 描述 -- | -- | -- | -- action | 否 | String | 指定超鏈接Action地址 href | 否 | String | 超鏈接地址 namespace | 否 | String | 指定Action地址 id | 否 | String | 指定其id method | 否 | String | 指定Action調用方法
<s:a href="連接地址"></s:a> <s:a namespace="" action="">superp1peng.xyz</s:a>- <s:debug>標簽
該標簽用于在調試程序時輸出更多的調試信息,主要輸出ValueStack和StackContext中的信息。
2.2.3 Struts2的模板的使用
Struts2的UI標簽都是基于模板的。常見的主題有四種:simple、XHTML、css_xhtml、Ajax。通常,通過設置struts.ui.theme,來改變默認主題。
struts.xml文件中: <constant name="struts.ui.theme" value="simple" /> 或者struts.properties struts.ui.theme = simple2.2.4 Struts2的表單標簽
- 表單標簽的公共屬性:
- <s:form>標簽
標簽用來呈現HTML語言中的表單元素,其中一般還會包括其他表單元素,textfield,radio等;
- <s:submit>標簽
- 其他一些標簽
總結
以上是生活随笔為你收集整理的struts2 jsp跳转action 404_Struts2 学习笔记(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么程序员一定要加班?
- 下一篇: mysql网页化_页面化操作数据库