spring+springMVC+mybatis的整合 part8

拦截器的使用

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集成之路

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容