日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

【SpringBoot】SpringBoot拦截器实战和 Servlet3.0自定义Filter、Listener

發布時間:2025/3/21 javascript 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【SpringBoot】SpringBoot拦截器实战和 Servlet3.0自定义Filter、Listener 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

=================6、SpringBoot攔截器實戰和 Servlet3.0自定義Filter、Listener ============

?

1、深入SpringBoot2.x過濾器Filter和使用Servlet3.0配置自定義Filter實戰(核心知識)
簡介:講解SpringBoot里面Filter講解和使用Servlet3.0配置自定義Filter實戰

filter簡單理解:人--->檢票員(filter)---> 景點

1、SpringBoot啟動默認加載的Filter
characterEncodingFilter
hiddenHttpMethodFilter
httpPutFormContentFilter
requestContextFilter

2、Filter優先級

Ordered.HIGHEST_PRECEDENCE
Ordered.LOWEST_PRECEDENCE

低位值意味著更高的優先級 Higher values are interpreted as lower priority
自定義Filter,避免和默認的Filter優先級一樣,不然會沖突

注冊Filter的bean FilterRegistrationBean
同模塊里面有相關默認Filter
web->servlet->filter


3、自定義Filter
1)使用Servlet3.0的注解進行配置
2)啟動類里面增加 @ServletComponentScan,進行掃描

?


3)新建一個Filter類,implements Filter,并實現對應的接口
4) @WebFilter 標記一個類為filter,被spring進行掃描
urlPatterns:攔截規則,支持正則

6)控制chain.doFilter的方法的調用,來實現是否通過放行
不放行,web應用resp.sendRedirect("/index.html");
場景:權限控制、用戶登錄(非前端后端分離場景)等

1、官網地址:https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-embedded-container-servlets-filters-listeners

?

package net.xdclass.demo.Filter;import java.io.IOException;import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;@WebFilter(urlPatterns = "/api/*", filterName = "loginFilter") public class LoginFilter implements Filter{/*** 容器加載的時候調用*/@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("init loginFilter");}/*** 請求被攔截的時候進行調用*/@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("doFilter loginFilter");HttpServletRequest req = (HttpServletRequest) servletRequest;HttpServletResponse resp = (HttpServletResponse) servletResponse;String username = req.getParameter("username");if ("xdclass".equals(username)) {filterChain.doFilter(servletRequest,servletResponse);} else {resp.sendRedirect("/index.html");return;}}/*** 容器被銷毀的時候被調用*/@Overridepublic void destroy() {System.out.println("destroy loginFilter");}} filter

?

?


2、Servlet3.0的注解自定義原生Servlet實戰
講解:使用 Servlet3.0的注解自定義原生Servlet和Listener
1、自定義原生Servlet

@WebServlet(name = "userServlet",urlPatterns = "/test/customs")
public class UserServlet extends HttpServlet{

@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().print("custom sevlet");
resp.getWriter().flush();
resp.getWriter().close();
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}

?

?

3、Servlet3.0的注解自定義原生Listener監聽器實戰
簡介:監聽器介紹和Servlet3.0的注解自定義原生Listener監聽器實戰

1、自定義Listener(常用的監聽器 servletContextListener、httpSessionListener、servletRequestListener)
@WebListener
public class RequestListener implements ServletRequestListener {

@Override
public void requestDestroyed(ServletRequestEvent sre) {
// TODO Auto-generated method stub
System.out.println("======requestDestroyed========");
}

@Override
public void requestInitialized(ServletRequestEvent sre) {
System.out.println("======requestInitialized========");

}

?

?


4、SpringBoot2.X自定義攔截器實戰及新舊配置對比(核心知識)
簡介: 講解攔截器使用,Spingboot2.x新版本配置攔截攔截器和舊版本SpringBoot配置攔截器區別講解
類似filter,但是不等同。
1、@Configuration
繼承WebMvcConfigurationAdapter(SpringBoot2.X之前舊版本)

package net.xdclass.demo.intecpter;import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;//@Configuration public class CustomOldWebMvcConfigurer extends WebMvcConfigurerAdapter {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LoginIntercepter()).addPathPatterns("/api/");super.addInterceptors(registry);}} oldconfig

?

SpringBoot2.X 新版本配置攔截器 implements WebMvcConfigurer

package net.xdclass.demo.intecpter;import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration public class CustomWebMvcConfigurer implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LoginIntercepter()).addPathPatterns("/api2/*/**");registry.addInterceptor(new TwoIntercepter()).addPathPatterns("/api2/*/**");//.excludePathPatterns("/api2/xxx/**"); //攔截全部 /*/*/** WebMvcConfigurer.super.addInterceptors(registry);}} 2.X新版本confi

?

2、自定義攔截器 HandlerInterceptor (分2步驟:1.新建intercept實現接口 2配置類實現接口,注解注冊,添加新建的攔截器到url映射)
preHandle:調用Controller某個方法之前
postHandle:Controller之后調用,視圖渲染之前,如果控制器Controller出現了異常,則不會執行此方法
afterCompletion:不管有沒有異常,這個afterCompletion都會被調用,用于資源清理

package com.atguigu.springboot.interceptor;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;public class LoginIntercepter implements HandlerInterceptor{/*** 進入controller方法之前*/@Overridepublic boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {System.out.println("LoginIntercepter------->preHandle");// String token = request.getParameter("access_token"); // // response.getWriter().print("fail");return HandlerInterceptor.super.preHandle(request, response, handler);}/*** 調用完controller之后,視圖渲染之前*/@Overridepublic void postHandle(HttpServletRequest request,HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {System.out.println("LoginIntercepter------->postHandle");HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);}/*** 整個完成之后,通常用于資源清理*/@Overridepublic void afterCompletion(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex)throws Exception {System.out.println("LoginIntercepter------->afterCompletion");HandlerInterceptor.super.afterCompletion(request, response, handler, ex);}} logininterceptor

?

3、按照注冊順序進行攔截,先注冊,先被攔截

攔截器不生效常見問題:
1)是否有加@Configuration
2)攔截路徑是否有問題 ** 和 *
3)攔截器最后路徑一定要 “/**”, 如果是目錄的話則是 /*/

Filter
是基于函數回調 doFilter(),而Interceptor則是基于AOP思想
Filter在只在Servlet前后起作用,而Interceptor夠深入到方法前后、異常拋出前后等

依賴于Servlet容器即web應用中,而Interceptor不依賴于Servlet容器所以可以運行在多種環境。

在接口調用的生命周期里,Interceptor可以被多次調用,而Filter只能在容器初始化時調用一次。

Filter和Interceptor的執行順序

過濾前->攔截前->action執行->攔截后->過濾后

轉載于:https://www.cnblogs.com/hellowq/p/10523407.html

總結

以上是生活随笔為你收集整理的【SpringBoot】SpringBoot拦截器实战和 Servlet3.0自定义Filter、Listener的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一二三区在线播放 | 又粗又猛又爽又黄的视频 | yy4138理论片动漫理论片 | 久久国产精品毛片 | 日韩免费高清一区二区 | 91超薄丝袜肉丝一区二区 | 黄色片在线免费观看 | 啪啪一区二区 | 天堂а在线中文在线新版 | av手机网| 超碰在线c | 动漫涩涩免费网站在线看 | 又大又粗又爽18禁免费看 | 国产毛片毛片毛片毛片毛片毛片 | 99视频精品免费 | 国产美女视频91 | 三级全黄做爰在线观看 | 中文在线观看免费网站 | 久久精品人妻一区二区三区 | 日本暧暧视频 | 日韩女优一区 | 69国产在线 | 少妇把腿扒开让我舔18 | www.久久成人 | 久久青青草原 | 亚洲无av在线中文字幕 | 99视频在线播放 | 成人免费黄色网 | 久久精品| 毛片日本 | 久久综合av | 波多野结衣乳巨码无在线 | 亚洲精品视频中文字幕 | 婷婷色中文字幕 | 一本久道视频一本久道 | 91网视频 | 久久久精品人妻一区二区三区四 | 中文字幕在线日亚洲9 | 亚洲国产精品久久久久久久 | 色人阁五月天 | 国产乱码精品1区2区3区 | 欧洲美女av | 日本55丰满熟妇厨房伦 | av免费亚洲 | 精品一区在线看 | 欧美色图3p | 欧洲视频一区二区 | 午夜在线免费观看 | 伊人亚洲| 18精品爽国产白嫩精品 | 香蕉a视频 | 尤物自拍| 奶波霸巨乳一二三区乳 | 操皮视频 | 国产成人无码精品久久久久久 | 黄色国产精品 | 久久天堂视频 | 少妇又色又爽又黄的视频 | 成人动漫免费在线观看 | 欧美国产片 | 特种兵之深入敌后高清全集免费观看 | 偷拍亚洲另类 | 99久久精品一区二区 | 午夜黄色小视频 | 黄色一级毛片 | 国产毛片在线 | 亚洲AV无码成人精品区在线观 | 久热综合| 欧美日韩中文一区 | 欧洲亚洲一区二区 | 豆花免费跳转入口官网 | 永久免费看片在线观看 | 亚洲国产视频一区二区三区 | 一区二区三区不卡在线观看 | 日韩不卡高清 | 亚洲综合精品国产 | 国产一区二区免费视频 | 青青草原伊人网 | 理论片在线观看理伦片 | 国产91网址 | 老师用丝袜脚帮我脚交 | 成人女同av免费观看 | 久草免费在线色站 | 老汉av网站 | 污污视频网站 | 男生女生插插插 | 欧美久草| 国产中文在线 | 精精国产 | 国产手机在线观看 | 蜜臀久久99精品久久久画质超高清 | 99久久久无码国产精品性 | 美女诱惑av | 欧美另类xxxx | 欧美日韩成人一区 | 国产又黄又猛又粗又爽 | 4438亚洲 | 午夜激情男女 | 精品国产乱码久久久久久1区2区 |