最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

相關(guān)文章

  • Java Junit單元測(cè)試實(shí)例詳解

    Java Junit單元測(cè)試實(shí)例詳解

    在本篇文章里小編給大家分享的是關(guān)于Java Junit單元測(cè)試的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們學(xué)習(xí)下。
    2019-11-11
  • springboot整合 xxl-job的項(xiàng)目實(shí)踐

    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
  • Springboot如何使用外部yml啟動(dòng)

    Springboot如何使用外部yml啟動(dòng)

    這篇文章主要介紹了Springboot如何使用外部yml啟動(dòng)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java基礎(chǔ)教程之Map遍歷的5種方式

    Java基礎(chǔ)教程之Map遍歷的5種方式

    Map作為Java中的一種集合,以鍵值對(duì)的形式存放一批數(shù)據(jù),經(jīng)常會(huì)被我們應(yīng)用在項(xiàng)目中,這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)教程之Map遍歷的5種方式,需要的朋友可以參考下
    2024-01-01
  • SpringCloud3.x集成BigQuery的代碼實(shí)現(xiàn)

    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面對(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ì)講解

    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)淺析

    這篇文章主要介紹了Java8新特性之重復(fù)注解(repeating annotations)淺析,這個(gè)新特性只是修改了程序的可讀性,是比較小的一個(gè)改動(dòng),需要的朋友可以參考下
    2014-06-06
  • Spring?Cloud?Gateway集成Sentinel流控詳情

    Spring?Cloud?Gateway集成Sentinel流控詳情

    這篇文章主要介紹了Spring?Cloud?Gateway集成Sentinel流控詳情,Sentinel支持對(duì)Spring?Cloud?Gateway、Zuul等主流的API?Gateway進(jìn)行限流,需要的朋友可以參考一下
    2022-09-09
  • Java面試題沖刺第二十七天--JVM2

    Java面試題沖刺第二十七天--JVM2

    這篇文章主要為大家分享了最有價(jià)值的三道關(guān)于JVM的面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評(píng)論

苏尼特左旗| 贞丰县| 乌拉特前旗| 揭阳市| 鹤峰县| 凤山县| 洪洞县| 江陵县| 乌拉特前旗| 叙永县| 石家庄市| 田林县| 抚顺市| 廉江市| 报价| 海丰县| 绥江县| 九龙城区| 青冈县| 祁东县| 鹤庆县| 安远县| 荥经县| 普定县| 安康市| 苗栗县| 女性| 南华县| 博乐市| 深水埗区| 永善县| 吴川市| 龙井市| 灌南县| 九台市| 大丰市| 北辰区| 南阳市| 顺昌县| 武川县| 和平县|