JavaEE Filter敏感詞過(guò)濾的方法實(shí)例詳解
我們?cè)诹奶斓臅r(shí)候的或者留言的時(shí)候,有部分詞是不允許發(fā)表出來(lái)。我們可以采用過(guò)濾器實(shí)現(xiàn)這個(gè)功能。
我們只是簡(jiǎn)單利用過(guò)濾器實(shí)現(xiàn)這個(gè)過(guò)濾的功能,有些地方?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ù)讀取出來(lái)??蠢锩娴拿舾性~是都過(guò)濾。
代碼:
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ò)濾那些關(guān)鍵字。。
pw.print("內(nèi)容"+text);
}過(guò)濾器:
過(guò)濾的作用就可以體現(xiàn)了,過(guò)濾器的是在客戶端訪問(wèn)服務(wù)器的之間進(jìn)行攔截的。
我們知道過(guò)濾器能夠控制request和response,所以我們能夠?qū)@個(gè)進(jìn)行下手。
從客戶端請(qǐng)求是request,所以我們只需要在半路將其攔截,修改里面的值就可以實(shí)現(xiàn)過(guò)濾了。采用了包裝的設(shè)計(jì)模式;
過(guò)濾器代碼:
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類來(lái)修改里面我們需要用到的函數(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);//過(guò)濾前的文字
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>();//我們可以從這訪問(wèn)數(shù)據(jù)庫(kù)中存的敏感詞匯,封裝成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ù)庫(kù)中,方便維護(hù),當(dāng)然也可以寫增刪改查等
} 在這里,只要含有這個(gè)詞的,全部會(huì)變成*
效果圖;

總結(jié):過(guò)濾器的強(qiáng)大,可以修改request和response對(duì)象一起,你需要調(diào)什么函數(shù),我們就可以采用包裝設(shè)計(jì)模式的方式修改這個(gè)函數(shù),變成我們想要的效果,這個(gè)和代理設(shè)計(jì)模式有點(diǎn)類似。
以上所述是小編給大家介紹的使用JavaEE filter 過(guò)濾敏感詞的方法的相關(guān)知識(shí),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- JavaWeb中的filter過(guò)濾敏感詞匯案例詳解
- java利用DFA算法實(shí)現(xiàn)敏感詞過(guò)濾功能
- Java實(shí)現(xiàn)DFA算法對(duì)敏感詞、廣告詞過(guò)濾功能示例
- Java實(shí)戰(zhàn)之敏感詞過(guò)濾器
- JAVA使用前綴樹(Tire樹)實(shí)現(xiàn)敏感詞過(guò)濾、詞典搜索
- Java使用DFA算法實(shí)現(xiàn)敏感詞過(guò)濾的示例代碼
- Java 過(guò)濾器實(shí)現(xiàn)敏感詞匯過(guò)濾功能
- Java數(shù)據(jù)敏感詞轉(zhuǎn)換成符號(hào)的方法詳解
- Java 敏感詞檢測(cè)工具的實(shí)現(xiàn)
相關(guān)文章
springboot整合 xxl-job的項(xiàng)目實(shí)踐
XL-JOB是一個(gè)分布式任務(wù)調(diào)度平臺(tái),用于解決分布式系統(tǒng)中的任務(wù)調(diào)度和管理問(wèn)題,它包括調(diào)度中心、執(zhí)行器和Web管理控制臺(tái),本文就來(lái)介紹一下springboot整合 xxl-job的項(xiàng)目實(shí)踐,感興趣的可以了解一下2024-09-09
SpringCloud3.x集成BigQuery的代碼實(shí)現(xiàn)
Google BigQuery 是一種高性能、可應(yīng)用于大數(shù)據(jù)分析的公主云數(shù)據(jù)庫(kù)服務(wù),Spring Cloud 提供了完善的工具和核心功能,可以進(jìn)行泛動(dòng)分布應(yīng)用構(gòu)建,本文給大家介紹了SpringCloud3.x集成BigQuery的代碼實(shí)現(xiàn),需要的朋友可以參考下2025-01-01
一篇文章帶你了解JAVA面對(duì)對(duì)象應(yīng)用
Java是一門面向?qū)ο蟮恼Z(yǔ)言。對(duì)象是Java程序中的基本實(shí)體。除了對(duì)象之外Java程序同樣處理基本數(shù)據(jù)。下面這篇文章主要給大家總結(jié)了關(guān)于Java中面向?qū)ο蟮闹R(shí)點(diǎn),需要的朋友可以參考借鑒,下面來(lái)一起看看吧2021-08-08
ThreadPoolExecutor中的submit()方法詳細(xì)講解
在使用線程池的時(shí)候,發(fā)現(xiàn)除了execute()方法可以執(zhí)行任務(wù)外,還發(fā)現(xiàn)有一個(gè)方法submit()可以執(zhí)行任務(wù),本文就詳細(xì)的介紹一下ThreadPoolExecutor中的submit()方法,具有一定的參考價(jià)值,感興趣的可以了解一下2022-04-04
Java8新特性之重復(fù)注解(repeating annotations)淺析
這篇文章主要介紹了Java8新特性之重復(fù)注解(repeating annotations)淺析,這個(gè)新特性只是修改了程序的可讀性,是比較小的一個(gè)改動(dòng),需要的朋友可以參考下2014-06-06
Spring?Cloud?Gateway集成Sentinel流控詳情
這篇文章主要介紹了Spring?Cloud?Gateway集成Sentinel流控詳情,Sentinel支持對(duì)Spring?Cloud?Gateway、Zuul等主流的API?Gateway進(jìn)行限流,需要的朋友可以參考一下2022-09-09

