用过滤器实现字符替换

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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home...
    光剑书架上的书阅读 9,473评论 2 8
  • JSP总结(经典) day1 JSP 定义: 1)Java Server Page, Java EE 组件,本...
    91数据阅读 8,883评论 0 13
  • 1.学习内容 JSP技术入门和常用指令 JSP的内置对象&标签介绍 EL表达式&EL的内置对象 2.JSP技术入门...
    WendyVIV阅读 6,621评论 1 18
  • 2008年是记忆深刻的一年。 2018年也将必然成为记忆深刻的一年。 而2018年也确实将是记忆深刻的一年。 离2...
    等心语阅读 1,526评论 0 0
  • 2008年,就在一个秋天,有个小姑娘走在前面,她的短发就留在我心间! 2012年,又到一个夏天,我们没有像别人那样...
    甘草者阅读 1,216评论 0 1

友情链接更多精彩内容