日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

今天是劉小愛自學(xué)JAVA的第94天。

感謝你的觀看,謝謝你。

話不多說,開始今天的學(xué)習(xí):

一、用戶評(píng)論功能

網(wǎng)絡(luò)上很多平臺(tái)都會(huì)有敏感詞屏蔽,有些詞語打出來會(huì)被和諧掉。

雖說現(xiàn)在主張言論自由,但我大中華自古以來便是禮儀之邦,很多粗鄙之語能不允許就不允許的好。

那這些詞匯是如何屏蔽的呢?

利用昨天學(xué)的Filter過濾器技術(shù)就能實(shí)現(xiàn)。

這就是一個(gè)很簡(jiǎn)單的form表單:

 

  • action:提交跳轉(zhuǎn)的路徑為wordServlet。

     

  • method:提交方式為get提交。

     

  • textarea:文本域,屬性分別為列數(shù)、行數(shù)、名稱。

     

  • input type="submit":提交按鈕

     

 

那么肯定要有一個(gè)Servlet要和表單提交的路徑對(duì)應(yīng),從而獲取文本域中用戶輸入的數(shù)據(jù)。

①處理亂碼問題

通過request的setCharcatierEncoding()方法設(shè)定字符集為utf-8,解決亂碼問題。

②獲取用戶輸入的數(shù)據(jù)

通過request的getParamter()方法獲取用戶輸入的數(shù)據(jù)。

文本域?qū)?yīng)的name為word,所以這里參數(shù)也為word。

當(dāng)然按照實(shí)際情況,獲取用戶數(shù)據(jù)后,會(huì)將用戶的評(píng)論展示在對(duì)應(yīng)的評(píng)論區(qū)中。

我這邊業(yè)務(wù)邏輯沒有這么復(fù)雜,就直接用一個(gè)輸出語句來代替了。

二、敏感詞匯獲取

既然是要屏蔽敏感詞匯,肯定需要先確定哪些詞算是敏感詞,再以這些詞匯作為標(biāo)準(zhǔn)作為屏蔽。

在web包下創(chuàng)建一個(gè)word包,專門存放需要屏蔽的詞匯文件,根據(jù)分類肯定是有很多很文件的。

為了更好地測(cè)試,我寫了一個(gè)劉小愛,將其設(shè)定為1級(jí),畢竟總不可能真的寫那些敏感詞。

好,敏感詞匯準(zhǔn)備好了,就要?jiǎng)?chuàng)建Filter過濾器以及編寫如何屏蔽的業(yè)務(wù)邏輯代碼了。

首先要獲取敏感詞匯,在init()方法中實(shí)現(xiàn)該需求,因?yàn)榇a太長(zhǎng)不好截圖,故分成了兩部分:

1獲取words文件夾里的各個(gè)文件

①創(chuàng)建三個(gè)集合

前面也說了,敏感詞有三個(gè)等級(jí),就創(chuàng)建三個(gè)成員變量來專門存放獲取的詞匯。

②獲取words文件夾

在初始化方法init中,有一個(gè)參數(shù)FilterConfig。

利用它的getServlerContext()可以獲取web應(yīng)用中的servletcontext ,從而使用servletcontext接口的一些方法。

getRealPath()里面填入words包的相對(duì)路徑,就能獲取words這個(gè)包了。

③使用文件過濾器過濾文件

我們剛才將敏感詞匯文件放入words這個(gè)包中了,里面有很多文件,為了防止被其它文件混入,我們只讀取后綴名為“.txt”的文本文件。

使用FileFilter接口就能達(dá)到過濾文件的效果。

2獲取words文件夾里的各個(gè)文件里的內(nèi)容

代碼接上圖,增強(qiáng)for循環(huán)遍歷上述過濾后的words文件夾:

①轉(zhuǎn)換流與緩沖流

使用轉(zhuǎn)換流在于其可以設(shè)置編碼字符集:utf-8。

使用緩沖流在于可以一行一行地讀。

同時(shí)也算是對(duì)這兩種IO流的一個(gè)回顧與復(fù)習(xí)。

②迭代器讀取文件

這就是IO流中的核心代碼,一行一行地讀取各個(gè)文件里的內(nèi)容。

③切割字符串

字符串為一行的內(nèi)容:是以“|”為分隔,前面為敏感詞,后面為屏蔽等級(jí)。

所以使用split()方法來將其分隔成一個(gè)數(shù)組,數(shù)組里0索引位為敏感詞,1索引位為屏蔽等級(jí)。

④根據(jù)屏蔽等級(jí)分別存入對(duì)應(yīng)集合

split[1]表示的也就是屏蔽等級(jí),trim()方法可以去除空格。

split[0]表示的也就是敏感詞內(nèi)容,將其存入對(duì)應(yīng)集合即可。

三、過濾代碼編寫

上述是對(duì)過濾器中init()方法里的代碼編寫,用于獲取敏感詞一共有哪些。

現(xiàn)在對(duì)doFilter()方法里的代碼編寫,用戶獲取用戶輸入的信息,再進(jìn)一步判斷是否符合要求。

①處理亂碼并獲取用戶數(shù)據(jù)

和在wordServlet中編寫的代碼一樣。

②遍歷敏感詞匯并與用戶數(shù)據(jù)匹配

敏感詞匯一共有三個(gè)級(jí)別,可以分別對(duì)應(yīng)不同的處理方式,比如永久封號(hào)、封號(hào)7天,禁言……

現(xiàn)在畢竟學(xué)習(xí)階段,只遍歷等級(jí)為1的集合,正則匹配涉及到一個(gè)工具類Pattern:

 

  • compile(str):以遍歷的敏感詞為標(biāo)準(zhǔn)。

     

  • matcher(word):以上述標(biāo)準(zhǔn)匹配獲取的用戶數(shù)據(jù)。

     

 

通過matcher的find()方法可以判斷,若為true即表示匹配,不符合要求。

③不符合要求反饋并提醒用戶

在request域?qū)ο笾性O(shè)定一個(gè)名為msg的值,值為“評(píng)論內(nèi)容不規(guī)范”,再跳轉(zhuǎn)word.jsp頁面。

最后在word.jsp中使用EL表達(dá)式獲取request域?qū)ο笾械臄?shù)據(jù)。

${msg}獲取的也就是③中設(shè)定的msg對(duì)應(yīng)的值,如果用戶輸入的內(nèi)容不規(guī)范,在word.jsp頁面就會(huì)出現(xiàn)警示信息。

做個(gè)測(cè)試

劉小愛在前面已經(jīng)被我設(shè)置成了1級(jí)敏感詞,所以在評(píng)論的時(shí)候輸入劉小愛,過濾器中會(huì)截取到。

從而跳轉(zhuǎn)word.jsp頁面并附帶警示信息。

嘻嘻嘻不為敏感詞匯,則不受影響。

最后

分享到:
標(biāo)簽:敏感
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定