javaweb中的过滤器Filter筛选非法字符

筛选非法字符

需求:

当用户发出非法言论的时候,提示用户言论非法。

步骤分析:

  1. 确定访问的是哪些连接
    • /day09_filter/words?kw=你是个笨蛋 //非法
    • /day09_filter/words?kw=你是个坏蛋 //非法
    • /day09_filter/words?kw=你是个Y蛋 //合法
  2. 编写一个properties文件,存放这些敏感词汇,规定通过","分割每个词汇
  3. 编写filter
    • 在filter的init方法中,加载properites配置文件,将敏感词放到集合中.
    • 在filter的doFilter方法中,获取用户提交过来的wd,判断参数中是否包含任意一个敏感词;若包含了提示用户且终止方法;若不包含,在控制上输出wd
  4. 编写WordsServlet,输出合法的kw。

代码实现:

@WebFilter("/ServletWords")
public class WordsFilter implements Filter {
    private List<String> wordList;

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

        try {
            //1.加载words.properties
            InputStream is = WordsFilter.class.getClassLoader().getResourceAsStream("words.properties");
            InputStreamReader isr = new InputStreamReader(is, "GBK");

            //2.将配置文件中的内容获取到(注意编码) : 坏蛋,笨蛋
            Properties prop = new Properties();
            prop.load(isr);

            String keyword = prop.getProperty("keyword");

            //3.将内容切割,转成数组,然后将数组变成list
            wordList = Arrays.asList(keyword.split(","));
            //System.out.println(wordList);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //0.向下转型
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;

        //1.获取请求参数 kw
        String param = request.getParameter("kw");

        //2.判断kw中有无非法字符 若有:提示用户,后面的代码不执行
        for (String word : wordList) {
            if (param.contains(word)) {
                response.getWriter().print("存在非法字符");
                return;
            }
        }

        //3.放行
        filterChain.doFilter(request,response);
    }

    @Override
    public void destroy() {

    }
}
@WebServlet("/ServletWords")
public class ServletWords extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println(request.getParameter("kw"));
        response.getWriter().print(request.getParameter("kw"));
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值