spring+springmvc+mybatis(SSM)

spring+springMVC+mybatis的整合 part

2017-07-20  本文已影响44人  意识流丶

拦截器的使用

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

上一篇下一篇

猜你喜欢

热点阅读