更新時間:2020-10-23 17:09:49 來源:動力節點 瀏覽1618次
Javaweb是和java框架、服務器、開發工具在java中一樣重要的存在,也是java零基礎的新手朋友們首先要接觸學習到的內容。在javaweb的學習階段,需要打好扎實的基礎,javaweb攔截器是初學者們需要學習的內容之一,這篇文章來介紹javaweb攔截器是什么以及相關的基本知識。
Javaweb攔截器是動態攔截Action調用的對象,它提供了一種機制可以使開發者在一個Action執行的前后執行一段代碼,也可以在一個Action執行前阻止其執行,同時也提供了一種可以提取Action中可重用部分代碼的方式。在AOP中,攔截器用于在某個方法或者字段被訪問之前,進行攔截,然后再之前或者之后加入某些操作。
Javaweb攔截器的原理:大部分時候,攔截器方法都是通過代理的方式來調用的。Struts2的攔截器實現相對簡單。當請求到達Struts2的ServletDispatcher時,Struts2會查找配置文件,并根據配置實例化相對的攔截器對象,然后串成一個列表(List),最后一個一個的調用列表中的攔截器。Struts2的攔截器是可插拔的,攔截器是AOP的一個實現。Struts2攔截器棧就是將攔截器按一定的順序連接成一條鏈。在訪問被攔截的方法或者字段時,Struts2攔截器鏈中的攔截器就會按照之前定義的順序進行調用。
在前面的文章中我們學習了javaweb三大組件的內容,三大組件中的過濾器filter是要和javaweb攔截器做對比學習的,攔截器和過濾器的區別是什么呢?過濾器是對dao請求起到過濾的作用,它在監聽器之后,作用在servlet之前,對請求進行過濾;攔截器(interceptor)是對請求和返回進行攔截,它作用在servlet的內部,二者的簡要區別概括如下:
1、攔截器是基于java的反射機制的,而過濾器是基于函數回調。
2、攔截器不依賴與servlet容器,過濾器依賴與servlet容器。
3、攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用。
4、攔截器可以訪問action上下文、值棧里的對象,而過濾器不能訪問。
5、在action的生命周期中,攔截器可以多次被調用,而過濾器只能在容器初始化時被調用一次。
6、攔截器可以獲取IOC容器中的各個bean,而過濾器就不行,在攔截器里注入一個service,可以調用業務邏輯。
以上就是對javaweb攔截器基本概念和相關基礎知識的介紹,攔截器在java開發時是經常要使用的工具,也是程序員要掌握的一個技能,希望這篇文章對javaweb攔截器的介紹,java初學者能對javaweb攔截器有一個基本的了解和認識,進而慢慢學習更多攔截器的相關知識。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習