美文网首页过滤器与监听器专题
用过滤器实现字符替换

用过滤器实现字符替换

作者: 神坛下的我 | 来源:发表于2018-08-23 12:08 被阅读0次

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>
9.PNG 10.PNG

相关文章

网友评论

    本文标题:用过滤器实现字符替换

    本文链接:https://www.haomeiwen.com/subject/gevpiftx.html