配置
<mvc:interceptors> <mvc:interceptor> <!-- 针对于那个路劲下的内容进行拦截,这个路劲同资源文件的定位符 --> <mvc:mapping path="/pages/**/*.action"/> <bean class="cn.mldn.interceptor.MyInterceptor" /> </mvc:interceptor> </mvc:interceptors>
实现
package cn.mldn.interceptor; import java.lang.reflect.Method; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.core.MethodParameter; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("[*** preHandle ] cls = " + handler.getClass()); // 1 必须转型为HandlerMethod类的对象之后才可以知道操作的是那个Action,是那个具体的操作方法 HandlerMethod handlerMethod = (HandlerMethod) handler ; // 2、拼凑读取资源文件中key的内容 String validatorKey = handlerMethod.getBeanType().getSimpleName()+"."+handlerMethod.getMethod().getName()+".rules"; // 3、取得Action类中对应的getMsgSource()方法 Method msgSourceMethod = handlerMethod.getBean().getClass().getMethod("getSourceMessage",String.class); // 4、取得具体的验证规则 String validateContent = (String) msgSourceMethod.invoke(handlerMethod.getBean(),validatorKey); if(validateContent == null || "".equals(validateContent)) { return true ; } else { } //5、针对于每一个具体的操作进行验证处理 String rules [] = validateContent.split("\\|"); //实现数据的拆分处理操作 // 5、取得所有的提交参数 MethodParameter mp [] = handlerMethod.getMethodParameters() ; for (int x = 0 ; x < mp.length ; x ++) { System.out.println(mp[x].getMethod() + "," + mp[x].getParameterName() + "," + mp[x].getParameterType()); } System.out.println(" validateContent = " + validateContent); System.out.println("[*** preHandle] bean = " + handlerMethod.getBean().getClass()); System.out.println("[*** preHandle] beanType = " + handlerMethod.getBeanType()); System.out.println("[*** preHandle] method = " + handlerMethod.getMethod()); return true; //如果不返回true表示截停,不在执行后续的控制层操作 } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("[*** afterCompletion ] cls = " + handler.getClass()); } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("[*** postHandle ] cls = " + handler.getClass()); } }