SSM7.1【Spring:SpringMVC拦截器interceptor】
1 <%-- 2 Created by IntelliJ IDEA. 3 User: yubaby 4 Date: 2021/7/20 5 Time: 21:39 6 To change this template use File | Settings | File Templates. 7 --%> 8 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 <html> 10 <head> 11 <title>Title</title> 12 </head> 13 <body> 14 <h2>hello world ${name}</h2> 15 </body> 16 </html>
1 <%-- 2 Created by IntelliJ IDEA. 3 User: yubaby 4 Date: 2021/7/20 5 Time: 22:34 6 To change this template use File | Settings | File Templates. 7 --%> 8 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 <html> 10 <head> 11 <title>Title</title> 12 </head> 13 <body> 14 <h1>error</h1> 15 </body> 16 </html>
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 7 <groupId>com.haifei</groupId> 8 <artifactId>SSM7_spring_interceptor</artifactId> 9 <version>1.0-SNAPSHOT</version> 10 <packaging>war</packaging> 11 12 13 <dependencies> 14 <!--<dependency> 15 <groupId>org.springframework</groupId> 16 <artifactId>spring-context</artifactId> 17 <version>5.0.5.RELEASE</version> 18 </dependency>--> 19 <!--<dependency> 20 <groupId>org.springframework</groupId> 21 <artifactId>spring-web</artifactId> 22 <version>5.0.5.RELEASE</version> 23 </dependency>--> 24 <dependency> 25 <groupId>org.springframework</groupId> 26 <artifactId>spring-webmvc</artifactId> 27 <version>5.0.5.RELEASE</version> 28 </dependency> 29 30 <dependency> 31 <groupId>javax.servlet</groupId> 32 <artifactId>javax.servlet-api</artifactId> 33 <version>3.0.1</version> 34 <scope>provided</scope> 35 </dependency> 36 <dependency> 37 <groupId>javax.servlet.jsp</groupId> 38 <artifactId>javax.servlet.jsp-api</artifactId> 39 <version>2.2.1</version> 40 <scope>provided</scope> 41 </dependency> 42 43 <dependency> 44 <groupId>commons-logging</groupId> 45 <artifactId>commons-logging</artifactId> 46 <version>1.2</version> 47 </dependency> 48 <dependency> 49 <groupId>org.slf4j</groupId> 50 <artifactId>slf4j-log4j12</artifactId> 51 <version>1.7.7</version> 52 </dependency> 53 <dependency> 54 <groupId>log4j</groupId> 55 <artifactId>log4j</artifactId> 56 <version>1.2.17</version> 57 </dependency> 58 </dependencies> 59 60 61 <build> 62 <plugins> 63 <!--jdk编译插件--> 64 <plugin> 65 <groupId>org.apache.maven.plugins</groupId> 66 <artifactId>maven-compiler-plugin</artifactId> 67 <version>3.1</version> 68 <configuration> 69 <target>1.8</target> 70 <source>1.8</source> 71 <encoding>UTF-8</encoding> <!--防止sout内部输出中文乱码--> 72 </configuration> 73 </plugin> 74 <!--tomcat7插件--> 75 <plugin> 76 <groupId>org.apache.tomcat.maven</groupId> 77 <artifactId>tomcat7-maven-plugin</artifactId> 78 <version>2.1</version> 79 <configuration> 80 <port>8080</port> 81 <path>/ssm7</path> 82 <uriEncoding>UTF-8</uriEncoding> <!--防止get请求url中中文参数乱码--> 83 </configuration> 84 </plugin> 85 </plugins> 86 </build> 87 88 89 </project>
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 5 6 7 <!--配置SpringMVC的核心组件:DispatcherServlet前端控制器--> 8 <servlet> 9 <servlet-name>DispatcherServlet</servlet-name> 10 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 11 <init-param> 12 <param-name>contextConfigLocation</param-name> 13 <param-value>classpath:spring-mvc.xml</param-value> 14 </init-param> 15 <load-on-startup>1</load-on-startup> 16 </servlet> 17 <servlet-mapping> 18 <servlet-name>DispatcherServlet</servlet-name> 19 <url-pattern>/</url-pattern> <!--配置为缺省目的是所有请求都要过前端控制器--> 20 </servlet-mapping> 21 22 23 </web-app>
1 package com.haifei.controller; 2 3 import org.springframework.stereotype.Controller; 4 import org.springframework.web.bind.annotation.RequestMapping; 5 import org.springframework.web.servlet.ModelAndView; 6 7 @Controller 8 public class TargetController { 9 10 @RequestMapping("/target") 11 public ModelAndView show(){ 12 System.out.println("目标资源正在执行。。。"); 13 14 ModelAndView modelAndView = new ModelAndView(); 15 modelAndView.addObject("name","itcast"); 16 modelAndView.setViewName("index"); 17 return modelAndView; 18 19 /* 20 编写拦截器及其配置前: 21 22 访问 http://localhost:8080/ssm7/target 23 页面 hello world itcast 24 控制台 目标资源正在执行。。。 25 */ 26 } 27 28 }
1 package com.haifei.interceptor; 2 3 import org.springframework.web.servlet.HandlerInterceptor; 4 import org.springframework.web.servlet.ModelAndView; 5 6 import javax.servlet.http.HttpServletRequest; 7 import javax.servlet.http.HttpServletResponse; 8 9 /** 10 * 拦截器 11 * 相关方法执行顺序:preHandle() --> show() --> postHandle() --> afterCompletion() 12 */ 13 public class MyInterceptor1 implements HandlerInterceptor { 14 15 //在目标方法(例如show())执行之前执行 16 @Override 17 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 18 System.out.println("preHandle...."); 19 20 /*return false; //false拦截 21 //preHandle....*/ 22 23 /*return true; //true放行 24 // preHandle.... 25 // 目标资源正在执行。。。 26 // postHandle..... 27 // afterCompletion......*/ 28 29 String param = request.getParameter("param"); 30 // if (param.equals("yes")){ //空指针异常 31 if ("yes".equals(param)){ 32 return true; //true放行 33 }else { 34 request.getRequestDispatcher("/error.jsp").forward(request, response); //请求转发 35 return false; //false拦截 36 } 37 //http://localhost:8080/ssm7/target error 38 //http://localhost:8080/ssm7/target?param=yes hello world itcast 39 } 40 41 //在目标方法执行之后、视图对象(ModelAndView)抵达页面之前执行 42 @Override 43 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { 44 System.out.println("postHandle....."); 45 46 modelAndView.addObject("name", "itheima"); 47 //http://localhost:8080/ssm7/target?param=yes hello world itheima 48 } 49 50 //在流程执行完毕之后执行 51 @Override 52 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { 53 System.out.println("afterCompletion......"); 54 } 55 56 }
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:mvc="http://www.springframework.org/schema/mvc" 5 xmlns:context="http://www.springframework.org/schema/context" 6 xsi:schemaLocation=" 7 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 8 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 9 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 10 11 12 <!--1、mvc注解驱动--> 13 <mvc:annotation-driven/> 14 15 <!--2、配置视图解析器--> 16 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 17 <property name="prefix" value="/"/> 18 <property name="suffix" value=".jsp"/> 19 </bean> 20 21 <!--3、静态资源权限开放--> 22 <mvc:default-servlet-handler/> 23 24 <!--4、组件扫描 扫描Controller--> 25 <context:component-scan base-package="com.haifei.controller"/> 26 27 28 <!--配置拦截器--> 29 <mvc:interceptors> 30 <mvc:interceptor> 31 <!--对哪些资源执行拦截操作--> 32 <mvc:mapping path="/**" /> <!--对所有资源--> 33 <bean class="com.haifei.interceptor.MyInterceptor1"/> 34 </mvc:interceptor> 35 <mvc:interceptor> 36 <mvc:mapping path="/**" /> 37 <bean class="com.haifei.interceptor.MyInterceptor2"/> 38 </mvc:interceptor> 39 </mvc:interceptors> 40 41 </beans>
1 package com.haifei.interceptor; 2 3 import org.springframework.web.servlet.HandlerInterceptor; 4 import org.springframework.web.servlet.ModelAndView; 5 6 import javax.servlet.http.HttpServletRequest; 7 import javax.servlet.http.HttpServletResponse; 8 9 /** 10 * http://localhost:8080/ssm7/target?param=yes 11 * preHandle.... 12 * preHandle2222.... 13 * 目标资源正在执行。。。 14 * postHandle2222..... 15 * postHandle..... 16 * afterCompletion2222...... 17 * afterCompletion...... 18 * 19 * MyInterceptor1和MyInterceptor2 中相应方法的执行顺序跟spring-mvc.xml中两者的配置顺序有关 20 */ 21 public class MyInterceptor2 implements HandlerInterceptor { 22 23 //在目标方法执行之前执行 24 @Override 25 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 26 System.out.println("preHandle2222...."); 27 return true; 28 } 29 30 //在目标方法执行之后、视图对象(ModelAndView)抵达页面之前执行 31 @Override 32 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { 33 System.out.println("postHandle2222....."); 34 } 35 36 //在流程执行完毕之后执行 37 @Override 38 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { 39 System.out.println("afterCompletion2222......"); 40 } 41 42 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!