在springMVC中要实现自己的拦截器对某些访问进行拦截,主要是继承HandlerInterceptorAdapter,主要步骤如下:
1、在app-config.xml中加入如下配置
<mvc:interceptors>
<bean class="com.listener.CommonInterceptor" />
</mvc:interceptors>
如果需要对指定url进行拦截,则做如下配置:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/saveObjectInstance.do"/>
<mvc:mapping path="/createObjectInstance.do"/>
<mvc:mapping path="/cloneObjectInstance.do"/>
<bean class="com.listener.CommonInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
2、其中com.listener.CommonInterceptor 代码如下(继承HandlerInterceptorAdapter)
package com.yjh.mobile.listener;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.logging.Logger;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import com.yjh.core.common.CommonStaticConstant;
import com.yjh.core.mapper.user.UserMapper;
import com.yjh.core.model.user.User;
import com.yjh.mobile.common.Context;
import com.yjh.mobile.controller.goods.CollectGoodsController;
import com.yjh.mobile.controller.user.UserBrowseGoodsController;
/**
* 通用拦截 拦截后做一些异常或者日志处理
* @author atao
*
*/
public class CommonInterceptor extends HandlerInterceptorAdapter{
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
{
//处理自己的拦截业务
System.out.println("test");
return true;
}
}
其中spring中的HandlerInterceptorAdapter代码如下:
/*
* Copyright 2002-2012 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.web.servlet.handler;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.AsyncHandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
/**
* Abstract adapter class for the HandlerInterceptor interface,
* for simplified implementation of pre-only/post-only interceptors.
*
* @author Juergen Hoeller
* @since 05.12.2003
*/
public abstract class HandlerInterceptorAdapter implements AsyncHandlerInterceptor {
/**
* This implementation always returns {@code true}.
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
return true;
}
/**
* This implementation is empty.
*/
@Override
public void postHandle(
HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
throws Exception {
}
/**
* This implementation is empty.
*/
@Override
public void afterCompletion(
HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
}
/**
* This implementation is empty.
*/
@Override
public void afterConcurrentHandlingStarted(
HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
}
}