日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JSP过滤器Filter配置过滤类型汇总

發布時間:2023/11/30 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

總結

以上是生活随笔為你收集整理的JSP过滤器Filter配置过滤类型汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。