springMVC 自定义拦截器
来源:互联网 发布:魏强斌 知乎 编辑:程序博客网 时间:2024/05/16 12:17
文章摘抄至 http://exceptioneye.iteye.com/blog/1303842
一、拦截器的配置
1、传统的配置
<beanclass="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" ><property name="interceptors"> <!-- 多个拦截器,顺序执行 --> <list> <ref bean="commonInterceptor"/> </list></property></bean><!-- 如果不定义mappingURL,则默认拦截所有对Controller的请求 ; 可以使用正则表达式对url进行匹配,从而更细粒度的进行拦截(.*/entryOrJsonController\.do\?action=reg.*);--><bean id="commonInterceptor" class="com.wy.interceptor.CommonInterceptor"> <property name="mappingURL" value=".*/entryOrJsonController\.do\?action=reg.*"/></bean>
2、基于注解的配置
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation=" http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"><!-- 国际化 --><bean id="messageSource"class="org.springframework.context.support.ResourceBundleMessageSource"><property name="basename" value="message" /></bean><bean id="localeResolver"class="org.springframework.web.servlet.i18n.CookieLocaleResolver" /><!--Spring3.1开始的注解 HandlerMapping --><beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" /><!--Spring3.1开始的注解 HandlerAdapter --><beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"><!--线程安全的访问session --><property name="synchronizeOnSession" value="true" /></bean><!-- ViewResolver 视图解析类 --><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass"value="org.springframework.web.servlet.view.JstlView" /><property name="prefix" value="/WEB-INF/jsp/" /><property name="suffix" value=".jsp" /></bean><!-- 数据源 --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property><property name="url"><!-- <value>jdbc:mysql://127.0.0.1:3306/myspring</value> --><value>jdbc:mysql://172.16.14.81:3306/myspring</value></property><property name="username"><value>root</value></property><property name="password"><value>admin</value></property></bean><!-- 指明操作数据库的配置文件位置 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"></property><property name="configLocation"value="classpath:../config/mybatis/MyBatis-Configuration.xml"></property></bean><!-- 使用事物处理 --><bean id="tm"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property></bean><tx:annotation-driven transaction-manager="tm" /><!-- 拦截器 --> <mvc:interceptors> <!-- 多个拦截器,顺序执行 --> <mvc:interceptor> <mvc:mapping path="/user/*" /> <!-- 如果不配置或/*,将拦截所有的Controller --> <bean class="adtec.userManager.controller.MyInterceptor"></bean> </mvc:interceptor> </mvc:interceptors> </beans>
二、拦截器类
package com.wy.interceptor;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.log4j.Logger;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;public class CommonInterceptor implements HandlerInterceptor {private Logger log = Logger.getLogger(CommonInterceptor.class);public CommonInterceptor() {// TODO Auto-generated constructor stub}private String mappingURL;//利用正则映射到需要拦截的路径 public void setMappingURL(String mappingURL) { this.mappingURL = mappingURL; } /** * 在业务处理器处理请求之前被调用 * 如果返回false * 从当前的拦截器往回执行所有拦截器的afterCompletion(),再退出拦截器链 * * 如果返回true * 执行下一个拦截器,直到所有的拦截器都执行完毕 * 再执行被拦截的Controller * 然后进入拦截器链, * 从最后一个拦截器往回执行所有的postHandle() * 接着再从最后一个拦截器往回执行所有的afterCompletion() */@Overridepublic boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {// TODO Auto-generated method stublog.info("==============执行顺序: 1、preHandle================");String url=request.getRequestURL().toString(); if(mappingURL==null || url.matches(mappingURL)){ request.getRequestDispatcher("/msg.jsp").forward(request, response);return false; } return true;}//在业务处理器处理请求执行完成后(执行完controller对应的方法之后),生成视图之前执行的动作 @Overridepublic void postHandle(HttpServletRequest request,HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {// TODO Auto-generated method stublog.info("==============执行顺序: 2、postHandle================");}/** * 在DispatcherServlet完全处理完请求后被调用 * * 当有拦截器抛出异常时,会从当前拦截器往回执行所有的拦截器的afterCompletion() */@Overridepublic void afterCompletion(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex)throws Exception {// TODO Auto-generated method stublog.info("==============执行顺序: 3、afterCompletion================");}}
0 0
- springMVC 自定义拦截器
- springmvc自定义拦截器
- SpringMVC 自定义拦截器
- springmvc自定义拦截器
- springMVC自定义拦截器
- springMVC 自定义拦截器
- springMVC 自定义拦截器
- SpringMvc自定义拦截器
- SpringMVC自定义拦截器
- SpringMvc自定义拦截器
- SpringMVC自定义拦截器
- SpringMVC 自定义拦截器
- 【SpringMVC】自定义拦截器
- springMVC自定义拦截器
- SpringMVC利用拦截器拦截自定义注解
- SpringMVC自定义拦截器详解
- SpringMVC自定义拦截器详解
- SpringMVC-14 自定义拦截器
- 关于JS中的constructor与prototype
- 13、Dialog及Menu
- Android 的线程和线程池
- lucence 入门
- 并查集详解
- springMVC 自定义拦截器
- springMVC 类型转换
- 一种排序
- swift中UILable的使用
- JavaScript中盲点
- springMVC 格式化
- 汉诺塔问题--递归实现
- android padding margin和html padding margin的区别
- 14、Fragment