SSM配置Interceptor

在WEB应用当中,有时候我们需要在某一个特定的操作之前做一些判断,比如在将商品添加进购物车之前判断用户是否登录,或者在某一请求之前判断用户是否有权限使用该功能,那么这些情况下我们就要使用到Interceptor了,在SpringMVC当中,配置一个自定义的拦截器是十分简单的,主要步骤就是两步:1.新建拦截器类 。2.在SpringMVC中配置拦截器类。

下面我直接上代码,首先是Intercepor:

package com.demo.Interceptor;


import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyInterceptor implements HandlerInterceptor {


    /**
     * 该方法将在请求处理之前进行调用,只有该方法返回true,才会继续执行后续的Interceptor和Controller,
     * 当返回值为true 时就会继续调用下一个Interceptor的preHandle 方法,
     * 如果已经是最后一个Interceptor的时候就会是调用当前请求的Controller方法;
     * @param httpServletRequest
     * @param httpServletResponse
     * @param o
     * @return
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {

        //此方法在handler被调用之前调用
        System.out.println("preHandle******");

        //返回值,true则放行否则一直阻塞相应的handler
        return true;
    }
    /**
     * 该方法将在请求处理之后,DispatcherServlet进行视图返回渲染之前进行调用
     * 可以在这个方法中对Controller 处理之后的ModelAndView 对象进行操作。
     */
    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle******");
    }

    /**
     * 该方法也是需要当前对应的Interceptor的preHandle方法的返回值为true时才会执行,该方法将在整个请求结束之后,
     * 也就是在DispatcherServlet 渲染了对应的视图之后执行。用于进行资源清理。
     * @param httpServletRequest
     * @param httpServletResponse
     * @param o
     * @param e
     * @throws Exception
     */
    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
        //此方法在handler返回之后调用
        System.out.println("afterCompletion******");
    }
}

SpringMVC中的配置:

<mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/test"/>
            <bean class="com.demo.Interceptor.MyInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>

Controller的代码:

package com.demo.controller;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class InterceptorController {

    @RequestMapping("/test")
    @ResponseBody
    public String test(){
        System.out.println("testContoller");
        return "ok";
    }

}

测试结果:

23-Apr-2018 19:55:24.906 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory D:\apache-tomcat-8.0.47\webapps\manager
23-Apr-2018 19:55:24.953 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory D:\apache-tomcat-8.0.47\webapps\manager has finished in 46 ms
preHandle******
testContoller
postHandle******
afterCompletion******
用起来还是挺简单的,至于里边的参数,request和response和controller是同一个,其余的参数等遇到的时候在细说!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值