日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

通過(guò)實(shí)例解析java過(guò)濾器和攔截器的區(qū)別

瀏覽:22日期:2022-09-03 14:43:21

區(qū)別

1.使用范圍和規(guī)范不同

filter是servlet規(guī)范規(guī)定的,只能用在web程序中.

攔截器即可以用在web程序中, 也可以用于application, swing程序中, 是Spring容器內(nèi)的, 是Spring框架支持的

2.觸發(fā)時(shí)機(jī)不同

順序: Filter-->Servlet-->Interceptor-->Controller

過(guò)濾器是在請(qǐng)求進(jìn)入容器后,但請(qǐng)求進(jìn)入servlet之前進(jìn)行預(yù)處理的。請(qǐng)求結(jié)束返回也是,是在servlet處理完后,返回給前端之前過(guò)濾器處理。 攔截器是方法到達(dá)Controller層之前生效的

3.過(guò)濾器的實(shí)現(xiàn)基于回調(diào)函數(shù)。而攔截器(代理模式)的實(shí)現(xiàn)基于反射,代理分靜態(tài)代理和動(dòng)態(tài)代理,動(dòng)態(tài)代理是攔截器的簡(jiǎn)單實(shí)現(xiàn)。

何時(shí)使用攔截器?何時(shí)使用過(guò)濾器?

如果是非spring項(xiàng)目,那么攔截器不能用,只能使用過(guò)濾器。 如果是處理controller前后,既可以使用攔截器也可以使用過(guò)濾器。 如果是處理dispaterServlet前后,只能使用過(guò)濾器。

4.在action的生命周期中,攔截器可以多次被調(diào)用,而過(guò)濾器只能在容器初始化時(shí)被調(diào)用一次。

5.攔截器可以訪問(wèn)action上下文、值棧里的對(duì)象,而過(guò)濾器不能訪問(wèn)。

6.攔截器只能對(duì)action請(qǐng)求起作用,而過(guò)濾器則可以對(duì)幾乎所有的請(qǐng)求起作用。

7.攔截器可以獲取IOC容器中的各個(gè)bean,而過(guò)濾器就不行,在攔截器里注入一個(gè)service,可以調(diào)用業(yè)務(wù)邏輯。

SpringBoot使用過(guò)濾器

兩種方式:

1、使用spring boot提供的FilterRegistrationBean注冊(cè)Filter

2、使用原生servlet注解定義Filter

兩種方式的本質(zhì)都是一樣的,都是去FilterRegistrationBean注冊(cè)自定義Filter

封裝Filter

package com.theeternity.common.baseFilter;import javax.servlet.Filter;/** * @program: ApiBoot * @description: 封裝Filter * @author: TheEternity Zhang * @create: 2019-02-17 13:08 */public interface MappingFilter extends Filter { String[] addUrlPatterns(); int order();}

自定義Filter

package com.theeternity.beans.filterConfig;import com.theeternity.common.baseFilter.MappingFilter;import lombok.extern.slf4j.Slf4j;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import javax.servlet.*;import javax.servlet.FilterConfig;import java.io.IOException;/** * @program: ApiBoot * @description: 權(quán)限過(guò)濾器 * @author: TheEternity Zhang * @create: 2019-02-17 13:14 */public class AuthFilter implements MappingFilter { @Override public String[] addUrlPatterns() { return new String[]{'/*'}; } @Override public int order() { return 0; } @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { filterChain.doFilter(servletRequest,servletResponse); } @Override public void destroy() { }}

注冊(cè)過(guò)濾器

package com.theeternity.beans.filterConfig;import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * @program: ApiBoot * @description: 注冊(cè)過(guò)濾器 * @author: TheEternity Zhang * @create: 2019-02-17 13:10 */@Configurationpublic class FilterConfig { @Bean public FilterRegistrationBean registFilter() { FilterRegistrationBean registration = new FilterRegistrationBean(); AuthFilter authFilter=new AuthFilter(); registration.setFilter(authFilter); registration.addUrlPatterns(authFilter.addUrlPatterns()); registration.setOrder(authFilter.order()); registration.setName('AuthFilter'); return registration; }}

SpringBoot使用攔截器

封裝Interceptor

package com.theeternity.common.baseInterceptor;import org.springframework.web.servlet.HandlerInterceptor;/** * @program: ApiBoot * @description: 封裝Interceptor * @author: TheEternity Zhang * @create: 2019-02-15 17:49 */public interface MappingInterceptor extends HandlerInterceptor { String[] addPathPatterns(); String[] excludePathPatterns(); int order();}

自定義Interceptor

package com.theeternity.beans.interceptorConfig;import com.theeternity.common.baseInterceptor.MappingInterceptor;import org.springframework.stereotype.Component;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * @program: BoxApi * @description: 跨域攔截器 * @author: tonyzhang * @create: 2018-12-21 14:44 */@Componentpublic class CrossOriginInterceptor implements MappingInterceptor { @Override public String[] addPathPatterns() { return new String[]{'/**'}; } @Override public String[] excludePathPatterns() { return new String[0]; } @Override public int order() { return 0; } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { logger.info('允許的頭信息'+request.getHeader('Origin')); response.setHeader('Access-Control-Allow-Origin', '*'); response.setHeader('Access-Control-Allow-Methods', '*'); response.setHeader('Access-Control-Max-Age', '3600'); response.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept'); //是否允許瀏覽器攜帶用戶身份信息(cookie) response.setHeader('Access-Control-Allow-Credentials','true'); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,Exception ex) throws Exception { }}

注冊(cè)Interceptor

package com.theeternity.beans.interceptorConfig;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.InterceptorRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/** * @program: ApiBoot * @description: 攔截器注冊(cè) * @author: TheEternity Zhang * @create: 2019-02-15 17:55 */@Configurationpublic class InterceptorConfig implements WebMvcConfigurer { @Autowired private CrossOriginInterceptor crossOriginInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(crossOriginInterceptor).addPathPatterns(crossOriginInterceptor.addPathPatterns()); }}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
97国产成人高清在线观看| 另类亚洲自拍| 欧洲一区二区三区精品| 清纯唯美亚洲综合一区| 日本 国产 欧美色综合| 欧美二区视频| 日韩中文在线电影| 激情久久一区二区| 国产美女撒尿一区二区| 亚洲综合福利| 国产亚洲精品v| 国内精品福利| 国产一在线精品一区在线观看| 美女久久精品| 国产精品一在线观看| 999精品在线| 国产aⅴ精品一区二区四区| 日韩久久一区| 亚洲美女久久| 国产精品白丝av嫩草影院| 国产精品调教| 国产成人调教视频在线观看| 精品久久电影| 精品一区二区三区中文字幕视频| 精品一区二区三区在线观看视频 | 日韩高清在线不卡| 亚洲精品乱码| 亚州精品视频| 国产欧美日韩精品一区二区三区| 日韩精品一二三区| 日韩三级一区| 精品入口麻豆88视频| 激情中国色综合| 91精品国产乱码久久久久久久| 亚洲午夜91| 视频精品一区二区| 欧美三区不卡| 国产精品v一区二区三区| 午夜av不卡| 不卡视频在线| 欧美日韩99| 久久久91麻豆精品国产一区| 精品国产a一区二区三区v免费| 国产传媒av在线| 日韩一区二区三区在线看| 亚洲专区视频| 国产伦理一区| 欧美1区2区3| 精品一区二区三区中文字幕| 精品视频国产| 日韩国产一区二区| 91看片一区| 欧美日韩国产免费观看| 日韩精品一级| 精品日韩在线| 蜜桃视频第一区免费观看| **爰片久久毛片| а√天堂8资源中文在线| 日韩在线卡一卡二| 日韩国产在线观看一区| 在线观看免费一区二区| 日本aⅴ免费视频一区二区三区| 国产乱子精品一区二区在线观看| 香蕉成人久久| 亚洲二区免费| 亚洲精品在线影院| 久久免费福利| 国产精品一区二区精品 | 欧美三级第一页| 五月天久久777| 四虎成人av| 九九九精品视频| 欧美丝袜一区| 国产一区二区三区四区五区 | 精品丝袜在线| 热久久国产精品| 久久a爱视频| 视频一区国产视频| 麻豆一区二区三| 天堂成人国产精品一区| 国产美女亚洲精品7777| 欧美成人精品三级网站| 一区在线视频观看| 国产日韩欧美在线播放不卡| 91欧美日韩| 另类激情亚洲| 国产剧情一区| 亚洲激情中文在线| 麻豆精品新av中文字幕| 欧美精品自拍| 激情中国色综合| 亚洲免费毛片| 久久夜夜操妹子| 日韩精品亚洲专区| 激情婷婷亚洲| 国产精品免费不| 免费日韩av| 麻豆视频在线看| 日韩精品五月天| 免费毛片在线不卡| 久久在线91| 香蕉成人久久| 成人午夜亚洲| 日本视频中文字幕一区二区三区| 久久久久免费av| 老牛国内精品亚洲成av人片| 男女性色大片免费观看一区二区| 粉嫩av一区二区三区四区五区| 午夜亚洲福利在线老司机| 麻豆国产精品| 亚洲精品三级| 亚洲高清av| 国产黄大片在线观看| 久久精品一本| 欧美精品三级在线| 日韩午夜视频在线| 午夜av成人| 成人在线视频区| 国产精品99久久免费| 日本不卡一二三区黄网| 99视频一区| 亚洲二区免费| 日韩和的一区二在线| 久久精品国产福利| 日韩精品一页| 婷婷精品进入| 日韩电影二区| 欧美精品成人| 亚欧洲精品视频在线观看| 久久久久久久久久久妇女| 精品99在线| 亚洲精品字幕| 蜜臀av亚洲一区中文字幕| 99国产一区| 午夜国产欧美理论在线播放| 群体交乱之放荡娇妻一区二区| 久久精品亚洲一区二区| 国产欧美在线观看免费| 日本99精品| 日韩一区二区三区四区五区| 蜜臀久久久99精品久久久久久| 国产精品美女久久久| 亚洲欧美日韩高清在线| 久久久水蜜桃av免费网站| 不卡专区在线| 岛国av免费在线观看| 国产精品亚洲综合在线观看| 日韩精品一级| 欧美永久精品| 欧美一级网站| 欧美日韩一区二区三区四区在线观看 | 波多野结衣久久精品| 国产一区二区三区四区| 国产剧情在线观看一区| 国产探花一区| 国产日韩欧美三级| 日韩视频1区| 欧美一级网站| 亚洲ww精品| 日本 国产 欧美色综合| 视频一区视频二区中文字幕| 免费av一区| 超碰99在线| 日韩专区精品| 国内亚洲精品| 不卡中文一二三区| 欧美日韩精品在线一区| 亚洲播播91| 欧美日韩国产传媒| 久热精品在线| 91成人在线| 国产精品黄色| 国内揄拍国内精品久久| 国产精品成人a在线观看| 日韩av在线中文字幕| 色爱av综合网| 999在线观看精品免费不卡网站| 日韩一区二区久久| 日韩中文字幕无砖| 国产精品久久乐| 夜鲁夜鲁夜鲁视频在线播放| 激情婷婷亚洲| 日韩一区二区久久| 精品亚洲成人| 日韩精品免费一区二区在线观看| 日韩精品一级中文字幕精品视频免费观看| 欧美啪啪一区| 91九色精品国产一区二区| 日韩国产欧美三级| 日韩理论视频| 日韩一区精品| 久久在线视频免费观看| 青青草91久久久久久久久| 136国产福利精品导航网址| 日本午夜精品久久久久| 久久久久久久久久久妇女| 日韩一区二区三区高清在线观看 | 91精品国产91久久久久久黑人| 午夜亚洲福利| 日韩在线二区|