這篇文章主要講解了“springboot中過濾器和攔截器的實例介紹”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“springboot中過濾器和攔截器的實例介紹”吧!
攔截器與過濾器
在講Spring boot之前,我們先了解一下過濾器和攔截器。這兩者在功能方面很類似,但是在具體技術實現方面,差距還是比較大的。在分析兩者的區別之前,我們先理解一下AOP的概念,AOP不是一種具體的技術,而是一種編程思想。在面向對象編程的過程中,我們很容易通過繼承、多態來解決縱向擴展。 但是對于橫向的功能,比如,在所有的service方法中開啟事務,或者統一記錄日志等功能,面向對象的是無法解決的。所以AOP——面向切面編程其實是面向對象編程思想的一個補充。而我們今天講的過濾器和攔截器都屬于面向切面編程的具體實現。而兩者的主要區別包括以下幾個方面:
1、Filter是依賴于Servlet容器,屬于Servlet規范的一部分,而攔截器則是獨立存在的,可以在任何情況下使用。
2、Filter的執行由Servlet容器回調完成,而攔截器通常通過動態代理的方式來執行。
3、Filter的生命周期由Servlet容器管理,而攔截器則可以通過IoC容器來管理,因此可以通過注入等方式來獲取其他Bean的實例,因此使用會更方便。
過濾器
@Component public class AddResponseHeaderFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { String header = response.getHeader("Set-Cookie"); Collection<String> headerNames = response.getHeaderNames(); System.out.println("___________________"); System.out.println(header); System.out.println("___________________"); filterChain.doFilter(request, response); } }
攔截器
public class HttpResponseInterceptorHandler implements HandlerInterceptor { // 實現HandlerInterceptor 或者 繼承HandlerInterceptorAdapter都可以,如果想看著簡潔就使用后者 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { response.addHeader("content-test","123"); 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 { } }
感謝各位的閱讀,以上就是“springboot中過濾器和攔截器的實例介紹”的內容了,經過本文的學習后,相信大家對springboot中過濾器和攔截器的實例介紹這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。