SpringMVC 拦截器使用

对于博客系统,发布文章等其他功能必须登录才能使用。这就非常有必要使用拦截器拦截请求。
SpringMVC中可以通过实现HandlerInterceptor接口定义一个拦截器。当然也可以继承抽象类HandlerInterceptorAdapter

定义一个拦截器AuthorizationInterceptor

public class AuthorizationInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request,
                             HttpServletResponse response,
                             Object handler) throws Exception {
        boolean flag = false;
        //判断用户是否登录
        User user = (User) request.getSession().getAttribute("user");
        if(user != null) {
            flag = true;
        } else {
            request.setAttribute("message", "权限不足,请先登录");
            request.getRequestDispatcher("/user/loginForm").forward(request, response);
        }
        return flag;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    }
}
  • preHandle: 该方法在请求被处理前调用。返回false表示该请求被拦截,之后不会被其它拦截器或者Controller调用。
  • postHandle: Controller方法被调用之后执行该方法,会在视图被返回渲染之前调用。
  • afterCompletion: 整个请求结束后调用。

    上述代码判断用户是否已经登录,如果未登录,转向到登录页面。
    配置文件:

    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/article/*"/>
            <bean class="com.sweat.interceptor.AuthorizationInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>
  • <mvc:mapping path="/article/*"/>:拦截指定路径下的请求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值