美文网首页
6.0.1 Filter过滤器

6.0.1 Filter过滤器

作者: RockyLuo_290f | 来源:发表于2019-03-06 01:35 被阅读0次

    过滤器是用来拦截请求的,而不是处理请求的
    当用户请求某个Servlet时,会先执行部署在这个请求上的filter, 如果filter放行,才会执行用户请求的servlet
    即,当用户请求某个Servlet时,Tomcat会去执行注册在这个请求上的filter,然后再调用servlet,当执行完成Servlet皇后,还会执行filter后面的代码


    image.png
    <filter>
      <filter-name>helloFilter</filter-name>
      <filter-class>com.rl.filter.HelloFilter</filter-class>
    </filter>
    <filter-mapping>
      <filter-name>helloFilter</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    

    生命周期:

    init(FilterConfig): 服务器启动时创建filter实例,从此不再创建

    doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
    在每次访问目标资源时执行,需要放行,调用FilterChain的doFilter()方法,

    destroy(), 会在服务器关闭时销毁Filter对象,

    FilterConfig

    功能与ServletConfig相似,与web.xml文件中的配置信息对应,下面是FilterConfig的功能介绍
    ServletContext getServletContext(): 获取ServletContext的方法
    String getFilterName(): 获取Filter的配置名称,与<filter-name>元素对应
    String getInitParameter(String name) 获取Filter的初始化配置,与<init-param>元素对应
    Enumeration getInitParameterNames() 获取所有初始化参数的名称

    过滤器有四种拦截方式,REQUEST, FORWARD, INCLUDE,ERROR

    REUQEST:直接访问目标资源时执行过滤器。包括:在地址栏中直接访问,表单提交,超链接,重定向等
    FORWARD:转发访问执行过滤器。包括RequestDispatcher#forward()方法,<jsp:forward>标签都是转发访问
    INCLUDE:包含访问执行过滤器。包括RequestDispatcher#include()方法,<jsp:include>标签
    ERROR:当目标资源在web.xml中配置为<error-page>中时

    //处理post请求乱码问题
    request.setCharacterEncoding(this.encoder);
    //post方式相应页面乱码处理
    response.setCharacterEncoding(this.encoder);
    response.setContentType("text/html;charset="+this.encoder);
    
    

    相关文章

      网友评论

          本文标题:6.0.1 Filter过滤器

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