JSP過(guò)濾器Filter配置過(guò)濾類型全部匯總
一、配置方法
1 映射過(guò)濾應(yīng)用程序中所有資源
<filter> <filter-name>loggerfilter</filter-name> <filter-class>myfilter.LoggerFilter</filter-class> </filter> <filter-mapping> <filter-name>loggerfilter</filter-name> <url-pattern>/*</url-pattern> //訪問(wèn)當(dāng)前主機(jī),當(dāng)前應(yīng)用程序根下的所有文件包括多級(jí)子目錄下的所有文件,注意這里*前有“/” </filter-mapping>
2 過(guò)濾指定的類型文件資源
<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> //訪問(wèn)當(dāng)前主機(jī),當(dāng)前應(yīng)用程序根目錄下的所有html文件,注意:*.html前沒(méi)有“/”,否則錯(cuò)誤 </filter-mapping>
其中*.html要過(guò)濾jsp那么就改*.html為*.jsp,但是注意沒(méi)有“/”斜杠。如果要同時(shí)過(guò)濾多種類型資源:
方法1 url-pattern 分開(kāi)寫(xiě)
<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>//訪問(wèn)當(dāng)前主機(jī),當(dāng)前應(yīng)用程序根目錄以所有及子目錄下的所有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兩類型之間用分號(hào);間隔
3 過(guò)濾指定的目錄下的所有文件
<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>//訪問(wèn)當(dāng)前主機(jī),當(dāng)前應(yīng)用程序根目錄下的folder_name子目錄(可是多級(jí)子目錄)下所有文件 </filter-mapping>
4 過(guò)濾指定的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 過(guò)濾指定文件(即單一文件)
<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 過(guò)濾指定目錄下的指定類型的所有文件
這種情況下在web.xml中無(wú)法一次性配置完成,需要結(jié)合filter的實(shí)現(xiàn)類
首先在web.xml中配置過(guò)濾指定目錄下的所有文件
<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的實(shí)現(xiàn)類中的doFilter方法中獲取請(qǐng)求的uri或者url,判斷uri或者url中是否包含指定文件類型的字符串,決定是否過(guò)濾
//獲得用戶請(qǐng)求的uri String uri = request.getRequestURI(); if(uri.contains(".jsp")||uri.contains(".html")) System.out.println("開(kāi)始過(guò)濾"+url);
7 過(guò)濾指定目錄下指定類型的單一文件
<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>
以上都要注意是否有斜杠“/”
二、實(shí)例
不緩存文件
<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; } }
以上這篇JSP過(guò)濾器Filter配置過(guò)濾類型全部匯總就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 通過(guò)過(guò)濾器(Filter)解決JSP的Post和Request中文亂碼問(wèn)題
- JSP 開(kāi)發(fā)中過(guò)濾器filter設(shè)置編碼格式的實(shí)現(xiàn)方法
- JSP使用Servlet過(guò)濾器進(jìn)行身份驗(yàn)證的方法
- JSP過(guò)濾器防止Xss漏洞的實(shí)現(xiàn)方法(分享)
- JSP使用過(guò)濾器防止SQL注入的簡(jiǎn)單實(shí)現(xiàn)
- jsp實(shí)現(xiàn)登錄驗(yàn)證的過(guò)濾器
- jsp中過(guò)濾器選擇過(guò)濾器的寫(xiě)法詳解
- 詳解JSP中使用過(guò)濾器進(jìn)行內(nèi)容編碼的解決辦法
- servlet+jsp實(shí)現(xiàn)過(guò)濾器 防止用戶未登錄訪問(wèn)
- JSP使用過(guò)濾器防止Xss漏洞
- jsp filter 過(guò)濾器功能與簡(jiǎn)單用法示例
相關(guān)文章
Jsp+Servlet實(shí)現(xiàn)文件上傳下載 文件列表展示(二)
這篇文章主要為大家詳細(xì)介紹了Jsp+Servlet實(shí)現(xiàn)文件上傳下載功能的第二部分,文件列表展示,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01ajax+json+Struts2實(shí)現(xiàn)list傳遞實(shí)例講解
應(yīng)付學(xué)習(xí)需要,需要通過(guò)ajax來(lái)獲取后臺(tái)的List集合里面的值,特做了一個(gè)實(shí)例并附上演示效果,希望本例對(duì)你有所幫助2013-04-04Java之JSP教程九大內(nèi)置對(duì)象詳解(上篇)
這篇文章主要介紹了Java之JSP教程九大內(nèi)置對(duì)象詳解(上篇),本文章內(nèi)容詳細(xì),通過(guò)案例可以更好的理解JSP內(nèi)置對(duì)象的相關(guān)知識(shí),本模塊分為了三部分,本次為上篇,講解了三個(gè)內(nèi)容,需要的朋友可以參考下2023-01-01JSP實(shí)現(xiàn)登錄功能之添加驗(yàn)證碼
jsp登陸驗(yàn)證,網(wǎng)頁(yè)登陸驗(yàn)證帶驗(yàn)證碼校驗(yàn),登錄功能之添加驗(yàn)證碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2016-12-12JSP連接MySql/MS SQL Server/Oracle數(shù)據(jù)庫(kù)連接方法[整理]
這個(gè)經(jīng)常整理更新2008-10-10