spring配置
<!--配置权限拦截器, 多个拦截器,顺序执行 -->
<mvc:interceptors><mvc:interceptor>
<!-- 匹配的是url路径, 如果不配置或/**,将拦截所有的Controller -->
<mvc:mapping path="/**" />
<!-- 排除不拦截 -->
<mvc:exclude-mapping path="/assets/css**" />
<mvc:exclude-mapping path="/assets/fonts**" />
<mvc:exclude-mapping path="/assets/images**" />
<mvc:exclude-mapping path="/assets/js**" />
<mvc:exclude-mapping path="/login/login" />
<mvc:exclude-mapping path="/net.lzzy.controller/LoginController"/>
<bean class="net.lzzy.utils.InterceptorAdapter"></bean>
</mvc:interceptor>
<!-- 当设置多个拦截器时,先按顺序调用preHandle方法,然后逆序调用每个拦截器的postHandle和afterCompletion方法 -->
</mvc:interceptors>
新建类 implements HandlerInterceptor
如:
package net.lzzy.utils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
/**
*
* @ClassName: InterceptorAdapter
* @Description: TODO(这里用一句话描述这个类的作用)
* @author A18ccms a18ccms_gmail_com
* @date 2018年1月17日 下午5:50:09
*
*/
public class InterceptorAdapter implements HandlerInterceptor {
/**
* 执行顺序3
* 该方法在目标方法之前被调用.
* 若返回值为 true, 则继续调用后续的拦截器和目标方法.
* 若返回值为 false, 则不会再调用后续的拦截器和目标方法.
* 可以考虑做权限. 日志, 事务等.
*/
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
response.setHeader("Content-type", "text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
String id= (String) request.getSession().getAttribute("id");
String name= (String) request.getSession().getAttribute("name");
String numeration= (String) request.getSession().getAttribute("numeration");
String pwa= (String) request.getSession().getAttribute("pwa");
if (id==null&&name==null&&numeration==null&&pwa==null) {
// 进行页面转发
request.getRequestDispatcher("/WEB-INF/views/login/login.jsp").forward(request, response);
return false;
}
return true;
}
/**
* 执行顺序2
* 在业务处理器处理请求执行完成后,生成视图之前执行的动作
* 可在modelAndView中加入数据,比如当前时间
*/
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
modelAndView.addObject("msg", 1);
}
/** 执行顺序3
* 渲染视图之后被调用. 释放资源
*/
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
}
}