博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaWeb学习——简单学习过滤器Filter
阅读量:3943 次
发布时间:2019-05-24

本文共 1841 字,大约阅读时间需要 6 分钟。

JavaWeb学习——过滤器Filter学习

Filter过滤器简介

Filter实际上就是对web资源进行拦截,做一些处理后交给Servlet处理,相当于在客户端和服务端资源文件之间加了一层过滤网。在过滤器种经过逻辑判断将不符合要求的资源过滤掉。一般情况下是对请求request的过滤,当然也可以对相应进行过滤

原理图:

在这里插入图片描述
过滤器的一般应用场景

  • 统一设置编码格式
  • 设置权限访问
  • 敏感字符过滤

2.Filter具体是怎么实现拦截的

  • Filter接口种有一个doFilter方法,当我们写好Filter并设置对哪个web资源进行拦截后,WEB服务器每次在调用WEB资源的service()方法之前都会先调用doFilter方法。该方法中可以决定是否过滤掉用户的请求。
  • web服务器调用Filter的doFilter方法时,会传递一个FilterChain的对象进来,它也提供了一个doFilter方法,开发人员根据需求决定是否调用此方法(chain.doFilter(request,
    response);)。若调用,web服务器通过调用web资源的service方法,用户就可以访问到请求的资源,否则就访问不了。

3.Filter开发的基本步骤

  • ①编写Java类实现Filter接口,实现doFilter方法

    package com.muhan.Filter;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;public class myFilter implements Filter {    //过滤器初始化方法    @Override    public void init(FilterConfig filterConfig) throws ServletException {        System.out.println("过滤器初始化");    }    //主要业务逻辑    @Override    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain filterChain) throws IOException, ServletException {        //把ServletRequest强转成HttpServletRequest        HttpServletRequest request = (HttpServletRequest) req;        //把ServletResponse强转成HttpServletResponse        HttpServletResponse response = (HttpServletResponse) resp;        //设定字符编码        request.setCharacterEncoding("utf-8");        response.setCharacterEncoding("utf-8");        System.out.println("myFilter执行前");        filterChain.doFilter(request, response);        System.out.println("myFilter执行后");    }    @Override    public void destroy() {        System.out.println("过滤器销毁了");    }}
  • ②在web.xml中配置Filter

    myFilter01
    com.muhan.Filter.myFilter
    myFilter01
    /*

转载地址:http://koiwi.baihongyu.com/

你可能感兴趣的文章
Python pass语句作用与用法
查看>>
Java double,float设置小数点位数
查看>>
PyCharm & Jupyter
查看>>
为什么要用Jupyter Notebook
查看>>
sklearn中的LogisticRegression模型
查看>>
pandas.get_dummies 的用法
查看>>
机器学习-训练模型的保存与恢复(sklearn)
查看>>
Spark(二): spark-submit命令详解
查看>>
细品 - 逻辑回归(LR)*
查看>>
hive: size与spilt连用
查看>>
Python:ModuleNotFoundError: No module named 模块名 错误及解决方案
查看>>
Python中os与sys两模块的区别
查看>>
nohup详解
查看>>
idea .gitignore对.idea不起作用解决
查看>>
深度学习中的注意力机制(2017版)-易理解
查看>>
Transformer解析-易理解
查看>>
多维数组[:,0]和[:0:1]获取的区别
查看>>
复原Ip地址
查看>>
重建二叉树
查看>>
二叉树根节点到叶子节点的路径数字之和
查看>>