怎么通过关键词禁言(网上发不出去的那些敏感词)

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

感谢你的观察,谢谢你。

怎么通过关键词禁言(网上发不出去的那些敏感词)(1)

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

怎么通过关键词禁言(网上发不出去的那些敏感词)(2)

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

怎么通过关键词禁言(网上发不出去的那些敏感词)(3)

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

怎么通过关键词禁言(网上发不出去的那些敏感词)(4)

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

怎么通过关键词禁言(网上发不出去的那些敏感词)(5)

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

怎么通过关键词禁言(网上发不出去的那些敏感词)(6)

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

怎么通过关键词禁言(网上发不出去的那些敏感词)(7)

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页面并附带警示讯息。

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

谢谢你的观察。

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

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

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页