UseFilter.java
import java.io.CharArrayWriter;
import java.io.IOException;
import java.io.PrintWriter;
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.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
@WebFilter("/*")
public class UseFilter implements Filter{
//private FilterConfig filterConfig;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
//this.filterConfig = filterConfig;
}
/*
* 获得页面的响应,然后对这个响应内容进行处理并生成自定义的响应
* 把敏感字去掉并替换成“***”,再返回给客户端
* */
@Override
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain filterChain) throws IOException, ServletException {
resp.setCharacterEncoding("UTF-8");
PrintWriter out = resp.getWriter();
Cr wrapper=new Cr((HttpServletResponse)resp);
filterChain.doFilter(req, wrapper);
String resStr=wrapper.toString().trim();
String newStr="";
if(resStr.indexOf("fuck")>0){
newStr = resStr.replace("fuck", "***");
}
out.println(newStr);
}
@Override
public void destroy() {
}
}
/*
* 这个类文件的作用是处理对页面响应的内容,用toString方法进行重载
* 然后将页面中的内容转换成字符串。
* */
class Cr extends HttpServletResponseWrapper{
private CharArrayWriter output;
public String toString(){
return output.toString();
}
public Cr(HttpServletResponse response) {
super(response);
this.output=new CharArrayWriter();
}
public PrintWriter getWriter(){
return new PrintWriter(output);
}
}
index.jsp
<body>
fuck
</body>










网友评论