目录
1.继承接口HandlerInterceptor 接口有3个实现方法,如果拦截器无限循环就是说明你要跳转的路径没用在.xml文件里面放行
类的名字可以随便取 ssm项目的拦截器主要需要配置mvc.xml里面的配置以及自己写的这个类 要继承一下HandlerInterceptor方法
1.继承接口HandlerInterceptor 接口有3个实现方法,如果拦截器无限循环就是说明你要跳转的路径没用在.xml文件里面放行
public class MyInter1 implements HandlerInterceptor{
//主要逻辑:在handler之前执行:抽取handler中的冗余代码 主要用于登陆 权限验证 主要写个演示一下
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession(); //获取session里面的登陆信息,后续
根据需要可以写cookie或者其他
if (session.getAttribute("newlogin") == null) {
//设置一下编码格式 服务器是ios8859-1 浏览器是utf-8 需要把服务器改过来。
response.setContentType("text/html;charset=utf-8");
//设置一下如果没有登陆信息需要打开的页面,这个页面一定是放行的
response.sendRedirect(request.getContextPath()+"/emp/loginweb");
// request.getRequestDispatcher("/login/login").forward(request, response);
return false; //中断请求 结束mcv里面的其他操作 一定要写
} else {
return true; //放行,后续的拦截器或handler就会执行
}
}
//在handler之后执行:进一步的响应定制 注意是handler之后
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("post~~");
}
//在页面渲染完毕之后,执行:资源回收
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("after~~");
}
}
2.在写一个配置方法,具体看代码以及备注。
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/><!--拦截所有路径-->
<mvc:mapping path="/inter/test1"/><!--拦截指定路径-->
<mvc:mapping path="/inter/test*"/> <!-- test开头 -->
<mvc:mapping path="/inter/**"/> <!-- /** 任意多级任意路径 -->
<!--不拦截的路径 这个里面如果拦截了所有路径,一定要写要要跳转的路径 以及一些静态资源 包括
css js images jsp html 等等-->
<mvc:exclude-mapping path="/inter/a/**"/> <!--不拦截此路径-->
<bean class="com.baizhi.interceptor.MyInter1"></bean> <!--拦截器类 这里指定自己写的类的路径-->
</mvc:interceptor>
</mvc:interceptors>
结束:以上解释全部的spingmvc 拦截器设置的全部流程 谢谢支持呀!!!!