拦截器的使用
SpringMVC中的Interceptor
拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理。比如通过它来进行权限验证,或者是来判断用户是否登陆
拦截器的详细介绍,请参阅这里
先要在spring-web.xml
中配置拦截器:
<!-- 访问拦截 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**/**"/>
<bean class="pjb.ssm.intercepter.LoginHandlerInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
具体的拦截器代码如下,
public class LoginHandlerInterceptor extends HandlerInterceptorAdapter{
String NO_INTERCEPTOR_PATH = ".*/((login)|(reg)|(logout)|(code)|(app)|(weixin)|(static)|(main)|(websocket)).*"; //不对匹配该值的访问路径拦截(正则)
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// TODO Auto-generated method stub
String path = request.getServletPath();
if (path.matches(NO_INTERCEPTOR_PATH)) { //匹配正则表达式的不拦截
return true;
} else { //不匹配的进行处理
try {
if (request.getSession().getAttribute("userInfo") == null) { //session中是否存在用户信息,不存在则是未登录状态
response.sendRedirect(request.getContextPath() + "/mvc/login");
return false;
}
} catch (IOException e) {
response.sendRedirect(request.getContextPath() + "/mvc/login");
e.printStackTrace();
return false;
}
}
return true; //默认是不拦截···具体的还看一些需求设计啊之类的
}
}
在未登录前,任何访问url都跳转到login页面
springMvc拦截器的基本使用
简单的过滤器可以拦截简单的非法请求,防止越界操作
主要参考于大牛Clone丶记忆的SSM集成之路