package filter;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebFilter("/submit_comment")
public class submitcommentfilter implements Filter {
private List<String> dirtyWords = Arrays.asList("你好", "lala", "bubu");
public void init(FilterConfig config) throws ServletException {
// 初始化过滤器
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
String comment = req.getParameter("comment");
if (comment != null) {
// 对参数值进行解码
comment = java.net.URLDecoder.decode(comment, "UTF-8");
}
if (hasDirtyWords(comment)) {
res.setContentType("text/html; charset=UTF-8");
res.getWriter().write("您提交的评论含有敏感词汇,请重新输入。");
} else {
// 执行下一个过滤器或目标资源
chain.doFilter(request, response);
}
}
public void destroy() {
// 销毁过滤器
}
private boolean hasDirtyWords(String comment) {
for (String dirtyWord : dirtyWords) {
if (comment != null && comment.indexOf(dirtyWord) != -1) {
return true;
}
}
return false;
}
}
这样转换一下试试:
comment = new String(comment.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
打断点看下comment值多少