0
点赞
收藏
分享

微信扫一扫

SSM——SpringMVC拦截器


文章目录

  • ​​一. 拦截器(interceptor)的作用​​
  • ​​二. 拦截器和过滤器区别​​
  • ​​三. 拦截器是快速入门​​
  • ​​1. 创建拦截器类实现HandlerInterceptor接口​​
  • ​​2. 配置拦截器​​
  • ​​3. 测试拦截器的拦截效果(编写目标方法)​​
  • ​​4. 测试拦截器的拦截效果(访问网址)​​
  • ​​四. 多拦截器操作​​
  • ​​五. 拦截器方法说明​​
  • ​​六. 案例-用户登录权限控制​​

一. 拦截器(interceptor)的作用

Spring MVC 的拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理。

  • 将拦截器按一定的顺序联结成一条链,这条链称为拦截器链(Interceptor Chain)。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现。

二. 拦截器和过滤器区别

SSM——SpringMVC拦截器_java

三. 拦截器是快速入门

SSM——SpringMVC拦截器_mvc_02

1. 创建拦截器类实现HandlerInterceptor接口

SSM——SpringMVC拦截器_java_03


SSM——SpringMVC拦截器_spring_04

package com.itheima.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class MyInterceptor1 implements HandlerInterceptor {
//在目标方法执行之前 执行
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException {
System.out.println("preHandle.....");
String param = request.getParameter("param");
//判断如果参数是yes才放行
if("yes".equals(param)){
return true;
}else{
request.getRequestDispatcher("/error.jsp").forward(request,response);
return false;//返回true代表放行 返回false代表不放行
}
}

//在目标方法执行之后 视图对象返回之前执行
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
modelAndView.addObject("name","itheima");
System.out.println("postHandle...");
}

//在流程都执行完毕后 执行
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
System.out.println("afterCompletion....");
}
}

SSM——SpringMVC拦截器_拦截器_05

2. 配置拦截器

SSM——SpringMVC拦截器_spring_06


SSM——SpringMVC拦截器_mvc_07

<?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:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
">

<!--1、mvc注解驱动-->
<mvc:annotation-driven/>

<!--2、配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>

<!--3、静态资源权限开放-->
<mvc:default-servlet-handler/>

<!--4、组件扫描 扫描Controller-->
<context:component-scan base-package="com.itheima.controller"/>


<!--配置拦截器-->
<mvc:interceptors>
<mvc:interceptor>
<!--对哪些资源执行拦截操作-->
<mvc:mapping path="/**"/>
<bean class="com.itheima.interceptor.MyInterceptor2"/>
</mvc:interceptor>
<mvc:interceptor>
<!--对哪些资源执行拦截操作-->
<mvc:mapping path="/**"/>
<bean class="com.itheima.interceptor.MyInterceptor1"/>
</mvc:interceptor>
</mvc:interceptors>

</beans>

3. 测试拦截器的拦截效果(编写目标方法)

SSM——SpringMVC拦截器_拦截器_08


SSM——SpringMVC拦截器_java_09

package com.itheima.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class TargetController {

@RequestMapping("/target")
public ModelAndView show(){
System.out.println("目标资源执行......");
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("name","itcast");
modelAndView.setViewName("index");
return modelAndView;
}

}

4. 测试拦截器的拦截效果(访问网址)

SSM——SpringMVC拦截器_mvc_10

四. 多拦截器操作

SSM——SpringMVC拦截器_spring_11


SSM——SpringMVC拦截器_java_12

五. 拦截器方法说明

SSM——SpringMVC拦截器_拦截器_13

六. 案例-用户登录权限控制

SSM——SpringMVC拦截器_spring_14

SSM——SpringMVC拦截器_mvc_15


SSM——SpringMVC拦截器_java_16


举报

相关推荐

0 条评论