Java Filter——敏感词汇过滤
Filter的簡(jiǎn)介
Filter也稱之為過(guò)濾器,它是Servlet技術(shù)中最實(shí)用的技術(shù),Web開(kāi)發(fā)人員通過(guò)Filter技術(shù),對(duì)web服務(wù)器管理的所有web資源:例如Jsp, Servlet, 靜態(tài)圖片文件或靜態(tài) html 文件等進(jìn)行攔截,從而實(shí)現(xiàn)一些特殊的功能。例如實(shí)現(xiàn)URL級(jí)別的權(quán)限訪問(wèn)控制、過(guò)濾敏感詞匯、壓縮響應(yīng)信息等一些高級(jí)功能。
它主要用于對(duì)用戶請(qǐng)求進(jìn)行預(yù)處理,也可以對(duì)HttpServletResponse進(jìn)行后處理。使用Filter的完整流程:Filter對(duì)用戶請(qǐng)求進(jìn)行預(yù)處理,接著將請(qǐng)求交給Servlet進(jìn)行處理并生成響應(yīng),最后Filter再對(duì)服務(wù)器響應(yīng)進(jìn)行后處理。
詳解可參考Java中的Filter過(guò)濾器
Filter的配置
Filter的配置有兩種方式
1.注解配置方式:注解配置方式要Servlet3.0才開(kāi)始提供,使用@WebFilter進(jìn)行配置
2.使用web.xml進(jìn)行配置
分享
今天分享是敏感詞匯過(guò)濾的Filter,代碼實(shí)現(xiàn)采用的注解配置方式。為了實(shí)例方便,此次敏感詞匯只用了List數(shù)組存儲(chǔ)兩個(gè),但是在實(shí)際的開(kāi)發(fā)中這種方法是不可取的,其他的方法為:可以在src的目錄下,建立一個(gè)txt文件,文件中存敏感詞匯或者直接用將敏感詞匯存入數(shù)據(jù)庫(kù)(建議使用)
分析
對(duì)請(qǐng)求數(shù)據(jù)進(jìn)行過(guò)濾,需要取出request對(duì)象中的parameter,然后在設(shè)置parameter,但是request對(duì)象的方法中并沒(méi)有setParameter()方法,因此,我們需要對(duì)增強(qiáng)request對(duì)象,通過(guò)動(dòng)態(tài)代理的方法增強(qiáng)request對(duì)象
以下為Filter的代碼:
功能:過(guò)濾“壞蛋”、“笨蛋”。若發(fā)現(xiàn)請(qǐng)求參數(shù)中有列出的詞匯則把相應(yīng)的詞匯用“***”代替
為了測(cè)試Filter的正確性,可以建一個(gè)TestServlet進(jìn)行測(cè)試
代碼如下
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);}}啟動(dòng)服務(wù)器之后直接訪問(wèn):http://localhost:8080/testServlet?name="壞蛋"&msg="你的是一個(gè)笨蛋"
可以看到控制臺(tái)打印出了過(guò)濾后的結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的Java Filter——敏感词汇过滤的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: opencv rect画旋转矩形_在op
- 下一篇: java美元兑换,(Java实现) 美元