余姚二手房:filter和interceptor的区别

时间:2个月前   阅读:70   评论:1

前言

《最近在面试《『『的』』》时刻》,被问到了这个问题,以(为)答得不『是』很好,‘在此举行整理和纪录’,供自己学习,也希望能辅助到人人。

什么『是』Filter

在java《『『的』』》javax.servlet下有一个接口Filter。任何实现了Filter「接口《『『的』』》」类都可以称之(为)filter。Filter《『『的』』》主要用途『是』设置字符集、控制权限、控制转向等等。{在使用}filter『《『『的』』》过程中』,若『是』『是』传统《『『的』』》web项目,『带有』web.xml「文件这种」。〖我们需要在〗xml(内里举行设置)。好比下面这样。

    <filter>
        <description>字符集过滤器</description>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <description>字符集编码</description>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

《这种使用『 方式[』直接将我们《『『的』』》请求和响应《『『的』』》字符集所》有改(为)utf-8《『『的』』》形式。

若『是』『是』在spingboot这种项目中使用,我们界说好自己《『『的』』》filter类之后,需要使用filterregisterbean将filter举行注入。

Filter随着项目《『『的』』》启动而启动,<只初始化一次>,随着web项目《『『的』』》住手而销毁。

Filter主要用于对用户请求《『『的』』》预处置和「程序」返回response《『『的』』》后处置。可以在请求到达servlet之前举行request‘《『『的』』》处’置或者添加头和一些其他数据。或者在reponse到达之前,‘修改’response《『『的』』》头和数据。

filter中总共有三个『 方式[』。
void init(FilterConfig config):<用于完成>Filter《『『的』』》初始化。
void destory():用于filter销毁前,{完成资源《『『的』』》接纳}。
void doFilter(ServletRequest request,ServletResponse response,FilterChain chain):该『 方式[』『是』filter《『『的』』》焦点过滤『 方式[』。 『通过』[request举行请求处置,然后挪用chain.doFilter。 挪用完之后[,可以 『通过』[response举行响应处置。

阻挡器

『阻挡器『是』』aop《『『的』』》一种实现方案,『是』aop头脑《『『的』』》体现。在我们挪用『 方式[』之前,《「挪用阻挡器《『『的』』》一个『 方式[』」或者在挪用『 方式[』》之后,「挪用阻挡器《『『的』』》一个『 方式[』」。

SpringMVC 【中《『『的』』》】Interceptor 阻挡请求『是』 『通过』[HandlerInterceptor 来实现《『『的』』》。在SpringMVC <中界说一个>Interceptor 异常简朴,『主要有两种『 方式[』』,第一种『 方式[』『是』要界说《『『的』』》Interceptor〖类要实现了〗Spring 《『『的』』》HandlerInterceptor 接口,或者『是』这个类继续实现了HandlerInterceptor 接口《『『的』』》类,好比Spring 已经提供《『『的』』》实现了HandlerInterceptor 接口《『『的』』》抽象类HandlerInterceptorAdapter ;第二种『 方式[』『是』实现Spring《『『的』』》WebRequestInterceptor接口,或者『是』继续实现了WebRequestInterceptor《『『的』』》类。

(1)preHandle (HttpServletRequest request, HttpServletResponse response, Object handle) 『 方式[』,该『 方式[』将在请求处置之前举行挪用。SpringMVC 【中《『『的』』》】Interceptor {『是』链式挪用},在一个应用中或者说『是』在一个请求中可以同时存在多个Interceptor。{每个}Interceptor 《『『的』』》挪用会依据它《『『的』』》声明顺序依次执行,而且最先执行《『『的』』》都『是』Interceptor 【中《『『的』』》】preHandle 『 方式[』,以『是』可以在这个『 方式[』中举行一些前置初始化操作或者『是』对当前请求《『『的』』》一个预处置,也可以在这个『 方式[』中举行一些判断来决议请求『是』否要继续举行下去。该『 方式[』《『『的』』》返回值『是』布尔值Boolean类型《『『的』』》,当它返回(为)false时,示意请求竣事,后续《『『的』』》Interceptor和Controller都不会再执行;当返回值(为)true{时就会继续挪用下一}个Interceptor《『『的』』》preHandle『 方式[』,若『是』已经『是』最后一个Interceptor《『『的』』》时刻就会『是』挪用当前请求《『『的』』》Controller『 方式[』。

(2)postHandle (HttpServletRequest request, HttpServletResponse response, Object handle, ModelAndView modelAndView) 『 方式[』,由preHandle 『 方式[』《『『的』』》注释我们知道这个『 方式[』包罗后面要说到《『『的』』》afterCompletion『 方式[』都只能『是』在当前所属《『『的』』》Interceptor《『『的』』》preHandle『 方式[』《『『的』』》返回值(为)true《时才气被挪用》。postHandle『 方式[』,顾名思义就『是』在当前请求举行处置之后,也就『是』Controller『 方式[』挪用之后执行,然则它会在DispatcherServlet 举行视图返回渲染之前被挪用[,以『是』我们可以在这个『 方式[』中对Controller处置之后《『『的』』》ModelAndView工具举行操作。postHandle『 方式[』被挪用《『『的』』》偏向跟preHandle『是』相反《『『的』』》,也就『是』说先声明《『『的』』》Interceptor《『『的』』》postHandle『 方式[』反而会后执行。

(3)afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handle, Exception ex) 『 方式[』,该『 方式[』也『是』需要当前对应《『『的』』》Interceptor 《『『的』』》preHandle 『 方式[』《『『的』』》返回值(为)true 时才会执行。顾名思义,该『 方式[』将在整个请求竣事之后,也就『是』在DispatcherServlet 渲染了对应《『『的』』》视图之后执行。这个『 方式[』《『『的』』》主要作用『是』用于举行资源清算事情《『『的』』》。
执行《『『的』』》顺序如下:

需要注重《『『的』』》点就『是』当preHandler(为)true《『『的』』》时刻,postHandler才气执行。当(为)false《『『的』』》时刻,afterCompletion【仍然会执行】。

filter和interceptor《『『的』』》区别总结

1、filter接口在javax.servlet‘包下面’。inteceptor《界说在》org.springframework.web.servlet中。
2、filter『是』servlet划定《『『的』』》,interceptor即可用于web「程序」,也可用于application中。
3、filter『是』servlet容器支持《『『的』』》,interceptor『是』spring框架支持《『『的』』》。
4、filter 『通过』[dochain放行,interceptor 『通过』[prehandler放行。
5、filter只在『 方式[』前后执行,interceptor粒度更细,可以深入到『 方式[』前后,异常抛出前后。

,

诚信在线

诚信在线(www.chengxin11.cn)现已开放诚信在线手机版下载。〖游戏公平〗、公开、公正,用实力赢取信誉。

上一篇:嘉兴市图书馆:被疫情“推了一把”的火锅外卖

下一篇:进入申傅sunbet:澳网》谢淑薇虽败犹荣 第三度重返世界女双球后

网友评论

  • 2020-08-05 00:02:44

    诚信在线诚信在线(www.9cx.net)是一家诚信在线的本地新闻报道和民生服务、交流网站,主要报道跟进河南安阳本地及周边地区的新闻,同时响应新时代召唤,弘扬社会主义精神。站内设有实用的教育、医疗类权威推荐,个性化图片新闻专题和现场新闻直播,为您更新,与记者直播互动,另外,在生活领域,还能够传达天气、旅行、教育变动等早知道,贴近人民生活,实用性强,一站式解决本地居民的所有信息需求。还行,看的过去