非注解的处理器映射器和适配器
1.非注解的处理器映射器
之前的处理器映射器:
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping
介绍另一个映射器:
org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
现在同时存在两个映射器,我们分别进行测试,发现访问/queryItems_test.action与访问/queryItems1.action与/queryItems2.action都可以得到正确视图
说明:
多个映射器可以并存,前端控制器判断url能让哪些映射器映射,就让正确的映射器处理。
2.非注解的处理器适配器
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter
要求编写的Handler实现 Controller接口。
org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter
要求编写的Handler实现 HttpRequestHandler接口。
ItemsController2:
测试:
先别忘记在springmvc.xml中配置Handler和处理器映射器
//使用此方法可以通过修改response,设置响应的数据格式,比如响应json数据
可以看到,其中BeanNameUrlHandlerMapping和HttpRequestHandlerAdapter咱们之前都用到过,
这些都是非注解的处理器映射器和适配器,那些DefaultAnnotationHandlerMapping、AnnotationMethodHandlerAdapter都是注解的处理器映射器和适配器
前端控制器从上边的文件中加载处理映射器、适配器、视图解析器等组件,如果不在springmvc.xml中配置,使用默认加载的。
1.非注解的处理器映射器
之前的处理器映射器:
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping
介绍另一个映射器:
org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
现在同时存在两个映射器,我们分别进行测试,发现访问/queryItems_test.action与访问/queryItems1.action与/queryItems2.action都可以得到正确视图
说明:
多个映射器可以并存,前端控制器判断url能让哪些映射器映射,就让正确的映射器处理。
2.非注解的处理器适配器
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter
要求编写的Handler实现 Controller接口。
org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter
要求编写的Handler实现 HttpRequestHandler接口。
ItemsController2:
测试:
先别忘记在springmvc.xml中配置Handler和处理器映射器
测试结果如图
新处理器适配器运行结果
//使用此方法可以通过修改response,设置响应的数据格式,比如响应json数据
现在脑子里应该慢慢清晰起来,处理器映射器就是根据URL来找Handler,处理器适配器就是按照它要求的规则(handler instanceof XXX接口)去执行Handler。但是我们发现有些麻烦的就是,一个Handler类中都是一个方法。下次我们就来说注解的映射器和适配器。
4.DispatcherSerlvet.properties
通过以前咱们写的样例,会发现,多个适配器和多个映射器可以并存但是其实你不在springmvc.xml中配置适配器,也可以正常运行程序。因为在SpringMVC的jar包中含有一个默认配置文件,如果没有在springmvc.xml配置,就默认使用DispatcherSerlvet.properties的配置如图
打开DispatcherSerlvet.properties:
可以看到,其中BeanNameUrlHandlerMapping和HttpRequestHandlerAdapter咱们之前都用到过,
这些都是非注解的处理器映射器和适配器,那些DefaultAnnotationHandlerMapping、AnnotationMethodHandlerAdapter都是注解的处理器映射器和适配器
前端控制器从上边的文件中加载处理映射器、适配器、视图解析器等组件,如果不在springmvc.xml中配置,使用默认加载的。