。
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獲取相對路徑...