国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

JavaEE Filter敏感詞過濾的方法實(shí)例詳解

2019-11-26 14:19:20
字體:
供稿:網(wǎng)友

 我們?cè)诹奶斓臅r(shí)候的或者留言的時(shí)候,有部分詞是不允許發(fā)表出來。我們可以采用過濾器實(shí)現(xiàn)這個(gè)功能。

我們只是簡(jiǎn)單利用過濾器實(shí)現(xiàn)這個(gè)過濾的功能,有些地方?jīng)]寫的很全

前臺(tái)代碼:

<body> <form action="<c:url value='/WordServlet'/>" method="post"> 姓名:<input type="text" name="name"/><br/> 留言內(nèi)容:<textarea rows="10" cols="10" name="textarea"></textarea><br/> <input type="submit" value="提交"/> </form> </body> 

Servlet里面的代碼:

僅僅只是把從前臺(tái)收的數(shù)據(jù)讀取出來。看里面的敏感詞是都過濾。

代碼:

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name =request.getParameter("name");//名字 String text=request.getParameter("textarea");//瀏覽內(nèi)容 PrintWriter pw =response.getWriter(); pw.println("name="+name);//這里直接輸出,僅僅只是為了查看能否過濾那些關(guān)鍵字。。 pw.print("內(nèi)容"+text); }

過濾器:

過濾的作用就可以體現(xiàn)了,過濾器的是在客戶端訪問服務(wù)器的之間進(jìn)行攔截的。

我們知道過濾器能夠控制request和response,所以我們能夠?qū)@個(gè)進(jìn)行下手。

從客戶端請(qǐng)求是request,所以我們只需要在半路將其攔截,修改里面的值就可以實(shí)現(xiàn)過濾了。采用了包裝的設(shè)計(jì)模式;

過濾器代碼:

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);//采勇我們加強(qiáng)的類的request,傳給后面的servlet使用 } 

自己手動(dòng)寫一個(gè)myFilter類來修改里面我們需要用到的函數(shù)。

class MyFilter extends HttpServletRequestWrapper{ //這是采用包裝模式 public MyFilter(HttpServletRequest request) { super(request); } @Override //從寫這個(gè)方法 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; } 

為了方便維護(hù),我們的敏感詞匯的獲取專門寫了一個(gè)工具,方便取,當(dāng)然也方便管理員添加進(jìn)去。

public class WordUtils { //采用單例模式 private static List<String> list =new ArrayList<String>();//我們可以從這訪問數(shù)據(jù)庫中存的敏感詞匯,封裝成list返回 static {//手動(dòng)添加幾個(gè) 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ù)庫中,方便維護(hù),當(dāng)然也可以寫增刪改查等 } 

在這里,只要含有這個(gè)詞的,全部會(huì)變成*

效果圖;


總結(jié):過濾器的強(qiáng)大,可以修改request和response對(duì)象一起,你需要調(diào)什么函數(shù),我們就可以采用包裝設(shè)計(jì)模式的方式修改這個(gè)函數(shù),變成我們想要的效果,這個(gè)和代理設(shè)計(jì)模式有點(diǎn)類似。

以上所述是小編給大家介紹的使用JavaEE filter 過濾敏感詞的方法的相關(guān)知識(shí),希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)武林網(wǎng)網(wǎng)站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 鹤壁市| 文山县| 南靖县| 育儿| 广宁县| 遵义县| 鄄城县| 白银市| 麻城市| 庄河市| 南昌县| 洞口县| 原阳县| 喀什市| 双柏县| 盖州市| 洮南市| 富平县| 瑞昌市| 新乐市| 大理市| 东港市| 喀喇沁旗| 霸州市| 高密市| 华容县| 潜山县| 罗甸县| 乃东县| 荔波县| 霞浦县| 通化县| 花莲县| 措勤县| 宜州市| 临城县| 桐庐县| 乌兰察布市| 乌海市| 无锡市| 穆棱市|