脏词的过滤:
新建一个表单:
新建一个servlet:
添加过滤器:`
@WebFilter(filterName = “DirtyFilter”, value = “/dirty”)//此处value的值是直接过滤的servlet的值
public class DirtyFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
//放行 此处传的参数为HttpServlet 类型的参数,应该做强转
filterChain.doFilter(new Dirty(request), servletResponse);
}
//在过滤器里面把数据过滤掉
//重写servletRequest里的getParameter方法
static class Dirty extends HttpServletRequestWrapper {
List<String> dirties = new ArrayList<String>();
public Dirty(HttpServletRequest request) {
super(request);//构建了一个servletRequest对象
dirties.add("你妈");
dirties.add("王八蛋");
dirties.add("二狗子");
}
//重写getParameter方法
@Override
public String getParameter(String name) {
//根据浏览器表单的name获取数据
String value = super.getParameter(name);
//直接在这过滤
for (String dirty : dirties) {
if (value.equals(dirty)) {
value = "****";
}
}
return value;
}
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
}
`
运行结果打印在控制台: