亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2024年07月24日 17:17:02   作者:YX_blog  
我們無論是在聊天還是在留言時(shí),都有一些信息不希望別人看到。那么如果過濾這些關(guān)鍵詞呢?下面小編給大家分享JavaEE Filter敏感詞過濾的方法實(shí)例詳解,感興趣的朋友一起學(xué)習(xí)吧

 我們?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)站的支持!

相關(guān)文章

最新評(píng)論