拦截器拦截敏感词
2023-12-15 09:52:01
案例实现:
需求:
1.点击发表评论页面topic.jsp,可以在showTopic.jsp显示内容
2.如果发表的评论内容,有关键字“苹果”、“香蕉”,就返回topic,并提示有禁用词
3.要求发表评论到showTopic.jsp时,经过过滤器处理
4.禁用词,配置在过滤器,在启动项目时动态获取,注意处理中文
代码
topic.jsp
注意:由于csdn上的代码块没有jsp的选择,所有使用的是xml的代码块,请看清类名是什么
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>发表对阿凡达电影的评价</h1>
过滤词:苹果,香蕉 ${errorInfo}
<form method="post" action="<%=request.getContextPath()%>/topic/showTopic.jsp">
用户:<input type="text" name="username" /><br/>
评论:<textarea rows="10" name="content" cols="20"></textarea><br/>
<input type="submit" value="发表评论" />
</form>
</body>
</html>
showTopic.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>你发表的评论是</h1>
评论内容:<%=request.getParameter("content")%>
</body>
</html>
web.xml文件的配置
<filter> <filter-name>TopicFilter</filter-name> <filter-class>com.filter.TopicFilter</filter-class> <!-- 配置禁用词--> <init-param> <param-name>forbiddenword</param-name> <param-value>苹果,香蕉</param-value> </init-param> </filter> <filter-mapping> <filter-name>TopicFilter</filter-name> <url-pattern>/topic/*</url-pattern> </filter-mapping>
过滤器
package com.filter;
import javax.servlet.*;
import java.io.IOException;
public class TopicFilter implements Filter {
//属性->存放禁用词
private String[] forbiddenWords=null;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
//获取禁用词
String forbiddenword = filterConfig.getInitParameter("forbiddenword");
forbiddenWords=forbiddenword.split(",");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//解决topic.jsp 提交的中文乱码问题
servletRequest.setCharacterEncoding("utf-8");
//判断评论是不是有禁用词
String content = servletRequest.getParameter("content");
//循环遍历
for (String forbiddenWord : forbiddenWords) {
if(content.contains(forbiddenWord)){
//返回topic.jsp
servletRequest.setAttribute("errorInfo","输入的有禁用词");
servletRequest.getRequestDispatcher("/topic.jsp")
.forward(servletRequest,servletResponse);
return;
}
}
// 继续到目标
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
}
}
文章来源:https://blog.csdn.net/weixin_74484843/article/details/134986559
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!