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

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

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

瀏覽:26日期: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

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

3.過濾器的實(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í)使用過濾器?

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

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

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

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

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

SpringBoot使用過濾器

兩種方式:

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)限過濾器 * @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è)過濾器

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è)過濾器 * @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()); }}

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

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
91欧美极品| 国产精品毛片aⅴ一区二区三区| 鲁大师成人一区二区三区 | 久久99影视| 久久99伊人| 国产亚洲高清一区| 亚洲一级特黄| 久久99久久久精品欧美| 国产欧美91| 国产精品一区二区av交换| 精品免费av一区二区三区| 亚洲精品韩国| 日韩精品视频中文字幕| 欧美黄色网页| 性欧美69xoxoxoxo| 日韩av片子| 中文av在线全新| 麻豆91小视频| 99国产精品免费视频观看| 亚洲精品一级二级| 国产成人精品一区二区三区视频| 亚洲精品护士| 国产a久久精品一区二区三区| 四虎884aa成人精品最新| 国产精品一区二区三区美女 | 亚洲免费专区| 亚洲精品在线二区| 日韩一区二区三免费高清在线观看| 亚洲精品看片| 日韩黄色av| 日韩精品一区二区三区免费视频| 国产精品啊啊啊| 麻豆免费精品视频| 国产伦理一区| 久久99久久人婷婷精品综合| 99国产一区| 久久久久97| 999久久久精品国产| 日韩激情中文字幕| 国产麻豆一区二区三区精品视频| 欧美一区二区三区高清视频| 极品av在线| 亚洲国产不卡| 国产麻豆一区| 在线观看亚洲精品福利片| av资源新版天堂在线| 蜜臀a∨国产成人精品| 亚洲v天堂v手机在线| 国产剧情一区二区在线观看| 亚洲国产福利| 高清一区二区| 亚洲三级av| 亚洲精品影视| 韩国三级一区| 国产一区日韩欧美| 国产亚洲在线| 97精品资源在线观看| 久久精品99国产国产精| 深夜视频一区二区| 精品视频99| 亚洲精品九九| 国产精品羞羞答答在线观看| 国产欧美日韩免费观看| 久久99久久久精品欧美| 高清在线一区| 欧美成人综合| 精品视频在线观看网站| 国产中文欧美日韩在线 | 国内精品麻豆美女在线播放视频| 午夜国产精品视频| 日本韩国欧美超级黄在线观看| 综合激情一区| 青青青免费在线视频| 蜜桃av一区二区| 麻豆久久一区| 午夜久久黄色| 在线国产一区二区| 99香蕉国产精品偷在线观看| 国产精品99精品一区二区三区∴| 国产欧美成人| 国产亚洲第一伦理第一区| 亚洲二区三区不卡| 欧美日韩少妇| 精品国产一级| 国产传媒在线| 麻豆理论在线观看| 久久国内精品自在自线400部| 免费精品视频| 精品国产乱码久久久久久1区2匹| 老司机精品视频网| 在线一区二区三区视频| 欧美精品资源| 美女毛片一区二区三区四区| 美女久久久久| 日韩亚洲在线| 国产高潮在线| 精品亚洲a∨一区二区三区18| 97精品久久| 国模精品一区| 精品美女久久| 欧美日韩在线网站| 日本成人中文字幕在线视频| 国产精品片aa在线观看 | 四虎影视精品| 欧洲av一区二区| 欧美www视频在线观看| 免费久久99精品国产自在现线| 精品国产aⅴ| 亚洲丝袜啪啪| 蘑菇福利视频一区播放| 国产精品99视频| 国产日本精品| 日韩午夜精品| 九九综合九九| 成人亚洲一区| 美女视频黄 久久| 婷婷成人av| 少妇精品久久久一区二区| 欧美 日韩 国产精品免费观看| 激情黄产视频在线免费观看| 日本a级不卡| 首页国产欧美日韩丝袜| 精品一区二区三区中文字幕| 国产理论在线| 国产精品xvideos88| 亚洲欧美日本日韩| 亚洲国产不卡| 亚洲不卡av不卡一区二区| 免费观看亚洲| 国产中文欧美日韩在线| 久久精品免费看| 国产欧美69| 国产精品成人3p一区二区三区| 男女男精品视频网| 亚洲人成亚洲精品| 99国产精品| 亚洲一区二区三区久久久| 成人av二区| 麻豆成人在线| 麻豆精品91| 日韩精品1区2区3区| 免费黄网站欧美| 国产亚洲毛片在线| 国产精品91一区二区三区| 精品一区毛片| av成人国产| 99国产精品久久久久久久| 99国产精品99久久久久久粉嫩| 午夜欧美精品| 欧美日韩国产在线观看网站| 久久国产99| 免费久久精品视频| 日韩黄色av| 久久精品超碰| 高清在线一区| 手机在线电影一区| 久久五月天小说| 亚洲二区视频| 亚洲一区av| 97久久亚洲| 国产福利91精品一区二区| 国产精品高清一区二区| 国产成人黄色| 国际精品欧美精品| 91精品二区| 欧美特黄一级| 欧美一级二级视频| 日韩午夜高潮| 日韩精品免费视频人成| 蜜臀久久99精品久久久久宅男| 日韩成人精品一区二区三区 | 久久精品国产99国产| a日韩av网址| 激情视频一区二区三区| 免费在线观看不卡| 欧美在线不卡| а√天堂8资源中文在线| 日韩一区二区三区在线免费观看| 日韩欧美网址| 午夜欧美视频| 国产精品中文字幕制服诱惑| 精品少妇av| 老牛影视一区二区三区| 日韩av中文字幕一区二区| 成人亚洲精品| 亚洲深夜影院| 麻豆久久一区二区| 91精品精品| 国产欧美日韩一区二区三区四区| 另类综合日韩欧美亚洲| 色爱综合av| 中文亚洲免费| 国产精品chinese| 久久影视一区| 亚洲精品系列| 亚洲小说欧美另类婷婷| 亚洲v天堂v手机在线| 国产在线|日韩| 视频一区免费在线观看| 国产 日韩 欧美 综合 一区|