SpringMVC拦截器
一、配置拦截器
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.gg.interceptor.BInterceptor"></bean>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/login.do"/>
<bean class="com.gg.interceptor.AInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
详细说明:
-<mvc:mapping path="/* * "/>
- mapping:表示拦截器的拦截路径范围
/**
表示拦截任何路径
/*
表示拦截任意的一级路径 /工程名
/**
任意路径 不会超过SpringMVC DispathServlet的最大路径
<bean class="com.gg.interceptor.BInterceptor"></bean>
**
-
bean:让Spring 去创建相应的拦截对象给我们使用
-
补充:
1、jsp 都不会过滤 处于放行状态
2、/** 不是表示的全网站任意路径 最大不会超过前端控制器的路径。
3、 拦截器 只不过是SpringMVC的一个子集 DispathServlect 不会超过他爸爸(web.xml中的<url-pattern>/*</url-pattern>
/*
4、 拦截链中多个 拦截器 配置的先后顺序决定工作的先后顺序
5、 exclude-mapping 不是放行 是拦截器根本不参与工作
二、测试:
1. AInterceptor
题目中的第一问:
package com.gg.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class AInterceptor implements HandlerInterceptor{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {
System.out.println("我是AInterceptor、、");
String url=request.getRequestURI();
/*if(url.contains("xxx.do")) {
}*/
if(url.indexOf("xxx.do")>=0) {
return false;
}
return true;
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object, Exception arg3)
throws Exception {
// TODO Auto-generated method stub
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView arg3)
throws Exception {
// TODO Auto-generated method stub
}
}
补充知识点:
1、preHandle 决定是否拦截 拦截器拦截的是用户访问网站的资源路径们
2、boolean :true 表示 放行 不拦截 ;flase表示 不放行 拦截
2. BInterceptor
题目中的第二问:
package com.gg.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
public class BInterceptor extends HandlerInterceptorAdapter{
@Override
public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
System.out.println("我是BInterceptor。。。。");
return true;
}
}
3. 配置拦截器
题目中的第三问:
4.web.xml
题目中 拦截器的*.do
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
5、补充Controller测试:
FController
package com.gg.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class FController {
@GetMapping("/xxx.do")
@ResponseBody
public String xxx() {
return "xxx";
}
@GetMapping("/yyy.do")
@ResponseBody
public String yyy() {
return "yyy";
}
}
6.测试截图