java過濾器——filter的使用和配置
在做DRP的過程中用到了filter。前幾天昌哥和歡姐在小會議室向我們介紹了AOP的思想,用到filter時覺得它們兩者特別相似。
如下圖:
javaweb開發中,request和response是兩個必不可少的物件,他們是在接收到每一次客戶端請求後,由web伺服器產生的。filter可以在request到達servlet之前和response即離開servlet時分別對它們進行處理。
filter常常用於網站過濾敏感詞彙、設定字符集、日誌等比較“公共性”的事件處理中。
在我們正常的程式設計中,每一條線,都是從上到下依次呼叫,而filter是在每一個完整的呼叫中橫著“切了一刀”。通過配置,它可以對任意程式碼路徑進行過濾。
這裡以轉碼/設定字符集為例,簡單瞭解一下如何使用filter。
建立Filter
CharsetEncodingFilter.java
package com.drp.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; /**採用filter統一處理filter * @author Danny * */ public class CharsetEncodingFilter implements Filter { @Override public void destroy() {} @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("CharsetEncodingFilter---->>>>Filter開始"); request.setCharacterEncoding("utf-8"); //設定字符集 chain.doFilter(request, response); //繼續執行 System.out.println("CharsetEncodingFilter---->>>>Filter結束"); } @Override public void init(FilterConfig config) throws ServletException {} }
此過濾器CharsetEncodingFilter實現了javax.servlet.Filter介面(任何filter過濾器也必須實現這個介面);在伺服器建立此filter並進行初始化執行init方法時,讀取配置檔案並存入FilterConfigure的物件中;實現doFilter方法,在請求到達jsp之前將字符集編碼設定為utf-8,chain.doFiler()方法的作用是在對request物件進行處理之後,跳轉到被攔截的servlet繼續執行,執行完之後還要回到此處,chain.doFilter()下面還可以對response物件進行處理。
配置filter
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<filter>
<filter-name>CharsetEncodingFilter</filter-name>
<filter-class>com.drp.filter.CharsetEncodingFilter</filter-class>
</filter>
<filter-mapping><!-- 此filter對所有的jsp頁面都有過濾效果 -->
<filter-name>CharsetEncodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
</web-app>
此處配置所起的作用是,此filter對所有的jsp頁面都有設定字符集的效果,當每次訪問jsp頁面時,都會執行filter中的doFilter()方法,因此每次訪問jsp頁面前後,都可以在Console中看到doFilter方法輸出的 “ CharsetEncodingFilter---->>>>Begin ” 和 “CharsetEncodingFilter---->>>>End ”。
除此之外還有其他幾種對filter作用域配置的方式:
對所有的物件都有過濾效果
<filter-mapping>
<filter-name>CharsetEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
對sysmgr下的所有物件都有過濾效果,無論是servlet還是jsp<filter-mapping>
<filter-name>CharsetEncodingFilter</filter-name>
<url-pattern>/sysmgr/*</url-pattern>
</filter-mapping>
只對指定的servlet具有過濾效果<filter-mapping>
<filter-name>CharsetEncodingFilter</filter-name>
<url-pattern>/servlet/LoginServlet</url-pattern>
</filter-mapping>
至此,無論訪問哪個jsp頁面,都會事先設定其字符集,不用分別對每個頁面都進行設定了。
相關推薦
java過濾器——filter的使用和配置
在做DRP的過程中用到了filter。前幾天昌哥和歡姐在小會議室向我們介紹了AOP的思想,用到filter時覺得它們兩者特別相似。 如下圖:
Java過濾器Filter的原理及配置_學習筆記
ava .cn -1 求和 pattern 資源 分享 java過濾器 服務器 Filter中文意思為過濾器。顧名思義,過濾器可在瀏覽器以及目標資源之間起到一個過濾的作用。例如:水凈化器,可以看成是生活中的一個過濾器,他可以將汙水中的雜質過濾,從而使進入的汙水變成凈水。 對
java開發以太坊過濾器(filter)和智能合約事件(event)
java web3j filter event 以太坊 ethereum 區塊鏈 智能合約 過濾器 事件 web3j過濾器提供以太坊網絡發生的某些事件的通知,對java和安卓程序員來說很有用。在Ethereum以太坊中支持三類過濾器:
java 過濾器Filter中chain.doFilter()之前和之後程式碼的執行順序
過濾器攔截到請求之後,首先是執行doFilter()方法中chain.doFilter()之前的程式碼,然後放棄許可權給下一個過濾器或者serverlet等等,最後才執行chain.doFilter()之後的程式碼。 測試場景: 1.新建一個index.html,配置連線調整到一個test.
SpringBoot2.x過濾器Filter和使用Servlet3.0配置自定義Filter實戰
補充:SpringBoot啟動日誌 1、深入SpringBoot2.x過濾器Filter和使用Servlet3.0配置自定義Filter實戰(核心知識) 簡介:講解SpringBoot裡面Filter講解和使用Servlet3.0配置自定義Filter實戰 filter簡單理解:人--->
SpringBoot系列過濾器filter和監聽器listener配置
一、過濾器 1、新建過濾器類實現Filter介面 package com.jd.m.tg.filter; import org.slf4j.Logger; import org.slf4j.Log
過濾器Filter在配置文件中不起作用
-c 文件夾 -name 都是 文件中 不起作用 gin utl 項目 web.xml內容 <filter> <filter-name>LoginFilter</filter-name> <filter-class>com.s
java過濾器Filter筆記
意義 執行 cut rup 過濾器 sch www 內容 map 一、Filter簡介 Filter也稱之為過濾器,它是Servlet技術中最激動人心的技術之一,WEB開發人員通過Filter技術,對web服務器管理的所有web資源:例如Jsp,Servlet, 靜態圖片
Java的安裝和配置環境變數
1.安裝 下載網址:www.oracle.com 配置Java環境變數
Java過濾器Filter使用詳解(轉載自別人的文章,感覺很不錯,適合我這樣的小白)
Java過濾器Filter使用詳解 轉載請註明原文地址:http://www.cnblogs.com/ygj0930/p/6374212.html 在我的專案中有具體應用:https://github.com/ygj0930/CoupleSpace
java 過濾器(Filter)
java過濾器有很多用處比如:一些需要過濾器的情況: (1)認證Filter (2)日誌和稽核Filter (3)圖片轉換Filter &nbs
JDK(JAVA)的安裝和配置
一、下載jdk 下載jdk可以去官網下載,百度裡搜尋會有一大堆,jdk1.6,jdk1.7,jdk1.8都可以, 選擇跟自己電腦操作版本匹配的64位或者32位 官網地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-download
[Java 18_002] Filter 和 Interceptor
首先,在 JSP / Servlet 規範中,只定義了 Servlet,Filter,和 Listener;並沒有定義 Interceptor。Interceptor 是某些 MVC 框架中的角色。 Servlet,Filter,Listener 定義在 web.xml 中;而 In
過濾器filter和監聽器listener
File 過濾器的作用 過濾器使用的場景: 一段程式碼重複的在某個地方出現 使用過濾器的步驟: 1.開發一個過濾器 2.指定過濾的條件,和路徑 配置 web.xm
Java過濾器Filter詳解
一、過濾器的定義: 過濾器是處於客戶端與伺服器資原始檔之間的一道過濾網,在訪問資原始檔之前,通過一系列的過濾器對請求進行修改、判斷等,把不符合規則的請求在中途攔截或修改。也可以對響應進行過濾,攔截或修改響應。 如圖,瀏覽器發出的請求先遞交給第一個filter進行過濾,符合規則則放行
防止常見XSS 過濾 SQL注入 JAVA過濾器filter
XSS : 跨站指令碼攻擊(Cross Site Scripting),為不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站指令碼攻擊縮寫為XSS。惡意攻擊者往Web頁面裡插入惡意html程式碼,當用戶瀏覽該頁之時,嵌入其中Web裡
使用命令列進行java版本檢視和配置測試
命令列的使用 Java版本和配置測試: 先開啟所在檔案: 刪除.class檔案: 編譯執行: 需要注意的是,在命令列執行程式時,不能使用副檔名.class。要用java clas
web3j開發以太坊過濾器(filter)和智慧合約事件(event)
web3j過濾器提供以太坊網路發生的某些事件的通知,對java和安卓程式設計師來說很有用。在Ethereum以太坊中支援三類過濾器: 塊濾波器(Block filters) 未決交易過濾器(Pending transaction filters) 主題過濾器(Topic
Linux下安裝java的jdk和配置環境變數
每次感覺配這個超級簡單 但是每次都要查下 記一下好了 Linux下安裝jdk,步驟如下 1:下載jdk包:本章使用的為字尾為tar.gz的檔案(不需要安裝),如jdk-8u111-linux-x64.tar.gz 下載RPM包: wget --no-check-certificate --no-co
tomcat全域性過濾器Filter和專案的過濾器Filter載入順序問題
目前需求是用tomcat下的conf/web.xml做全域性Filter.但是發現頁面請求都優先進入了專案WEB-INF/web.xml的filter中去.按理說多filter的執行順序是按照宣告順序來進行的,可是像這種