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