Java Filter——敏感词汇过滤
Filter的簡介
Filter也稱之為過濾器,它是Servlet技術(shù)中最實用的技術(shù),Web開發(fā)人員通過Filter技術(shù),對web服務(wù)器管理的所有web資源:例如Jsp, Servlet, 靜態(tài)圖片文件或靜態(tài) html 文件等進(jìn)行攔截,從而實現(xiàn)一些特殊的功能。例如實現(xiàn)URL級別的權(quán)限訪問控制、過濾敏感詞匯、壓縮響應(yīng)信息等一些高級功能。
它主要用于對用戶請求進(jìn)行預(yù)處理,也可以對HttpServletResponse進(jìn)行后處理。使用Filter的完整流程:Filter對用戶請求進(jìn)行預(yù)處理,接著將請求交給Servlet進(jìn)行處理并生成響應(yīng),最后Filter再對服務(wù)器響應(yīng)進(jìn)行后處理。
詳解可參考Java中的Filter過濾器
Filter的配置
Filter的配置有兩種方式
1.注解配置方式:注解配置方式要Servlet3.0才開始提供,使用@WebFilter進(jìn)行配置
2.使用web.xml進(jìn)行配置
分享
今天分享是敏感詞匯過濾的Filter,代碼實現(xiàn)采用的注解配置方式。為了實例方便,此次敏感詞匯只用了List數(shù)組存儲兩個,但是在實際的開發(fā)中這種方法是不可取的,其他的方法為:可以在src的目錄下,建立一個txt文件,文件中存敏感詞匯或者直接用將敏感詞匯存入數(shù)據(jù)庫(建議使用)
分析
對請求數(shù)據(jù)進(jìn)行過濾,需要取出request對象中的parameter,然后在設(shè)置parameter,但是request對象的方法中并沒有setParameter()方法,因此,我們需要對增強(qiáng)request對象,通過動態(tài)代理的方法增強(qiáng)request對象
以下為Filter的代碼:
功能:過濾“壞蛋”、“笨蛋”。若發(fā)現(xiàn)請求參數(shù)中有列出的詞匯則把相應(yīng)的詞匯用“***”代替
為了測試Filter的正確性,可以建一個TestServlet進(jìn)行測試
代碼如下
package action;import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class TestServlet*/ @WebServlet("/testServlet") public class TestServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public TestServlet() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String name = request.getParameter("name");String msg= request.getParameter("msg");System.out.println("name"+name+"msg"+msg);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}}啟動服務(wù)器之后直接訪問:http://localhost:8080/testServlet?name="壞蛋"&msg="你的是一個笨蛋"
可以看到控制臺打印出了過濾后的結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的Java Filter——敏感词汇过滤的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: opencv rect画旋转矩形_在op
- 下一篇: Java飞机大战项目实战