JavaEE Filter敏感詞過濾的方法實例詳解
我們在聊天的時候的或者留言的時候,有部分詞是不允許發(fā)表出來。我們可以采用過濾器實現(xiàn)這個功能。
我們只是簡單利用過濾器實現(xiàn)這個過濾的功能,有些地方?jīng)]寫的很全
前臺代碼:
<body> <form action="<c:url value='/WordServlet'/>" method="post"> 姓名:<input type="text" name="name"/><br/> 留言內容:<textarea rows="10" cols="10" name="textarea"></textarea><br/> <input type="submit" value="提交"/> </form> </body>
Servlet里面的代碼:
僅僅只是把從前臺收的數(shù)據(jù)讀取出來。看里面的敏感詞是都過濾。
代碼:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name =request.getParameter("name");//名字 String text=request.getParameter("textarea");//瀏覽內容 PrintWriter pw =response.getWriter(); pw.println("name="+name);//這里直接輸出,僅僅只是為了查看能否過濾那些關鍵字。。 pw.print("內容"+text); }
過濾器:
過濾的作用就可以體現(xiàn)了,過濾器的是在客戶端訪問服務器的之間進行攔截的。
我們知道過濾器能夠控制request和response,所以我們能夠對這個進行下手。
從客戶端請求是request,所以我們只需要在半路將其攔截,修改里面的值就可以實現(xiàn)過濾了。采用了包裝的設計模式;
過濾器代碼:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req=(HttpServletRequest) request; MyFilter myf =new MyFilter(req); chain.doFilter(myf, response);//采勇我們加強的類的request,傳給后面的servlet使用 }
自己手動寫一個myFilter類來修改里面我們需要用到的函數(shù)。
class MyFilter extends HttpServletRequestWrapper{ //這是采用包裝模式 public MyFilter(HttpServletRequest request) { super(request); } @Override //從寫這個方法 public String getParameter(String name) { String words =super.getParameter(name); System.out.println(words);//過濾前的文字 List<String> list=WordUtils.getword(); for(String ll:list){ words=words.replace(ll, "*");//敏感詞匯采用**代替 } return words; }
為了方便維護,我們的敏感詞匯的獲取專門寫了一個工具,方便取,當然也方便管理員添加進去。
public class WordUtils { //采用單例模式 private static List<String> list =new ArrayList<String>();//我們可以從這訪問數(shù)據(jù)庫中存的敏感詞匯,封裝成list返回 static {//手動添加幾個 list.add("坑貨"); list.add("罵人"); list.add("傻"); } public static List<String> getword(){ return list; } public static void addWord(String name){ list.add(name); } public static void sava(){ //這里可以list里面的數(shù)據(jù)存到數(shù)據(jù)庫中,方便維護,當然也可以寫增刪改查等 }
在這里,只要含有這個詞的,全部會變成*
效果圖;
總結:過濾器的強大,可以修改request和response對象一起,你需要調什么函數(shù),我們就可以采用包裝設計模式的方式修改這個函數(shù),變成我們想要的效果,這個和代理設計模式有點類似。
以上所述是小編給大家介紹的使用JavaEE filter 過濾敏感詞的方法的相關知識,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關文章
SpringBoot?AOP統(tǒng)一處理Web請求日志的示例代碼
springboot有很多方法處理日志,例如攔截器,aop切面,service中代碼記錄等,下面這篇文章主要給大家介紹了關于SpringBoot?AOP統(tǒng)一處理Web請求日志的相關資料,需要的朋友可以參考下2023-02-02利用線程實現(xiàn)動態(tài)顯示系統(tǒng)時間
編寫Applet小程序,通過在HTML文檔中接收參數(shù),顯示當前的系統(tǒng)時間,需要的朋友可以參考下2015-10-10Spring security 自定義過濾器實現(xiàn)Json參數(shù)傳遞并兼容表單參數(shù)(實例代碼)
這篇文章主要介紹了Spring security 自定義過濾器實現(xiàn)Json參數(shù)傳遞并兼容表單參數(shù),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01一文掌握Spring?中?@Component?和?@Bean?區(qū)別(最新推薦)
?@Component?用于標識一個普通的類,@Bean用于配置類里面,在方法上面聲明和配置?Bean?對象,這篇文章主要介紹了Spring?中?@Component?和?@Bean?區(qū)別(最新推薦),需要的朋友可以參考下2024-04-04SpringBoot實現(xiàn)redis延遲隊列的示例代碼
延時隊列場景在我們日常業(yè)務開發(fā)中經(jīng)常遇到,它是一種特殊類型的消息隊列,本文就來介紹一下SpringBoot實現(xiàn)redis延遲隊列的示例代碼,具有一定的參考價值,感興趣的可以了解一下2024-02-02