JSP過濾器Filter配置過濾類型匯總

一、配置方法
1 映射過濾應用程序中所有資源
<filter>
? ? <filter-name>loggerfilter</filter-name>
? ? <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
? ? <filter-name>loggerfilter</filter-name>
? ? <url-pattern>/*</url-pattern> //訪問當前主機,當前應用程序根下的所有文件包括多級子目錄下的所有文件,注意這里*前有“/”
</filter-mapping>

2 過濾指定的類型文件資源
<filter>
? ? <filter-name>loggerfilter</filter-name>
? ? <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
? ? <filter-name>loggerfilter</filter-name>
? ?<url-pattern>*.html</url-pattern> //訪問當前主機,當前應用程序根目錄下的所有html文件,注意:*.html前沒有“/”,否則錯誤
</filter-mapping>
其中*.html要過濾jsp那么就改*.html為*.jsp,但是注意沒有“/”斜杠。如果要同時過濾多種類型資源:
方法1 url-pattern 分開寫
<filter>
? ? <filter-name>loggerfilter</filter-name>
? ? <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
? ? <filter-name>loggerfilter</filter-name>
? ? <url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
? ? <filter-name>loggerfilter</filter-name>
? ? <url-pattern>*.jsp</url-pattern>//訪問當前主機,當前應用程序根目錄以所有及子目錄下的所有jsp文件
</filter-mapping>

方法2 將url-pattern合并
<filter>
? ? <filter-name>loggerfilter</filter-name>
? ? <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
? ? <filter-name>loggerfilter</filter-name>
? ? <url-pattern>*.html;*.jsp</url-pattern>
</filter-mapping>//*.html;*.jsp兩類型之間用分號;間隔

3 過濾指定的目錄下的所有文件
<filter>
? ? <filter-name>loggerfilter</filter-name>
? ? <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
? ? <filter-name>loggerfilter</filter-name>
? ? <url-pattern>/folder_name/*</url-pattern>//訪問當前主機,當前應用程序根目錄下的folder_name子目錄(可是多級子目錄)下所有文件
</filter-mapping>

4 過濾指定的servlet
<filter>
? ? <filter-name>loggerfilter</filter-name>
? ? <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
? ? <filter-name>loggerfilter</filter-name>
? ? <servlet-name>loggerservlet</servlet-name>
</filter-mapping>
<servlet>
? ? <servlet-name>loggerservlet</servlet-name>
? ? <servlet-class>myfilter.LoggerServlet</servlet-class>
</servlet>


5 過濾指定文件(即單一文件)
<filter>
? ? <filter-name>loggerfilter</filter-name>
? ? <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
? ? <filter-name>loggerfilter</filter-name>
? ? <url-pattern>/simplefilter.html</url-pattern>
</filter-mapping>

6 ?過濾指定目錄下的指定類型的所有文件
這種情況下在web.xml中無法一次性配置完成,需要結合filter的實現類
首先在web.xml中配置過濾指定目錄下的所有文件
<filter>
? ? <filter-name>loggerfilter</filter-name>
? ? <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
? ? <filter-name>loggerfilter</filter-name>
? ? <url-pattern>/dir_name/*</url-pattern>
</filter-mapping>
然后在filter的實現類中的doFilter方法中獲取請求的uri或者url,判斷uri或者url中是否包含指定文件類型的字符串,決定是否過濾
//獲得用戶請求的uri
String uri = request.getRequestURI();
if(uri.contains(".jsp")||uri.contains(".html"))
System.out.println("開始過濾"+url);

7 ?過濾指定目錄下指定類型的單一文件
<filter>
? ? <filter-name>loggerfilter</filter-name>
? ? <filter-class>myfilter.LoggerFilter</filter-class>
</filter>
<filter-mapping>
? ? <filter-name>loggerfilter</filter-name>
? ? <url-pattern>/dir_name/index.jsp</url-pattern>
</filter-mapping>
以上都要注意是否有斜杠“/”



二、實例
不緩存文件
<filter>
? ? <filter-name>NoCache</filter-name>
? ? <filter-class>com.sys.common.Filters.ResponseHeaderFilter
? ? ? ? </filter-class>
? ? <init-param>
? ? ? <param-name>Cache-Control</param-name>
? ? ? <param-value>no-cache, must-revalidate</param-value>
? ? </init-param>
? </filter>

緩存文件一周
? <filter>
? ? <filter-name>CacheForWeek</filter-name>
? ? <filter-class>com.sys.common.Filters.ResponseHeaderFilter
? ? ? ? </filter-class>
? ? <init-param>
? ? ? <param-name>Cache-Control</param-name>
? ? ? <param-value>max-age=604800, public</param-value>
? ? </init-param>
? </filter>
<filter-mapping>
? ? <filter-name>CacheForWeek</filter-name>
? ? <url-pattern>/images/*</url-pattern>
? </filter-mapping>
? <filter-mapping>
? ? <filter-name>CacheForWeek</filter-name>
? ? <url-pattern>*.js</url-pattern>
? </filter-mapping>
? <filter-mapping>
? ? <filter-name>CacheForWeek</filter-name>
? ? <url-pattern>*.css</url-pattern>
? </filter-mapping>

自定義的filter:
public class ResponseHeaderFilter implements Filter {
? ? FilterConfig fc;
? ? public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException {
? ? ? ? HttpServletResponse response = (HttpServletResponse) res;
? ? ? ? for (Enumeration e = fc.getInitParameterNames(); e.hasMoreElements();) {
? ? ? ? ? ? String headerName = (String) e.nextElement();
? ? ? ? ? ? response.addHeader(headerName, fc.getInitParameter(headerName));
? ? ? ? }
? ? ? ? chain.doFilter(req, response);
? ? }

? ? public void init(FilterConfig filterConfig) {
? ? ? ? this.fc = filterConfig;
? ? }

? ? public void destroy() {
? ? ? ? this.fc = null;
? ? }

轉載于:https://www.cnblogs.com/yangmingyu/p/6908522.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/392632.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392632.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392632.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ERP流程入門_從會計分錄理解企業基本流程[轉]

ERP流程入門_從會計分錄理解企業基本流程 本貼寫給尚未在企業工作過的朋友&#xff01;了解企業的基本流程的一個方法是看它的會計分錄,我們現在來看一個完整的企業基本流程&#xff0c;它的會計分錄是如何做的&#xff0c;其中有些帳戶名稱可能不一樣&#xff0c;不過沒關系&a…

薩默爾機器人_助力產業發展 西安市人工智能機器人學會正式成立

8月23日&#xff0c;西安市人工智能機器人學會在西咸新區灃東新城協同創新港正式成立。西安報業全媒體記者 馮煒 攝8月23日&#xff0c;西安市人工智能機器人學會正式成立。學會將通過市場化機制、社會化服務等方式&#xff0c;整合科技創新資源和人才培養資源&#xff0c;促進…

粒度過粗_這些書幫助我度過了第一次成為技術主管的經歷

粒度過粗by Danny Perez丹尼佩雷斯(Danny Perez) 這些書幫助我度過了第一次成為技術主管的經歷 (These books helped me navigate my first time being a tech lead) The tech lead was moving to another team for a long-term assignment, and I took over as the engineeri…

隨便說說:在ASP.NET應用程序中上傳文件

在Web程序中上傳文件是很常見的需求。利用HTTP協議上傳文件的方式非常有限&#xff0c;最常見的莫過于使用<input type"file" />元素進行上傳。這種上傳方式會將內容使用multipart/form-data方案進行編碼&#xff0c;并將內容POST到服務器端。使用multipart/fo…

leetcode 148. 排序鏈表(歸并排序)

給你鏈表的頭結點 head &#xff0c;請將其按 升序 排列并返回 排序后的鏈表 。 進階&#xff1a; 你可以在 O(n log n) 時間復雜度和常數級空間復雜度下&#xff0c;對鏈表進行排序嗎&#xff1f; 示例 1&#xff1a; 輸入&#xff1a;head [4,2,1,3] 輸出&#xff1a;[1…

理論與哲學就是梳理無限感性經驗和知性知識的工具

理論與哲學就是梳理無限感性經驗和知性知識的工具&#xff0c; 是因為人腦的特性&#xff0c;或者說人腦功能的局限性而被人創造出來的思想工具。 工具服務于實踐&#xff0c;并被實踐所檢驗&#xff08;描述、解釋、預見&#xff09;。 工具一旦創建就有其客觀性&#xff0c;但…

記一次調用API遇到的問題

調用sonar API 接口&#xff0c;地址如下&#xff1a; http://sonar.*****.com/api/measures/search_history?componenttcmp-devops-service&metricssqale_index%2Cduplicated_lines_density%2Cncloc%2Ccoverage%2Cbugs%2Ccode_smells%2Cvulnerabilities&ps1000 url上…

h5滾動隱藏滾動條_這 10 個值得開啟的隱藏功能,讓你的 Chrome 釋放更多潛力

上次分享了讓 Chrome 瀏覽器用得更順手的地址欄命令&#xff0c;跟大家整理和介紹了多個 Chrome 地址欄命令&#xff0c;利用好這些命令工具能夠提升瀏覽器配置效率&#xff0c;讓你的 Chrome 瀏覽器用得更順手。這次介紹的是 Chrome 內置的實驗功能&#xff0c;它被單獨放在了…

redux ngrx_另一個減少Redux(NGRX)應用程序樣板的指南

redux ngrxby Andrey Goncharov通過安德烈貢恰洛夫(Andrey Goncharov) 另一個減少Redux(NGRX)應用程序樣板的指南 (Yet another guide to reduce boilerplate in your Redux (NGRX) app) 我們在這里要覆蓋什么&#xff1f; (What are we gonna cover here?) In this article,…

leetcode 242. 有效的字母異位詞

給定兩個字符串 s 和 t &#xff0c;編寫一個函數來判斷 t 是否是 s 的字母異位詞。 示例 1: 輸入: s “anagram”, t “nagaram” 輸出: true 示例 2: 輸入: s “rat”, t “car” 輸出: false 代碼 class Solution {public boolean isAnagram(String s, String t) {…

技巧:使用User Control做HTML生成

User Control大家肯定不會陌生&#xff0c;在使用ASP.NET的過程中&#xff0c;除了aspx頁面&#xff0c;最常見的就莫過于ascx了。ascx是一個有獨立邏輯的組件&#xff0c;提供了強大的復用特性&#xff0c;合理使用&#xff0c;能夠大大提高開發效率。通過User Control直接生成…

Spring Boot干貨系列:(二)配置文件解析

前言 上一篇介紹了Spring Boot的入門&#xff0c;知道了Spring Boot使用“習慣優于配置”&#xff08;項目中存在大量的配置&#xff0c;此外還內置了一個習慣性的配置&#xff0c;讓你無需手動進行配置&#xff09;的理念讓你的項目快速運行起來。所以&#xff0c;我們要想把S…

mysql常用操作記錄

&#xff08;1&#xff09;判斷表中一個字段是空&#xff0c;可為&#xff1a;字段名 IS NULL&#xff08;2&#xff09;類似oracle的decode作用&#xff1a;IF(字段名>0,字段名,0)&#xff08;3&#xff09;時間格式&#xff08;年-月-日&#xff09;&#xff1a;DATE_FORM…

小愛音響調用php接口_阿里API調用二(PHP)

接口地址拼合成功后&#xff0c;用curl函數post獲取阿里返回的完整數據&#xff0c;將地址傳入getContent()方法中&#xff0c;絕對能獲取用戶數據。public function getContent($url){$ch curl_init();// 初始化curl_setopt($ch,CURLOPT_URL,$apiprourlall);curl_setopt($ch,…

leetcode 452. 用最少數量的箭引爆氣球(貪心算法)

在二維空間中有許多球形的氣球。對于每個氣球&#xff0c;提供的輸入是水平方向上&#xff0c;氣球直徑的開始和結束坐標。由于它是水平的&#xff0c;所以縱坐標并不重要&#xff0c;因此只要知道開始和結束的橫坐標就足夠了。開始坐標總是小于結束坐標。 一支弓箭可以沿著 x…

javascript編程題_如何開始使用JavaScript進行競爭性編程

javascript編程題by Priyabrata Biswas通過Priyabrata Biswas 如何開始使用JavaScript進行競爭性編程 (How to get started with Competitive Programming in JavaScript) If you’re not familiar with competitive programming, basically it is a mind sport with the aim …

hibernate Criteria(條件查詢接口)

Criteria&#xff08;條件查詢接口&#xff09; // 1.簡單查詢 List<Customer> list session.createCriteria(Customer.class).list();// 2.條件查詢: Criteria criteria session.createCriteria(Customer.class); criteria.add(Restrictions.eq("name",&quo…

ElastciSearch簡單總結(筆記)

前言&#xff1a; 前段時間在項目中使用了es,作為一個當前比較流行的分布式搜索引擎&#xff0c;在學習和使用它的過程中&#xff0c;踩了不少坑&#xff0c;這篇文章先簡單整理了一下&#xff0c;后續會整理一下之前踩過的一些坑。 1. ElastciSearch是什么 ElasticSearch是一…

記一次ArrayList產生的線上OOM問題

前言&#xff1a;本以為(OutOfMemoryError)OOM問題會離我們很遠&#xff0c;但在一次生產上線灰度的過程中就出現了Java.Lang.OutOfMemoryError:Java heap space異常&#xff0c;通過對線上日志的查看&#xff0c;最終定位到ArrayList#addAll方法中&#xff0c;出現這個問題的原…

leetcode 222. 完全二叉樹的節點個數(dfs)

給出一個完全二叉樹&#xff0c;求出該樹的節點個數。說明&#xff1a;完全二叉樹的定義如下&#xff1a;在完全二叉樹中&#xff0c;除了最底層節點可能沒填滿外&#xff0c;其余每層節點數都達到最大值&#xff0c;并且最下面一層的節點都集中在該層最左邊的若干位置。若最底…