SpringMVC攔截器詳解
更新時(shí)間:2021年07月17日 09:38:12 作者:池魚(yú)i_
本篇文章主要介紹了SpringMVC攔截器配置及使用方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 配置springMvc中央處理器-->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 初始化的時(shí)候配置加載springmvc的配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 3、修改web.xml中的請(qǐng)求路徑地址方式-->
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<!-- 3、修改web.xml中的請(qǐng)求路徑地址方式-->
<url-pattern>/</url-pattern>
<!-- <url-pattern>*.do</url-pattern>-->
</servlet-mapping>
<!--
1、將css文件使用默認(rèn)處理方式進(jìn)行處理,不再交由中央控制器處理,
設(shè)置路徑的更高匹配優(yōu)先級(jí)
-->
<!-- <servlet-mapping>-->
<!-- <servlet-name>default</servlet-name>-->
<!-- <url-pattern>*.css</url-pattern>-->
<!-- <url-pattern>*.js</url-pattern>-->
<!-- <url-pattern>*.jpg</url-pattern>-->
<!-- <url-pattern>*.png</url-pattern>-->
<!-- <url-pattern>*.html</url-pattern>-->
<!-- </servlet-mapping>-->
</web-app>
springMVC配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--自動(dòng)掃描包-->
<!-- 開(kāi)啟ioc 注解事務(wù)支持-->
<context:component-scan base-package="cn"></context:component-scan>
<!--開(kāi)啟spiring mvc注解支持-->
<mvc:annotation-driven></mvc:annotation-driven>
<!--配置spring 中的視圖解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="resolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<mvc:interceptors>
<bean id="interceptor1" class="cn.hp.interceptor.TestInterceptor1"></bean>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean id="interceptor1" class="cn.hp.interceptor.TestInterceptor1"></bean>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/test1.do"/>
<mvc:exclude-mapping path="/test2.do"/>
<bean id="interceptor2" class="cn.hp.interceptor.TestInterceptor2"></bean>
</mvc:interceptor>
</beans>
controller類(lèi):
package cn.hp.action;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpSession;
@Controller
public class UserAction {
@RequestMapping("/test1.do")
public String test01(){
System.out.println("正在執(zhí)行test1這個(gè)業(yè)務(wù)邏輯");
return "index";
}
@RequestMapping("/test2.do")
public String test02(){
System.out.println("正在執(zhí)行test2這個(gè)業(yè)務(wù)邏輯");
return "index";
}
}
第一個(gè)攔截器配置:
package cn.hp.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestInterceptor1 implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("第一個(gè)攔截器,執(zhí)行業(yè)務(wù)邏輯之前執(zhí)行此方法");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("第一個(gè)攔截器,執(zhí)行業(yè)務(wù)邏輯之后,視圖渲染之前執(zhí)行此方法");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("第一個(gè)攔截器,執(zhí)行視圖渲染之后執(zhí)行此方法");
}
}
第二個(gè)攔截器:
package cn.hp.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestInterceptor2 implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("第二個(gè)攔截器,執(zhí)行業(yè)務(wù)邏輯之前執(zhí)行此方法");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("第二個(gè)攔截器,執(zhí)行業(yè)務(wù)邏輯之后,視圖渲染之前執(zhí)行此方法");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("第二個(gè)攔截器,執(zhí)行視圖渲染之后執(zhí)行此方法");
}
}

總結(jié)
本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
教你使用IDEA搭建spring源碼閱讀環(huán)境的詳細(xì)步驟
這篇文章主要介紹了使用IDEA搭建spring源碼閱讀環(huán)境的詳細(xì)步驟,本文分兩步通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-08-08
Java BigDecimal和double示例及相關(guān)問(wèn)題解析
這篇文章主要介紹了Java BigDecimal和double示例及相關(guān)問(wèn)題解析,簡(jiǎn)單介紹了BigDecimal類(lèi)的相關(guān)內(nèi)容,分享了兩則相關(guān)實(shí)例,對(duì)問(wèn)題進(jìn)行了分析,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11
Java實(shí)現(xiàn)調(diào)用接口API并返回?cái)?shù)據(jù)
這篇文章主要介紹了Java實(shí)現(xiàn)調(diào)用接口API并返回?cái)?shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
Spring核心容器之Bean創(chuàng)建過(guò)程詳解
這篇文章主要介紹了Spring核心容器之Bean創(chuàng)建過(guò)程詳解,獲取?Bean?的方法是?getBean,其來(lái)自?BeanFactory?繼承的AbstractAutowireCapableBeanFactory?抽象類(lèi)繼承的AbstractBeanFactory?抽象類(lèi)中,需要的朋友可以參考下2023-11-11
淺談?dòng)肧pringBoot實(shí)現(xiàn)策略模式
本文主要介紹了SpringBoot實(shí)現(xiàn)策略模式,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10

