javaWeb專案中如何使用過濾器

2021-07-05 20:07:07 字數 1822 閱讀 1691

web應用中,在處理請求時,經常有一些公共的工作,比如設定字符集。這樣的工作需要寫在每個頁面,這樣的寫法費力且不好修改。使用過濾器就像在這些流程前加了一道攔,將需要進行的操作放到攔裡執行,而所有經過這道攔的流程都會「被」執行該操作。           

.filter介面:      

這一介面含有三個過濾器必須執行的方法:

**演示:

public  class  testfilter  implements filter  

public void destroy()

public void dofilter(servletrequest request, servletresponse response,

filterchain chain) throws ioexception, servletexception

}

過濾器開發完成後還需要在web.xml中進行配置。

中加入filter配置

testfilter 

com.wh.filter. testfilter

characterencoding

utf-8

/*

解析:   

節點描述該filter對應的類是哪乙個。寫明具體路徑

中的必須和節點中的值相同,

是filter的引數。獲取該引數的方式為:  

public void init(filterconfig filterconfig) throws servletexception

關聯的url樣式。

url-pattern主要有四種匹配方式

(a)精確匹配,就是填寫jap或servlet等需要過濾的請求的具體位址,例如:/filter/testfilter

(c)路徑字首匹配,包含乙個目錄和乙個/*   例如:/servlet/*指的是對servlet目錄下的所有資源進行過濾

(d)全部匹配,使用/*,指的是對所以資源都過濾   

filter流程總述:

請求發起時,web容器先判斷是否存在過濾器和這個請求的資源相關,如果有存在關聯就把請求交給過濾器去處理,在過濾器中可以對請求的內容做出改變,然後再將請求轉交給被請求的資源。當被請求的資源做出響應時,web容器同樣會將響應先**給過濾器,在過濾器中可以對響應做出處理然後再將響應傳送給客戶端。在這整個過程中客戶端和目標資源是不知道過濾器的存在的。

過濾器對請求做了兩次(對request和response)過濾,其實filter是對請求中的request和response進行了攔截。攔截到了進行處理,處理完後再返回到其原來的呼叫流程上去。這點體現了責任鏈模式。

,從而形成過濾器鏈。

在請求資源時,過濾器鏈中的過濾器依次對請求作出處理。在接受到響應時再按照相反的順序對響應作出處理。

多個過濾器的執行順序是按照web.xml中filter的配置的上下順序來決定的。

使用filter的好處:

,對整個系統沒有影響,這種宣告式的服務非常方便,也非常強大。

其次,使用filter進行控制業務也非常方便,比如驗證使用者是否登入,是否有操作許可權,判斷session,字符集等,放到filter裡,可以省去大量重複的**和繁瑣的控制。

的地方:

1、      對使用者請求進行統一認證,許可權管理

2、      對使用者的訪問請求進行記錄和審核

3、      對使用者傳送的資料進行過濾和替換

4、      轉換影象格式

5、      對響應的內容進行壓縮,減少傳輸量

6、      對請求和相應進行加密處理

最後需要注意的是filter技術只對post請求起作用。

javaWeb專案中如何使用過濾器

web應用中,在處理請求時,經常有一些公共的工作,比如設定字符集。這樣的工作需要寫在每個頁面,這樣的寫法費力且不好修改。使用過濾器就像在這些流程前加了一道攔,將需要進行的操作放到攔裡執行,而所有經過這道攔的流程都會 被 執行該操作。filter介面 這一介面含有三個過濾器必須執行的方法 演示 pub...

如何在java web專案後端專案中獲取路徑

1 獲取類檔案下的絕對路徑 youclass.class.getresource tostring replaceall file 2 獲取專案路徑 getservletcontext getrealpath 3 獲取類檔案路徑 this.getclass getclassloader getres...

JavaWeb專案中的URL

幾種web專案中的url 1,以協議開頭的url,例如 這個很清楚寫什麼就是什麼。2,以 開頭的url,如 project1 img example.png,這種url在瀏覽器中會被解析成網域名稱根路徑 url為完整的url,3,以單詞或者.或.等開頭的url,這種會基於當前網頁的url獲取相對路徑...