国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【SpringMVC】| SpringMVC攔截器

這篇具有很好參考價(jià)值的文章主要介紹了【SpringMVC】| SpringMVC攔截器。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

一:SpringMVC攔截器

1. 攔截器介紹

2. HandlerInterceptor接口分析

3. 自定義攔截器實(shí)現(xiàn)權(quán)限驗(yàn)證


一:SpringMVC攔截器

SpringMVC 中的 Interceptor 攔截器,它的主要作用是攔截指定的用戶(hù)請(qǐng)求,并進(jìn)行相應(yīng)的預(yù)處理與后處理。其攔截的時(shí)間點(diǎn)在“處理器映射器根據(jù)用戶(hù)提交的請(qǐng)求映射出了所要執(zhí)行的處理器類(lèi),并且也找到了要執(zhí)行該處理器類(lèi)的處理器適配器,在處理器適配器執(zhí)行處理器之前”。當(dāng)然,在處理器映射器映射出所要執(zhí)行的處理器類(lèi)時(shí),已經(jīng)將攔截器與處理器組合為了一個(gè)處理器執(zhí)行鏈,并返回給了中央調(diào)度器。

1. 攔截器介紹

(1)攔截器的應(yīng)用場(chǎng)景?

針對(duì)請(qǐng)求和響應(yīng)進(jìn)行的額外的處理,在請(qǐng)求和響應(yīng)的過(guò)程中添加預(yù)處理、后處理和最終處理;主要應(yīng)用在以下場(chǎng)景當(dāng)中:

①日志記錄:記錄請(qǐng)求信息的日志。

②權(quán)限檢查:如登錄檢查。

③性能檢測(cè):檢測(cè)方法的執(zhí)行時(shí)間。

(2)攔截器的執(zhí)行原理

【SpringMVC】| SpringMVC攔截器

①preHandle():在請(qǐng)求被處理之前進(jìn)行操作;預(yù)處理。
②postHandle():在請(qǐng)求被處理之后,但結(jié)果還沒(méi)有渲染前進(jìn)行操作,可以改變響應(yīng)結(jié)果;后處理。
③afterCompletion:所有的請(qǐng)求響應(yīng)結(jié)束后執(zhí)行善后工作,清理對(duì)象、關(guān)閉資源 ;最終處理.。

(3)攔截器實(shí)現(xiàn)的兩種方式

繼承HandlerInterceptorAdapter【處理程序攔截適配器】的父類(lèi)。
實(shí)現(xiàn)HandlerInterceptor【處理程序攔截器】接口,推薦使用實(shí)現(xiàn)接口的方式,因?yàn)槔^承是單繼承的。

2. HandlerInterceptor接口分析

自定義攔截器,需要實(shí)現(xiàn) HandlerInterceptor 接口;并且該接口中含有三個(gè)方法:

(1)preHandle

該方法在處理器方法執(zhí)行之前執(zhí)行。其返回值為 boolean類(lèi)型,若為 true,則緊接著會(huì)執(zhí)行處理器方法,且會(huì)將 afterCompletion()方法放入到一個(gè)專(zhuān)門(mén)的方法棧中等待執(zhí)行。

(2)postHandle

該方法在處理器方法執(zhí)行之后執(zhí)行。處理器方法若最終未被執(zhí)行,則該方法不會(huì)執(zhí)行。由于該方法是在處理器方法執(zhí)行完后執(zhí)行,且該方法參數(shù)中包含 ModelAndView,所以該方法可以修改處理器方法的處理結(jié)果數(shù)據(jù),且可以修改跳轉(zhuǎn)方向。

(3)afterCompletion

當(dāng)preHandle()方法返回 true 時(shí),會(huì)將該方法放到專(zhuān)門(mén)的方法棧中,等到對(duì)請(qǐng)求進(jìn)行響應(yīng)的所有工作完成之后才執(zhí)行該方法。即該方法是在中央調(diào)度器渲染(數(shù)據(jù)填充)了響應(yīng)頁(yè)面之后執(zhí)行的,此時(shí)對(duì) ModelAndView 再操作也對(duì)響應(yīng)無(wú)濟(jì)于事。afterCompletion 最后執(zhí)行的方法,清除資源,例如在 Controller 方法中加入數(shù)據(jù)等。

3. 自定義攔截器實(shí)現(xiàn)權(quán)限驗(yàn)證

(1)改造登錄方法,在session中存儲(chǔ)用戶(hù)信息,用于進(jìn)行權(quán)限驗(yàn)證

細(xì)節(jié):一定要注意我們登錄界面login.jsp跳轉(zhuǎn)到的是/login還是/login.action;有沒(méi)有帶action直接決定我們后面攔截器exclude-mapping通行的路徑帶不帶.action!

package com.bjpowernode.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;

@Controller
public class WebInfAction {
    // 首先要跳轉(zhuǎn)到登錄頁(yè)面
    @RequestMapping("/showLogin")
    public String submit(){
        System.out.println("訪(fǎng)問(wèn)login.jsp進(jìn)行登錄");
        return "login";
    }
    // 跳轉(zhuǎn)到login.jsp后,在進(jìn)行判斷
    @RequestMapping("/login")
    public String login(String name, String pwd, HttpServletRequest request){ // 與前端保持一致,提交的數(shù)據(jù)自動(dòng)吸過(guò)來(lái)
        if ("root".equalsIgnoreCase(name) && "123".equalsIgnoreCase(pwd)){
            // 在session中存儲(chǔ)用戶(hù)信息(把name存進(jìn)去),用于權(quán)限驗(yàn)證
            request.getSession().setAttribute("user",name);

            return "main";
        }else {
            request.setAttribute("msg","用戶(hù)名或者密碼不正確");
            return "login";
        }
    }
}

(2)開(kāi)發(fā)攔截器的功能,實(shí)現(xiàn)HandlerInterceptor接口,重寫(xiě)preHandle()方法

package com.bjpowernode.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginInterceptor implements HandlerInterceptor {
    // 重寫(xiě)preHandle方法
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 是否登錄的判斷
        if(request.getSession().getAttribute("user") == null){ // 能取出來(lái),表示登錄過(guò)
            // 沒(méi)有登錄,打回到登錄的頁(yè)面,并給出提示
            request.setAttribute("msg","請(qǐng)先去登錄!");
            request.getRequestDispatcher("WEB-INF/jsp/login.jsp").forward(request,response);
            return false;
        }
        // 如果登錄過(guò),就放行往下走
        return true;
    }
}

(3)在springmvc.xml文件中注冊(cè)攔截器

攔截器中可以配置一個(gè)攔截器鏈,層層把關(guān);這里我們只需要配置一個(gè),總共配置三部分:

①映射要攔截的請(qǐng)求,一般設(shè)置為全部攔截。

②然后在設(shè)置要放行的請(qǐng)求。

③配置具體的攔截器實(shí)現(xiàn)功能的類(lèi)。

    <!--注冊(cè)攔截器-->
    <mvc:interceptors>
        <mvc:interceptor>
            <!--映射要攔截的請(qǐng)求-->
            <mvc:mapping path="/**"/>
            <!--配置要放行的請(qǐng)求-->
            <mvc:exclude-mapping path="/showLogin"/><!--登錄的頁(yè)面-->
            <mvc:exclude-mapping path="/login"/><!--登錄驗(yàn)證的頁(yè)面-->
            <!--配置具體的攔截器實(shí)現(xiàn)功能的類(lèi)-->
            <bean class="com.bjpowernode.interceptor.LoginInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>

(4)測(cè)試:

在登錄之前,我們還是知道showMain或者showIndex,直接訪(fǎng)問(wèn)是不能訪(fǎng)問(wèn)的,被攔截了

【SpringMVC】| SpringMVC攔截器

在成功登錄之后,我們不關(guān)閉當(dāng)前會(huì)話(huà),重新開(kāi)一個(gè)窗口,?直接訪(fǎng)問(wèn)就可以訪(fǎng)問(wèn)了

【SpringMVC】| SpringMVC攔截器文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-458830.html

到了這里,關(guān)于【SpringMVC】| SpringMVC攔截器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 12、SpringMVC之?dāng)r截器

    12、SpringMVC之?dāng)r截器

    創(chuàng)建名為spring_mvc_interceptor的新module,過(guò)程參考9.1節(jié)和9.5節(jié) 與自定義的過(guò)濾器一樣,自定義的攔截器也要配置后才能生效; 過(guò)濾器是服務(wù)器中的組件,所以配置到 web.xml 中; 攔截器是 springmvc 中的組件,因此要配置到 springmvc 的配置文件中。 因?yàn)樵谂渲脭r截器時(shí),沒(méi)有指定要

    2024年02月05日
    瀏覽(28)
  • 一文學(xué)會(huì) SpringMVC 攔截器

    一文學(xué)會(huì) SpringMVC 攔截器

    ?作者簡(jiǎn)介:2022年 博客新星 第八 。熱愛(ài)國(guó)學(xué)的Java后端開(kāi)發(fā)者,修心和技術(shù)同步精進(jìn)。 ??個(gè)人主頁(yè):Java Fans的博客 ??個(gè)人信條:不遷怒,不貳過(guò)。小知識(shí),大智慧。 ??當(dāng)前專(zhuān)欄:SSM 框架從入門(mén)到精通 ?特色專(zhuān)欄:國(guó)學(xué)周更-心性養(yǎng)成之路 ??本文內(nèi)容:一文學(xué)會(huì) SpringM

    2024年02月02日
    瀏覽(26)
  • SpringMVC Day 10 : 攔截器

    SpringMVC Day 10 : 攔截器

    攔截器是Spring MVC框架提供的一種強(qiáng)大的機(jī)制,用于在請(qǐng)求到達(dá)控制器之前或之后進(jìn)行預(yù)處理和后處理。它可以攔截并處理請(qǐng)求,對(duì)請(qǐng)求進(jìn)行必要的修改或驗(yàn)證,以及在請(qǐng)求返回給客戶(hù)端之前進(jìn)行額外的操作。攔截器可以幫助我們實(shí)現(xiàn)各種需求,如身份驗(yàn)證、日志記錄、性能監(jiān)

    2024年02月06日
    瀏覽(19)
  • springmvc統(tǒng)一異常處理攔截器

    使用@RestControllerAdvice+@ExceptionHandler實(shí)現(xiàn) 也可以使用@ControllerAdvice+@ResponseBody+@ExceptionHandler實(shí)現(xiàn) 創(chuàng)建一個(gè)異常處理的類(lèi),放在config包下 ?組件類(lèi): ?也可以讓不同的異常返回不同的結(jié)果,捕獲什么異常由@ExceptionHandler的value屬性決定,傳入一個(gè)類(lèi)對(duì)象(可以通過(guò)反射獲得) ?

    2024年02月15日
    瀏覽(24)
  • SpringMVC的攔截器(Interceptor)

    SpringMVC的攔截器(Interceptor)

    對(duì)于攔截器這節(jié)的知識(shí),我們需要學(xué)習(xí)如下內(nèi)容: 攔截器概念 入門(mén)案例 攔截器參數(shù) 攔截器工作流程分析 講解攔截器的概念之前,我們先看一張圖: (1)瀏覽器發(fā)送一個(gè)請(qǐng)求會(huì)先到Tomcat的web服務(wù)器 (2)Tomcat服務(wù)器接收到請(qǐng)求以后,會(huì)去判斷請(qǐng)求的是靜態(tài)資源還是動(dòng)態(tài)資源 (3)如果是

    2024年02月09日
    瀏覽(30)
  • SpringMVC中攔截器的簡(jiǎn)單使用

    步驟一:創(chuàng)建攔截器類(lèi) 首先,我們需要?jiǎng)?chuàng)建一個(gè)攔截器類(lèi),該類(lèi)需要實(shí)現(xiàn) HandlerInterceptor 接口。這個(gè)接口定義了三個(gè)方法,分別在請(qǐng)求處理前、請(qǐng)求處理后和視圖渲染后執(zhí)行。 步驟二:創(chuàng)建配置類(lèi) 上述配置類(lèi)使用了 @Configuration 注解,表示這是一個(gè)配置類(lèi)。通過(guò) @Bean 注解將

    2024年01月17日
    瀏覽(21)
  • SpringMVC攔截器和異常處理機(jī)制

    SpringMVC攔截器和異常處理機(jī)制

    SpringMVC攔截器類(lèi)似于過(guò)濾器,用于進(jìn)行預(yù)處理和后處理 將攔截器按照一定順序連接成一條鏈,就是攔截器鏈 創(chuàng)建攔截器類(lèi)實(shí)現(xiàn)HandlerInterceptor接口 配置攔截器 測(cè)試攔截器的攔截效果 三個(gè)方法的執(zhí)行:在配置文件中依次配置兩個(gè)攔截器分別為1和2,則執(zhí)行順序是:1的 preHandle

    2024年02月16日
    瀏覽(27)
  • SpringMVC下半篇之?dāng)r截器

    攔截器 文件上傳 異常處理器 ssm整合 ? Spring MVC中的攔截器(Interceptor)類(lèi)似于Servlet中的過(guò)濾器(Filter),它主要用于攔截用戶(hù)請(qǐng)求并作相應(yīng)的處理。例如通過(guò)攔截器可以進(jìn)行權(quán)限驗(yàn)證、判斷用戶(hù)是否登錄等。 ? 攔截器依賴(lài)于web框架,在實(shí)現(xiàn)上基于Java的反射機(jī)制,屬于面向

    2024年01月23日
    瀏覽(36)
  • 第9章:SpringMVC的攔截器

    第9章:SpringMVC的攔截器

    1. 攔截器的配置 SpringMVC中的攔截器用于攔截控制器方法的執(zhí)行 SpringMVC中的攔截器需要實(shí)現(xiàn)HandlerInterceptor SpringMVC的攔截器必須在SpringMVC的配置文件進(jìn)行配置 ①創(chuàng)建攔截器,繼承接口HandlerInterceptor. ?②在springMVC配置文件里配置攔截器 ? !-- 攔截所有的請(qǐng)求,除了 /-- 2. 攔截器的

    2024年02月08日
    瀏覽(29)
  • 【SpringMVC】攔截器&JSR303的使用

    【SpringMVC】攔截器&JSR303的使用

    目錄 一、JSR303 1.1.什么是JSR303 1.2.為什么使用JSR303 1.3.常用注解 1.4.@Validated與@Valid區(qū)別 1.5.JSR快速入門(mén) 1.5.1.導(dǎo)入依賴(lài) 1.5.2.配置校驗(yàn)規(guī)則 1.5.3.入門(mén)案例 二、攔截器 2.1什么是攔截器 2.2.攔截器與過(guò)濾器 2.3.應(yīng)用場(chǎng)景 2.4.攔截器快速入門(mén) 2.4.1.入門(mén)案例 2.4.2.攔截器工作原理 2.5.攔截器

    2024年02月09日
    瀏覽(51)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包