SpringMVC拦截器配置及运行流程解析
时间:2022-02-07 10:11:03|栏目:JAVA代码|点击: 次
1.与过滤器filter的区别

2.springMVC中拦截器的必须实现的三个方法:


3. 拦截器类的编写:
package com.imooc.core;
import com.imooc.bean.User;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginInterceptor implements HandlerInterceptor {
//在业务处理器被调用前的方法,若是返回false则不会继续进入业务处理器
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
User user = (User)request.getSession().getAttribute("session_user");
if(user==null) {
response.sendRedirect(request.getContextPath()+"/login");
return false;//会终止所有的请求
}
return true;
}
//在业务处理器被调用后,dispatcher响应客户端前的方法,一般用于生成日志文件时调用
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
//dispatcher响应客户端后的方法,一般用于资源的清理
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
4.在spring的配置文件中注册拦截器:
<!-- 拦截器的注册 -->
<mvc:interceptors>
<mvc:interceptor>
<!--**表示往后的所有子目录也包括进来-->
<mvc:mapping path="/user/**"></mvc:mapping>
<!--exclude-mapping在所有拦截中进行排除,一般在通配符会有意义。-->
<!--即以下的方法不会被拦截-->
<mvc:exclude-mapping path="/user/updatepwd"></mvc:exclude-mapping>
<mvc:exclude-mapping path="/user/updatebackground/*"></mvc:exclude-mapping>
<!--填写之前配置好的拦截器-->
<bean class="com.imooc.core.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
注意:要是有多个拦截器执行顺序以spring的配置文件中的注册拦截器顺序执行:
<!-- 拦截器的注册 -->
<mvc:interceptors>
<!--先注册先执行-->
<mvc:interceptor>
<mvc:mapping path="/user/**"/>
<bean class="com.imooc.core.LogInterceptor"></bean>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/user/**"></mvc:mapping>
<!--exclude-mapping在所有拦截中进行排除,一般在通配符会有意义。-->
<mvc:exclude-mapping path="/user/updatepwd"></mvc:exclude-mapping>
<mvc:exclude-mapping path="/user/updatebackground/*"></mvc:exclude-mapping>
<bean class="com.imooc.core.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
其次拦截器里的方法顺序:

上一篇:Java SpringMVC 异常处理SimpleMappingExceptionResolver类详解
栏 目:JAVA代码
本文地址:http://www.codeinn.net/misctech/192648.html


阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机




