作項目的時候咱們常遇到的問題就是執行對應的邏輯代碼前完成數據驗證,sprint boot 如何實現的呢?java
攔截器web
過濾器spring
對於以上兩個概念的區別能夠自行查找網上的資料ide
如今咱們一步步實現攔截器post
1 建立spring boot 項目spa
2 建立攔截器rest
package com.interceptor; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @Component public class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { response.sendRedirect("/v1/banner"); System.out.println("攔截器生效"); return true; // true 繼續執行,false 直接返回 } @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 { } }
以上咱們建立了攔截器並加入到了組件中code
package com; import com.interceptor.LoginInterceptor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringBootConfiguration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; @SpringBootConfiguration public class InterceptorConfig extends WebMvcConfigurationSupport { @Autowired LoginInterceptor loginInterceptor; @Override protected void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(loginInterceptor).addPathPatterns("/**").excludePathPatterns("/v1/banner"); } }
完成攔截器的註冊,建立rest請求體驗攔截器blog