springmvc攔截器實(shí)現(xiàn) springmvc三大核心
夕逆IT
- 前端設(shè)計(jì)
- 2023-08-13
- 86

大家好,今天來為大家解答springmvc攔截器實(shí)現(xiàn)這個問題的一些問題點(diǎn),包括springmvc三大核心也一樣很多人還不知道,因此呢,今天就來為大家分析分析,現(xiàn)在讓我們...
大家好,今天來為大家解答springmvc攔截器實(shí)現(xiàn)這個問題的一些問題點(diǎn),包括springmvc三大核心也一樣很多人還不知道,因此呢,今天就來為大家分析分析,現(xiàn)在讓我們一起來看看吧!如果解決了您的問題,還望您關(guān)注下本站哦,謝謝~
springmvc容器有哪些
SpringMVC是一個基于Java的Web框架,它是SpringFramework的一部分。在SpringMVC中,有以下幾個重要的容器:
1.DispatcherServlet:它是SpringMVC的核心,負(fù)責(zé)接收HTTP請求并將其分發(fā)給對應(yīng)的處理器。
2.ApplicationContext:SpringMVC應(yīng)用通常使用Spring的ApplicationContext來管理和裝配組件,它是SpringFramework的核心容器。
3.HandlerMapping:它負(fù)責(zé)將請求映射到對應(yīng)的處理器(Controller)。
4.HandlerAdapter:它負(fù)責(zé)將請求交給具體的處理器進(jìn)行處理,并處理相應(yīng)的攔截器。
5.ViewResolver:它負(fù)責(zé)根據(jù)處理器的返回值確定適當(dāng)?shù)囊晥D并渲染響應(yīng)。
6.ModelAndView:它是一個包含模型數(shù)據(jù)和邏輯視圖名的對象,用于封裝處理器的返回值。
這些容器共同協(xié)作,使得SpringMVC能夠有效地處理HTTP請求和響應(yīng),并提供靈活的視圖解析和請求處理機(jī)制。
springmvc不同模塊如何控制
SpringMVC的不同模塊可以通過控制器和請求映射的方式進(jìn)行控制。1,SpringMVC的不同模塊可以很好地進(jìn)行控制。2,原因:SpringMVC框架使用了控制器來接收和處理請求,并通過請求映射將請求分發(fā)給不同的模塊。3,通過在控制器中設(shè)置請求映射注解,可以將特定的URL請求映射到相應(yīng)的模塊或處理方法。這樣,不同模塊可以根據(jù)請求的URL來執(zhí)行相應(yīng)的功能邏輯,實(shí)現(xiàn)有效的模塊控制和管理。同時,SpringMVC還提供了攔截器和過濾器等機(jī)制,用于對請求的預(yù)處理和后處理,增強(qiáng)了模塊間的交互和控制能力。總的來說,SpringMVC提供了一種靈活可靠的方式來管理和控制不同模塊之間的交互和請求處理。
Spring Boot項(xiàng)目中如何定制攔截器
SpringBoot中可以使用Intercept和Filter兩種方式來實(shí)現(xiàn)攔截器。本文主要給大家講解一下這兩種方式的實(shí)現(xiàn)方式以及Filter和Intercept的區(qū)別。
Intercept實(shí)現(xiàn)方式先定義一個攔截器類,需要繼承HandlerInterceptor接口,點(diǎn)擊這個接口可以看到有三個方法可以被實(shí)現(xiàn),之所以說可以被實(shí)現(xiàn),因?yàn)檫@三個方法被default修飾了,也就是非必須實(shí)現(xiàn),接口里面已經(jīng)有了這個接口的默認(rèn)實(shí)現(xiàn),這是java8的新特性。
所以當(dāng)我們創(chuàng)建一個自定義的攔截器類的時候,是可以選擇是否去實(shí)現(xiàn)其中的方法,比如大多數(shù)的情況下,我們只需要實(shí)現(xiàn)preHandler這個方法就可以滿足我們的業(yè)務(wù)了,那么postHandle和afterCompletion方法就不需要實(shí)現(xiàn)了:
定義好攔截器類后,需要把這個攔截器加載到攔截器鏈中,所以我們需要WebConfig類,這個類需要實(shí)現(xiàn)WebMvcConfigurer接口類:
ok,一個攔截器就添加好了~
WebMvcConfigurer的作用就是為我們實(shí)現(xiàn)了通用的攔截器,我們?nèi)绻胩砑右恍I(yè)務(wù)相關(guān)的攔截器,那么就實(shí)現(xiàn)這個接口類,然后像上面這樣操作即可。
Filter實(shí)現(xiàn)方式Filter實(shí)現(xiàn)還是之前的Servlet方式,先定義一個TestFilter類繼承Filter接口:
然后再定義一個FilterConf類,把這個TestFilter注冊到過濾器鏈中:
大家可以看到這里面有一個FilterRegistrationBean類,這個類就是SpringBoot為大家提供的過濾器,只要把你自定義的Filter添加到這里來就可以了,大家也可以自己去實(shí)現(xiàn)以下,然后點(diǎn)擊上面這些方法看看FilterRegistrationBean為我們做了哪些事情。
如果有多個過濾器怎么辦呢?
這個方法就是設(shè)置過濾器的優(yōu)先級,可以根據(jù)業(yè)務(wù)需要定制自己的攔截器的執(zhí)行順序。
Filter和Intercept的區(qū)別上面就是為大家?guī)淼脑赟pringBoot中實(shí)現(xiàn)攔截器的兩種方式,通常我們在做API項(xiàng)目的時候,可以在接口請求之前校驗(yàn)前端傳遞過來的token是否合法,也可以在這里設(shè)置是否允許跨域??缬虻闹R大家有興趣也可以學(xué)習(xí)一下,還是很有意思的。
這里再和大家一起學(xué)習(xí)下過濾器和攔截器的區(qū)別,面試中也經(jīng)常會有這樣的面試題:
Filter是基于函數(shù)回調(diào),而Intercept是基于java的反射機(jī)制;
Filter是servlet的技術(shù),而Intercept是注冊在spring容器中,它不依賴servlet容器
Filter可以攔截幾乎所有的請求(包含對靜態(tài)資源的請求),而Intercept只攔截action請求(不攔截靜態(tài)資源請求)
Filter不能訪問action上下文及值棧里的對象,而Intercept都是可以的;
Intercept可以獲取spring容器里的對象,而Filter是不行的;
Intercept在action的生命周期內(nèi)是可以多次調(diào)用,而Filter只在容器初始化時被調(diào)用一次。
了解了以上的區(qū)別之后,相信大家在實(shí)際開發(fā)使用過程中便可以根據(jù)不同的業(yè)務(wù)場景具體是選擇Filter還是Intercept就能心中有數(shù)了。
以上就是我為大家?guī)淼娜绾卧赟pringBoot中定制攔截器的相關(guān)知識,如有問題大家可以隨時私信我。
我是【java架構(gòu)設(shè)計(jì)】,歡迎大家評論、點(diǎn)贊!關(guān)注我,持續(xù)為您提供科技領(lǐng)域優(yōu)質(zhì)內(nèi)容!springmvc有哪些類
SpringMVC的類如下:
1.前端控制器組件(DispatcherServlet)
2.處理器組件(Controller)
3.處理器映射器組件(HandlerMapping)
4.處理器適配器組件(HandlerAdapter)
5.攔截器組件(HandlerInterceptor)
6.視圖解析器組件(ViewResolver)
7.視圖組件(View)
8.數(shù)據(jù)轉(zhuǎn)換組件(DataBinder)
9.消息轉(zhuǎn)換器組件(HttpMessageConverter)
責(zé)任鏈在spring boot 中的使用
在SpringBoot中,責(zé)任鏈模式可以通過使用攔截器(Interceptor)來實(shí)現(xiàn)。攔截器是Spring框架提供的一種機(jī)制,用于在請求處理過程中進(jìn)行攔截和處理。
以下是在SpringBoot中使用責(zé)任鏈模式的一般步驟:
創(chuàng)建攔截器類:創(chuàng)建多個攔截器類,每個攔截器類負(fù)責(zé)處理特定的請求或業(yè)務(wù)邏輯。這些攔截器類應(yīng)該實(shí)現(xiàn)Spring框架的HandlerInterceptor接口。
配置攔截器:在SpringBoot的配置類中,通過實(shí)現(xiàn)WebMvcConfigurer接口,并重寫addInterceptors方法來配置攔截器。在addInterceptors方法中,按照需要的順序添加攔截器。
定義攔截器執(zhí)行順序:在配置攔截器時,可以通過實(shí)現(xiàn)Ordered接口或使用@Order注解來定義攔截器的執(zhí)行順序。較小的值表示較高的優(yōu)先級。
處理請求:當(dāng)請求到達(dá)時,SpringBoot會按照配置的順序依次調(diào)用每個攔截器的preHandle、postHandle和afterCompletion方法。您可以在這些方法中編寫自定義的邏輯來處理請求。
通過以上步驟,您可以在SpringBoot中實(shí)現(xiàn)責(zé)任鏈模式,將請求傳遞給不同的攔截器進(jìn)行處理。每個攔截器可以根據(jù)需要進(jìn)行處理,或者將請求傳遞給下一個攔截器。
只用html頁面 spring mvc攔截器 如何配置
謝邀。
我看你主要是對以下兩個問題不清楚:
問題一:是不是html就需要用tomcat的攔截器而不用spring的?這個你都可以使用。Spring的一系列filter也都是web容器(不一定是tomcat)的filter的實(shí)現(xiàn)。
問題二:.jsp是不是直接改成.html就行啦?關(guān)于這個問題,個人不推薦使用InternalResourceViewResolver。InternalResourceViewResolver處理的視圖是InternalResourceView或者JstlView。這兩者更適合于jsp。
個人推薦你使用thymeleaf,或者更小巧的beetl
OK,本文到此結(jié)束,希望對大家有所幫助。
本文鏈接:http://xinin56.com/qianduan/3066.html