SpringMVC 拦截器的设置

SpringMVC 拦截器的设置

温故而知新

好久没有看SSM项目了,最近重温一个demo,记录一下,免得以后麻烦。
功能是登陆
假设你在逛淘宝,看中了一件物品,当你在没有登陆的时候,点击商品的购买,会被立即打回登陆界面。
在进行一些需要权限的操作时,如果想进行一些操作,用户没有权限执行的时候,我们要进行对应的控制。
当然功能不止这一些。
第一步: 实现 HandlerInterceptor 接口。
代码如下:

public class LoginInterceptor implements HandlerInterceptor {
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        //  1、获取session
        Users users = (Users) httpServletRequest.getSession().getAttribute("users");
        ModelAndView modelAndView = new ModelAndView();
        System.out.println("===========================》进入拦截器");
        System.out.println("用户信息为:" + users.toString());
        // 2、如果为空,跳转到登陆页面
        if (users == null) {
            modelAndView.addObject("msg", "请您先进行登陆");
            httpServletRequest.getRequestDispatcher(" /pages/login.jsp").forward(httpServletRequest, httpServletResponse);
            System.out.println("===========执行方法后================》");
            //  不允许Controller 的方法进行执行
            return false;
        } else {
            //3、否则放行
            return true;
        }
    }
    // 主要在执行之前调用
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {

    }

    // 结束后调用,一般用于资源的释放等
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
    }
}

第二步: 在MVC的xml 文件中配置要拦截的请求。
<mvc:mapping path="">:表示你要拦截的路径
<mvc:exclude-mapping path=""/>表示你要== 不要 ==拦截的路径
代码如下:

    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <!-- 放行登陆页面和 登陆的Controller路径 用于登陆 -->
            <mvc:exclude-mapping path="/pages/login.jsp"/>
            <mvc:exclude-mapping path="/login"/>
            <mvc:exclude-mapping path="/"/>
            <bean class="com.mxy.admin.common.LoginInterceptor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>

path="/** “: 拦截所有的请求。
path=”/users/** “: 拦截 users下面的所有 路径。
path=”/" :拦截 项目根路径。

==有个问题没有解决 ==
当我在浏览器的地址栏直接输入 http://localhost:8080/projecName/pages/index.jsp的时候,也可以直接访问。不知到原因。还请看到的大神指导指导。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值