SpringMVC映射器和适配器

一,非注解的处理器映射器和适配器

非注解映射器

1.第一种处理器映射器

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!-- 配置url和Handler的映射关系 -->
<bean name="/category.action" class="com.controller.CategoryController"/>
  • 1
  • 2
  • 3

这种映射器有个问题,就是url和handler的映射关系要单独配置..(和映射器分开了)

2.第二种处理器映射器

<bean id="categoryController" class="com.controller.CategoryController"/>
<!-- 简单url映射器 -->
 <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
 <property name="mappings">
     <props>
 <!--  key 为客户端请求的url   后面是 handler的id 由id为 categoryController的handler进行处理-->
    <prop key="/category1.action">categoryController</prop>
    <prop key="/category2.action">categoryController</prop>
    </props>
 </property>
</bean>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

这种映射器的好处是,url和对应的handler可以集中配置(放到了映射器的里面)

两种映射器可以并存,中心控制器会去判断url能让哪个映射器映射就让哪个映射器映射.

非注解映射器

1.第一种适配器(SimpleController)

<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
  • 1
  • 2

要求编写的Handler要实现Controller接口、实现接口的handleRequest()方法

2.第二种适配器(HttpRequest)

<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>
  • 1

要求编写的Handler实现 HttpRequestHandler 接口 
和原始的Servlet类似.

如果不配置默认使用org.springframework.web.servlet.DispatcherServlet.properties 文件中配置的.

二,注解的处理器映射器和适配器

在spring3.1之前使用的

注解映射器

org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping

注解适配器

org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter

使在spring3.1之后

注解映射器

org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping

注解适配器

org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter

1.在springmvc中配置注解的映射器和适配器 
注解的映射器和适配器不是默认提供的,必须要配置一下

注解的映射器

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
  • 1

注解的适配器

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/> 
  • 1

使用mvc:annotation-driven代替上面两行 写了这个注解驱动 上面两行就不用写了注解驱动还默认加载了很多参数绑定方法,比如json转换解析器就默认加载了 实际开发推荐使用这个

 <mvc:annotation-driven></mvc:annotation-driven>
  • 1

注解的映射器和适配器要成对使用!! 
不能一个用注解的适配器和另一个用非注解的映射器!

2.编写Handler 
(1)使用@Controller 标示控制器 就可以不实现 Controller接口或HttpRequestHandler接口了

(2)使用@RequestMapping(“/queryCategory.action”) 配置 url和方法的映射关系 .action可以加也可以不加

3.在springmvc中声明编写的handler

 <bean class="com.controller.CategoryController3"/> 
  • 1

一个一个声明控制器比较麻烦,可以使用组件扫描,可以扫描控制器、service等,这里扫描控制器 ambiguous 使用了组件扫描后,控制器就不需要在这声明了,如果再声明就报错,含糊的方法

<context:component-scan base-package="com.controller"></context:component-scan>

猜你喜欢

转载自my.oschina.net/architectliuyuanyuan/blog/1621972
今日推荐