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?AOP統(tǒng)一處理Web請(qǐng)求日志的示例代碼
springboot有很多方法處理日志,例如攔截器,aop切面,service中代碼記錄等,下面這篇文章主要給大家介紹了關(guān)于SpringBoot?AOP統(tǒng)一處理Web請(qǐng)求日志的相關(guān)資料,需要的朋友可以參考下2023-02-02
利用線程實(shí)現(xiàn)動(dòng)態(tài)顯示系統(tǒng)時(shí)間
編寫Applet小程序,通過(guò)在HTML文檔中接收參數(shù),顯示當(dāng)前的系統(tǒng)時(shí)間,需要的朋友可以參考下2015-10-10
Spring security 自定義過(guò)濾器實(shí)現(xiàn)Json參數(shù)傳遞并兼容表單參數(shù)(實(shí)例代碼)
這篇文章主要介紹了Spring security 自定義過(guò)濾器實(shí)現(xiàn)Json參數(shù)傳遞并兼容表單參數(shù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
一文掌握Spring?中?@Component?和?@Bean?區(qū)別(最新推薦)
?@Component?用于標(biāo)識(shí)一個(gè)普通的類,@Bean用于配置類里面,在方法上面聲明和配置?Bean?對(duì)象,這篇文章主要介紹了Spring?中?@Component?和?@Bean?區(qū)別(最新推薦),需要的朋友可以參考下2024-04-04
SpringBoot實(shí)現(xiàn)redis延遲隊(duì)列的示例代碼
延時(shí)隊(duì)列場(chǎng)景在我們?nèi)粘I(yè)務(wù)開發(fā)中經(jīng)常遇到,它是一種特殊類型的消息隊(duì)列,本文就來(lái)介紹一下SpringBoot實(shí)現(xiàn)redis延遲隊(duì)列的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02
Java虛擬機(jī)裝載和初始化一個(gè)class類代碼解析
這篇文章的主要內(nèi)容是Java虛擬機(jī)裝載和初始化一個(gè)class類的代碼解析,包括介紹了裝載和初始化的時(shí)機(jī)與方式,需要的朋友可以參考下。2017-09-09
Intellij IDEA的一些調(diào)試技巧(小結(jié))
本篇文章主要介紹了Intellij IDEA的一些調(diào)試技巧(小結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11

