textarea如何获取行数_网上发不出去的那些敏感词,是如何被屏蔽掉的?

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

感谢你的观察,谢谢你。

89cf0a2069752a4a4e65f62809eb803c.png

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

0c9eab79f519cb118ada48153fddc8f9.png

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

72e7bc6a942bf4de9346a1acf3013ec3.png

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

a32e941e5e45ab74cb3caf76d6f4db4a.png

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

d92c888746648a47f4358ba5b8c39c8d.png

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

962bc3dadc9eab33708c5ab68b76a20b.png

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

228e4ca98a46c769dc5b5c323eeb03cf.png

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

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

谢谢你的观察。

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值