中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站開發(fā)研究背景域名搜索

網(wǎng)站開發(fā)研究背景,域名搜索,企業(yè)微信b2b,研究生計劃書模板攔截器,通俗來來將,就是我們將訪問某個路徑的請求給攔截下來,然后可以對這個請求做一些操作 基本使用 創(chuàng)建攔截器類 讓類實現(xiàn)HandlerInterceptor接口,重寫接口中的三個方法。 Component //定義攔截器類,實現(xiàn)Handle…

攔截器.png
攔截器,通俗來來將,就是我們將訪問某個路徑的請求給攔截下來,然后可以對這個請求做一些操作

基本使用

創(chuàng)建攔截器類

讓類實現(xiàn)HandlerInterceptor接口,重寫接口中的三個方法。

@Component
//定義攔截器類,實現(xiàn)HandlerInterceptor接口
//注意當(dāng)前類必須受Spring容器控制
public class ProjectInterceptor implements HandlerInterceptor {@Override//原始方法調(diào)用前執(zhí)行的內(nèi)容public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("preHandle...");// true 放行,false 攔截return true;}@Override//原始方法調(diào)用后執(zhí)行的內(nèi)容public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("postHandle...");}@Override//原始方法調(diào)用完成后執(zhí)行的內(nèi)容public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("afterCompletion...");}
}

配置攔截器類

@Configuration
public class SpringMvcSupport extends WebMvcConfigurationSupport {@Autowiredprivate ProjectInterceptor projectInterceptor;// 這個方法是用來配置靜態(tài)資源的,比如html,js,css等等@Overrideprotected void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/pages/**").addResourceLocations("/pages/");}// 這個方法用來注冊攔截器,我們自己寫好的攔截器需要通過這里添加注冊才能生效@Overrideprotected void addInterceptors(InterceptorRegistry registry) {//配置攔截器registry.addInterceptor(projectInterceptor).addPathPatterns("/books" );//配置不攔截路徑 .excludePathPatterns("/login");}
}

這里ProjectInterceptor攔截器也可以不注入,直接new一個該類

我們可以看到攔截器HandlerInterceptor的使用方法:

  • 首先編寫攔截器HandlerInterceptor,來寫出攔截后要執(zhí)行的邏輯
  • 然后編寫攔截器配置類,來 **注冊攔截器 **,使之生效,并且可以配置需要 攔截的路徑

三種攔截方式

  • 前置處理方法 - preHandle - 進入controller方法之前
  • 后置處理方法 - postHandle - 方法內(nèi)部處理完成,頁面渲染之前
  • 完成處理方法 - afterCompletion - 方法內(nèi)部處理完成,頁面渲染之前

這三個方法中,最常用的是 **preHandle **, 在這個方法中可以通過返回值來決定是否要進行放行,我們可以把業(yè)務(wù)邏輯放在該方法中,如果滿足業(yè)務(wù)則返回true放行,不滿足則返回false攔截。

接下來我們來具體看一下這三種攔截方式對應(yīng)的函數(shù)

攔截器參數(shù)

前置處理方法

原始方法之前運行preHandle

public boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object handler) throws Exception {System.out.println("preHandle");return true;
}
  • request: 請求對象。使用request對象可以獲取請求數(shù)據(jù)中的內(nèi)容,如獲取請求頭的Content-Type
  • response: 響應(yīng)對象
  • handler: 被調(diào)用的處理器對象,本質(zhì)上是一個方法對象,對反射中的Method對象進行了再包裝。使用handler參數(shù),可以獲取方法的相關(guān)信息(和反射中的class類一樣)

后置處理方法

原始方法運行后運行,如果原始方法被攔截,則不執(zhí)行

public void postHandle(HttpServletRequest request,HttpServletResponse response,Object handler,ModelAndView modelAndView) throws Exception {System.out.println("postHandle");
}

前三個參數(shù)和上面的是一致的。
modelAndView:如果處理器執(zhí)行完成具有返回結(jié)果,可以讀取到對應(yīng)數(shù)據(jù)與頁面信息,并進行調(diào)整
因為咱們現(xiàn)在都是返回json數(shù)據(jù),所以該參數(shù)的使用率不高。

完成處理方法

攔截器最后執(zhí)行的方法,無論原始方法是否執(zhí)行

public void afterCompletion(HttpServletRequest request,HttpServletResponse response,Object handler,Exception ex) throws Exception {System.out.println("afterCompletion");
}

前三個參數(shù)與上面的是一致的。

ex:如果處理器執(zhí)行過程中出現(xiàn)異常對象,可以針對異常情況進行單獨處理
因為我們現(xiàn)在已經(jīng)有全局異常處理器類,所以該參數(shù)的使用率也不高。

多個攔截器

寫法

配置類和之前一樣,只不過多注冊了攔截器

@Configuration
@ComponentScan({"com.itheima.controller"})
@EnableWebMvc
//實現(xiàn)WebMvcConfigurer接口可以簡化開發(fā),但具有一定的侵入性
public class SpringMvcConfig implements WebMvcConfigurer {@Autowiredprivate ProjectInterceptor projectInterceptor;@Autowiredprivate ProjectInterceptor2 projectInterceptor2;@Overridepublic void addInterceptors(InterceptorRegistry registry) {//配置多攔截器registry.addInterceptor(projectInterceptor).addPathPatterns("/books","/books/*");registry.addInterceptor(projectInterceptor2).addPathPatterns("/books","/books/*");}
}

執(zhí)行順序

攔截器執(zhí)行的順序是和配置順序有關(guān)。就和前面所提到的運維人員進入機房的案例,先進后出。

  • 當(dāng)配置多個攔截器時,形成攔截器鏈
  • 攔截器鏈的運行順序參照攔截器添加順序為準(zhǔn)
  • 當(dāng)攔截器中出現(xiàn)對原始處理器的攔截,后面的攔截器均終止運行
  • 當(dāng)攔截器運行中斷,僅運行配置在前面的攔截器的afterCompletion操作

多個攔截器.png

preHandle:與配置順序相同,必定運行
postHandle:與配置順序相反,可能不運行
afterCompletion:與配置順序相反,可能不運行。
這個順序不太好記,最終只需要把握住一個原則即可:以最終的運行結(jié)果為準(zhǔn)

攔截器與過濾器

兩者的區(qū)別

  1. 過濾器基于函數(shù)回調(diào)、攔截器基于反射;
  2. 過濾器幾乎對所有請求起作用,攔截器只對目標(biāo)執(zhí)行方法起作用;
  3. 過濾器對請求進行預(yù)處理、再交給Servlet處理并且生成響應(yīng),最后Filter再對服務(wù)器響應(yīng)進行后處理;攔截器可以在方法執(zhí)行前調(diào)用(preHandle),方法執(zhí)行后調(diào)用(postHandle),視圖頁面渲染后調(diào)用(afterCompletion)

如果大家有什么思考和問題,可以在評論區(qū)討論,也可以私信我,很樂意為大家效勞。
好啦,今天的每日一題到這里就結(jié)束了,如果大家覺得有用,可以可以給我一個小小的贊呢,我們下期再見!

http://www.risenshineclean.com/news/42325.html

相關(guān)文章:

  • 做網(wǎng)站 警察佛山抖音seo
  • macos做網(wǎng)站快速網(wǎng)站推廣
  • 網(wǎng)站開發(fā)技術(shù)項目北京seo相關(guān)
  • 免費做網(wǎng)站方案新手怎么做seo優(yōu)化
  • win2012 iis 部署網(wǎng)站運營是做什么的
  • 網(wǎng)站轉(zhuǎn)化分析百度優(yōu)化怎么做
  • 大連市建委官方網(wǎng)站推廣一般收多少錢
  • java python 做網(wǎng)站武漢seo認(rèn)可搜點網(wǎng)絡(luò)
  • 北京營銷型網(wǎng)站建設(shè)價格西安百度推廣運營公司
  • 色母粒對網(wǎng)站的建議和優(yōu)化
  • 西安未央?yún)^(qū)網(wǎng)站建設(shè)微博推廣效果怎么樣
  • 網(wǎng)站admin密碼西安seo外包
  • 網(wǎng)站收錄是怎么回事免費網(wǎng)絡(luò)推廣網(wǎng)址
  • 中山網(wǎng)站推廣服務(wù)提高seo關(guān)鍵詞排名
  • 怎么自己用手機做網(wǎng)站門戶網(wǎng)站軟文
  • 做個類似淘寶的網(wǎng)站怎么做搜索引擎推廣的方法有哪些
  • 網(wǎng)站360自然排名要怎么做百度手機版
  • 廣州番禺網(wǎng)站建設(shè)工作室網(wǎng)站搭建
  • 網(wǎng)絡(luò)集資網(wǎng)站怎么做中國宣布取消新冠免費治療
  • 福建龍巖疫情一共有多少例aso如何優(yōu)化
  • 建站推廣網(wǎng)站排名東莞企業(yè)網(wǎng)站排名優(yōu)化
  • 懷化同城網(wǎng)站四川游戲seo整站優(yōu)化
  • wpf 網(wǎng)站開發(fā)百度云網(wǎng)盤資源
  • 怎么做網(wǎng)站鵝蛋生蠔指數(shù)基金定投怎么買
  • 扁平化顏色網(wǎng)站合肥網(wǎng)絡(luò)推廣公司
  • wordpress 過期時間seo是什么車
  • php做的網(wǎng)站模板下載網(wǎng)站seo優(yōu)化皆宣徐州百都網(wǎng)絡(luò)不錯
  • opencart做網(wǎng)站視頻國外域名購買
  • 武漢論壇網(wǎng)站有哪些怎么進行網(wǎng)絡(luò)推廣
  • 量化交易網(wǎng)站開發(fā)杭州網(wǎng)站優(yōu)化效果