SpringMVC拦截器
2020.02.03 16:04
2020.02.03 16:04
1. 拦截器
作用:抽取C中的冗余功能
类似:类似其他框架、语言中的中间件作用。
1.1. 定义拦截器
执行顺序:preHandle-postHandle--afterCompletion
package com.misiai.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 MyInterceptor implements HandlerInterceptor {
/**
* 一般用前置拦截
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle");
// 登录状态的判断
if (request.getSession().getAttribute("user") == null) {
return true;//放行
}
response.sendRedirect("/user/login"); // 中断的处理,一般是跳转到某个页面,如登录页面
return false;// 中断请求,也即Handler不再执行(Handler指:controller中的方法)
}
/**
* 在Handler之后执行
* */
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle");
}
/**
* 页面渲染完成之后,资源回收之类之用
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion");
}
}
解释:
1、该类实现HandlerInterceptor
,然后有3个方法。一般只需要在前方法处理逻辑即可。
1.2. 注册
applicationContext.xml
<!--自定义拦截器-->
<mvc:interceptors>
<mvc:interceptor>
<!--path:即要拦截的路径,不是该路径的不拦截-->
<mvc:mapping path="/inter/**"/>
<!--/** 两星才代表多个路径,如果只有一个*,就只拦截一级路径-->
<bean class="com.misiai.interceptor.MyInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
结果:
本节阅读完毕!
(分享)