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;
}
/*
* 獲得頁面的響應(yīng),然后對(duì)這個(gè)響應(yīng)內(nèi)容進(jìn)行處理并生成自定義的響應(yīng)
* 把敏感字去掉并替換成“***”,再返回給客戶端
* */
@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() {
}
}
/*
* 這個(gè)類文件的作用是處理對(duì)頁面響應(yīng)的內(nèi)容,用toString方法進(jìn)行重載
* 然后將頁面中的內(nèi)容轉(zhuǎn)換成字符串。
* */
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>
9.PNG
10.PNG