spring使用--<mvc:annotation-driven />
<mvc:annotation-driven/>相当于注册了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个bean,配置一些messageconverter。即解决了@Controller注解的使用前提配置。
有些时候我们需要在xml中配置拦截器,在springMVC2的时候我们会选用这四种方式:“org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping”、
“org.springframework.web.servlet.handler.SimpleUrlHandlerMapping”、
“org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping”、
“org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping”来进行配置。(此方法只针对springMVC3低版本、springMVC2全版本,springMVC高版本提供了更好的选择)
当我们使用“DefaultAnnotationHandlerMapping”的时候,会发现一个坑,那就是拦截器并没有能够被启动。因为<mvc:annotation-driven/>先被实例化了。
那么如何解决这个问题呢?那就是取消<mvc:annotation-driven/>方式配置。转而采用分别配置AnnotationMethodHandlerAdapter跟DefaultAnnotationHandlerMapping来达到相同的目的:
<!-- 完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" > <property name="interceptors"> <list> <ref bean="_DotnetTicketContextInterceptor"/> <ref bean="_DotnetTicketRequiredInterceptor"/> <ref bean="hrmInterceptor"/> </list> </property> </bean>
以上方法只针对springMVC2,springMVC3提供了更好的方法来配置拦截器:
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <ref bean="springSSOInterceptor"/> </mvc:interceptor> <mvc:interceptor> <mvc:mapping path="/**"/> <ref bean="springAuthorizationInterceptor"/> </mvc:interceptor> </mvc:interceptors>
上一篇: 另眼看世界-人生感悟-摘抄他人...
下一篇: Eclipse控制台不限日志行数...