Struts2_day04

 1、回顧

1什麼是值棧html

(1)action和servlet區別java

2 如何獲取值棧對象程序員

3 值棧內部結構spring

(1)root和context數據庫

4 向值棧放數據編程

(1)向值棧放字符串設計模式

(2)向值棧放對象session

(3)向值棧放list集合框架

5 從值棧獲取數據ssh

(1)從值棧獲取字符串

(2)從值棧獲取對象

<s:property>

(3)從值棧獲取list集合

<s:iterator>

6 EL表達式獲取值棧數據

(1)加強request裏面getAttribute方法

7 ognl表達式 #、%使用

2、內容大綱

1 攔截器概述

2 攔截器底層原理

3 過濾器和攔截器區別

4 自定義登陸攔截器

5 struts2標籤庫(會用)

6 struts2表單標籤

3、Struts2攔截器概述

1 struts2是框架,封裝了不少的功能,struts2裏面封裝的功能都是在攔截器裏面

2 struts2裏面封裝了不少的功能,有不少攔截器,不是每次這些攔截器都執行,每次執行默認的攔截器

3 struts2裏面默認攔截器位置

4 攔截器在何時執行?

(1)在action對象建立以後,action的方法執行以前

4、攔截器底層原理

1 攔截器底層使用兩個原理

第一個 aop思想

(0)後面在spring裏面把aop作更深層次分析

(1)文字描述:

Aop是面向切面(方面)編程,有基本功能,擴展功能,不經過修改源代碼方式擴展功能

(2)畫圖分析:

 

 

第二個 責任鏈模式

(1)在java中有不少的設計模式,責任鏈模式是其中的一種

(2)責任鏈模式和過濾鏈很類似的

責任鏈模式:

 要執行多個操做,有添加、修改、刪除三個操做。

首先執行添加操做,添加操做執行以後 作相似於放行操做,執行修改操做,修改操做執行以後作相似於放行操做,執行刪除操做

過濾鏈:一個請求可有多個過濾器進行過濾,每一個過濾器只有作放行才能到下一個過濾器

 

2 aop思想和責任鏈模式如何應用到攔截器裏面?

(1)文字描述:

- 攔截器在action對象建立以後,action的方法執行以前執行

 

- 在action方法執行以前執行默認攔截器,執行過程使用aop思想,在action沒有直接調用攔截器的方法,使用配置文件方式進行操做

 

- 在執行攔截器時候,執行不少的攔截器,這個過程使用責任鏈模式

-- 假如執行三個攔截器,執行攔截器1,執行攔截器1以後作放行操做,執行攔截器2,執行攔截器2以後作放行,執行攔截器3,執行攔截器3以後放行,執行action的方法

 

(2)畫圖分析

3 查看源代碼

(1)執行action

(2)建立action對象,使用動態代理方式

(3)執行action的方法

(4)執行不少的攔截器,遍歷執行

相似於放行的操做的方法

5、重要的概念

1 過濾器和攔截器區別

(1)過濾器:過濾器理論上能夠任意內容,好比html、jsp、servlet、圖片路徑

(2)攔截器:攔截器只能夠攔截action

 

2 Servlet和action區別

(1)servlet默認第一次訪問時候建立,建立一次,單實例對象

(2)action每次訪問時候建立,建立屢次,多實例對象

6、自定義攔截器

1 在struts2裏面有不少的攔截器,這些攔截器是struts2封裝的功能,可是在實際開發中,struts2裏面的攔截器中能夠沒有要使用的功能,這個時候須要本身寫攔截器實現功能

 

2 攔截器結構

(1)查看源代碼看攔截器結構

- 繼承類

在接口裏面有三個方法

: 初始化操做

:銷燬

:攔截邏輯的操做

(2)開發中,建議使用另一種方式

- 寫類,繼承 MethodFilterInterceptor類實現

-- 讓action裏面某個的方法不進行攔截

 

(3)讓攔截器和action有關係

- 不是在action調用攔截器的方法,而是經過配置文件方式讓創建關係

7、自定義登陸攔截器

1 需求:在項目中,有不少的action的超連接,實現只有是登陸的狀態,才能夠點擊action的超連接實現功能,若是不是登陸狀態,點擊action超連接返回到登陸頁面

 

2 登陸的狀態:使用session域對象實現

(1)登陸成功以後,把數據放到session裏面

(2)判斷session是否有值,能夠知道是不是登陸狀態

 

3 實現登陸的基本功能

(1)查詢數據庫判斷用戶名和密碼(做業)

4 添加登陸攔截器功能

(1)判斷是否登陸:判斷session裏面是否有名稱是username的值

(2)攔截器實現過程

第一步 建立類,繼承MethodFilterInterceptor類

第二步 重寫MethodFilterInterceptor類裏面的方法寫攔截器邏輯

 

 

第三步 配置action和攔截器關係(註冊攔截器)

(1)在要攔截的action標籤所在的package標籤裏面聲明攔截器

(2)在具體的action標籤裏面使用聲明的攔截器

(3)struts2裏面執行不少的默認攔截器,可是若是在action裏面配置自定義攔截器,

問題:默認的攔截器不會執行了

解決:把默認攔截器手動使用一次

5配置攔截器,對action裏面全部的方法都進行攔截

(1)在action裏面有login的登陸的方法,這個方法不須要攔截,若是這個方法都攔截,問題是,永遠登陸不進去了

 

(2)解決:讓login方法不進行攔截

- 直接經過配置方式讓action裏面某些方法不進行攔截

 

 

6 若是登陸狀態,直接到功能頁面,若是不是登陸顯示登錄頁面

登陸以後出現小問題:

 

 

(1)設置打開位置,在form標籤裏面

 

 8、Struts2的標籤庫

0 struts2標籤使用jsp頁面中

1 s:property: 和ognl表達式在jsp頁面中獲取值棧數據

2 s:iterator: 獲取值棧list集合數據,表示list集合

3 s:debug: 查看值棧結構和數據

9、Struts2表單標籤(會用)

1 html表單標籤

(1)form : action、method、enctype

(2)輸入項

- 大部分在input裏面封裝 type=」值」

- text:普通輸入項

- password:密碼輸入項

- radio:單選輸入項

- checkbox:複選輸入項

- file:文件上傳項

- hidden:隱藏項

- button:普通按鈕

- submit:提交按鈕

- image:圖片提交

- reset:重置

- select:下拉輸入項

- textarea:文本域

 

2 在struts2裏面對應html表單標籤大部分都有

10、缺乏兩個知識點

放到ssh練習中講到

1 struts2文件上傳

2 錯誤處理機制 input

11、Struts2總結

1 Action

(1)action建立(繼承ActionSupport類)

(2)配置訪問action的方法(通配符)

(3)action獲取表單數據

- 模型驅動

(4)action操做域對象

(5)result標籤裏面type屬性

 

2 值棧

(1)值棧結構

(2)向值棧放數據

(3)從值棧獲取數據

 

3 攔截器

(1)攔截器原理

(2)自定義攔截器

- 繼承類

- 寫攔截器邏輯

- 配置攔截器

-- 配置讓action某些方法不進行攔截

 

參考資料:

《黑馬程序員》

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息