SpringMVC拦截器示例

2023-05-14 11:28:47 浏览数 (1)

示例代码

下面是一个示例代码,演示了如何创建一个拦截器。该拦截器在请求处理前输出日志,同时在请求处理完成后记录请求处理时间。

代码语言:javascript复制
public class LoggingInterceptor implements HandlerInterceptor {

    private static final Logger logger = LoggerFactory.getLogger(LoggingInterceptor.class);

    private long startTime;

    // 在请求处理前执行
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        startTime = System.currentTimeMillis();
        logger.info("Request URL: "   request.getRequestURL());
        return true;
    }

    // 在请求处理后执行,在视图渲染前
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        logger.info("Time Taken: "   (System.currentTimeMillis() - startTime));
    }

    // 在请求处理完成后执行,也就是在视图渲染完成后执行
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        // Do nothing
    }
}

在上面的示例中,我们实现了 LoggingInterceptor 类,该类实现了 HandlerInterceptor 接口。在 preHandle() 方法中,我们记录了请求处理开始的时间,并输出了请求的 URL。在 postHandle() 方法中,我们计算了请求处理所需的时间,并输出到日志中。在 afterCompletion() 方法中,我们不需要做任何操作,因此该方法为空。

接下来,我们需要将拦截器注册到 Spring MVC 中。我们可以在 Spring MVC 配置文件中进行配置,如下所示:

代码语言:javascript复制
<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <bean class="com.example.LoggingInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>

在上面的示例中,我们定义了一个拦截器,将其应用到所有的请求上。这意味着,所有的请求都会被该拦截器拦截,并进行日志记录。

0 人点赞