专业编程基础技术教程

网站首页 > 基础教程 正文

网上发不出去的那些敏感词,是如何被屏蔽掉的?

ccvgpt 2024-07-30 20:52:05 基础教程 14 ℃

今日是豆豆团影视自学Java的第94天。


感谢你的观察,谢谢你。

网上发不出去的那些敏感词,是如何被屏蔽掉的?



话不多说,开始今日的进修:



收集上好多平台都会有敏感词屏蔽,有些词语打出来会被和谐掉。



虽然说现在主张言论自由,但我大中华自古以来便是礼仪之邦,好多粗俗之语能不准许就不准许的好。



那这些词汇是如何屏蔽的呢?



运用昨天学的Filter过滤器手艺就能实现。



这便是1个很简单的form表单:



action:提交跳转的路径为wordServlet。


method:提交方式为get提交。


textarea:文本域,属性分别为列数、行数、称呼。


input type="submit":提交按钮


那么必定要有1个Servlet要和表单提交的路径对应,从而获得文本域中用户输入的数据。


①处理乱码问题


经过request的setCharcatierEncoding()方法设定字符集为utf-8,处理乱码问题。


②获得用户输入的数据


经过request的getParamter()方法获得用户输入的数据。


文本域对应的name为word,所以这里参数也为word。


固然依照实际情况,获得用户数据后,会将用户的批评展现在对应的批评区中。


我这边营业逻辑没有这样庞杂,就干脆用1个输出语句来代替了。


既然是要屏蔽敏感词汇,必定需要先断定哪些词算是敏感词,再以这些词汇当作标准当作屏蔽。


在web包下创建1个word包,专门寄存需要屏蔽的词汇文献,依照分类必定是有好多很文献的。


为了更好地测试,我写了1个豆豆团影视,将其设定为1级,终究总不或许真的写那些敏感词。


好,敏感词汇准备好了,就要创建Filter过滤器和编写如何屏蔽的营业逻辑代码了。


起初要获得敏感词汇,在init()方法中实现该需求,因为代码太长欠好截图,故分红了两部分:


1获得words文献夹里的各个文献


①创建三个群集


前面也说了,敏感词有三个品级,就创建三个成员变量来专门寄存获得的词汇。


②获得words文献夹


在初始化方法init中,有1个参数FilterConfig。


运用它的getServlerContext()可以获得web运用中的servletcontext ,从而运用servletcontext接口的少许方法。


getRealPath()内里填入words包的相对路径,就能获得words这个包了。


③运用文献过滤器过滤文献


我们刚才将敏感词汇文献放入words这个包中了,内里有好多文献,为了防止被其余文献混入,我们只读取后缀名为“.txt”的文本文献。


运用FileFilter接口就能到达过滤文献的效益。


2获得words文献夹里的各个文献里的实质


代码接上图,加强for重复遍历上述过滤后的words文献夹:


①转换流与缓冲流


运用转换流在于其可以设立编码字符集:utf-8。


运用缓冲流在于可以1溜1溜地读。


同期也算是对这两种IO流的1个回顾与温习。


②迭代器读取文献


这便是IO流中的重点代码,1溜1溜地读取各个文献里的实质。


③切割字符串


字符串为1溜的实质:是以“|”为分开,前面为敏感词,后背为屏蔽品级。


所以运用split()方法来将其分开成1个数组,数组里0索引位为敏感词,1索引位为屏蔽品级。


④依照屏蔽品级分别存入对应群集


split[1]暗示的也便是屏蔽品级,trim()方法可以去除空格。


split[0]暗示的也便是敏感词实质,将其存入对应群集便可。


上述是对过滤器中init()方法里的代码编写,用于获得敏感词1共有哪些。


现在对doFilter()方法里的代码编写,用户获得用户输入的讯息,再进1步判定是不是合乎要求。


①处理乱码并获得用户数据


和在wordServlet中编写的代码雷同。


②遍历敏感词汇并与用户数据匹配


敏感词汇1共有三个级别,可以分别对应分别的处理方式,例如永远封号、封号7天,禁言……


现在终究进修阶段,只遍历品级为1的群集,正则匹配波及到1个用具类Pattern:


compile(str):以遍历的敏感词为标准。


matcher(word):以上述标准匹配获得的用户数据。


经过matcher的find()方法可以判定,若为true即暗示匹配,不合乎要求。


③不合乎要求反应并提示用户


在request域对象中设定1个名为msg的值,值为“批评实质不规范”,再跳转word.jsp页面。


最终在word.jsp中运用EL表达式获得request域对象中的数据。


${msg}获得的也便是③中设定的msg对应的值,如果用户输入的实质不规范,在word.jsp页面就会浮现警示讯息。


做个测试


豆豆团影视在前面已被我设立成了1级敏感词,所以在批评的时间输入豆豆团影视,过滤器中会换取到。


从而跳转word.jsp页面并附带警示讯息。


嘻嘻嘻不为敏感词汇,则不受影响。


谢谢你的观察。


如果可以的话,贫苦帮助点个赞,谢谢你。


如果喜欢我的文章,请大家多多“关注”我吧,第一时间获取最新资讯!


Tags:

最近发表
标签列表