天天看点

java中什么是处理器适配器_SpringMVC第四篇——处理器映射器,处理器适配器,视图解析器的配置...

这两个注解的作用和来源:

1:默认加载的映射器处理器和映射器配置器

入门程序只是配置了组件扫描器

使用``自动扫描标记@Controller的控制器类,

并没有配置处理器映射器和处理器适配器;

根据SpringMVC的架构和执行流程,是前端控制器调用处理器映射器,调用处理器适配器,执行处理器。是因为SpringMVC中在加载完前端控制器之后,会默认的加处理器映射器和处理器适配器;

SpringMVC加载.DispatcherServlet.properties配置文件:

java中什么是处理器适配器_SpringMVC第四篇——处理器映射器,处理器适配器,视图解析器的配置...

org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping

映射器:默认加载两个处理器映射器。

处理器映射器

使用配置方式开发:(需要实现implements Controller)

org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,

使用注解方式开发:

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

处理器适配器

org.springframework.web.servlet.HandlerAdapter=

org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\

org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\

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

注解方式就回加载这个适配器:

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

如果controller的实现使用的是:

public class Show implements HttpRequestHandler{},

不使用@controller的注解,那么就会加载

org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\ ,这个处理器适配器:

如果使用的是:

public class Show implements Controller{}

就会加载: org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\

我们使用的是:@controller,所以加载的是:

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

2:关联源码,查看加载的类,

打开注解方式的默认的映射器处理器源码:

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

关联源码包:

spring-webmvc-4.1.3.RELEASE-sources.jar

发现:

java中什么是处理器适配器_SpringMVC第四篇——处理器映射器,处理器适配器,视图解析器的配置...

*默认的处理器映射器: `DefaultAnnotationHandlerMapping已经过期了,但是还是能够使用:

在spring3.2和之后的之后的版本,使用的是

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

同样打开适配器源码:默认的处理器适配器:AnnotationMethodHandlerAdapter

所以当我们使用controller的注解类,使用requestMapping的注解方法。那么项目运行起来,前端控制器加载之后,就会默认的加载了处理器映射器org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping

和处理器适配器。org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter

2:如果我们要使用新的处理器映射器:

那我们就不使用默认的,我们自己进行配置:

这样就前端控制器加载之后,就会加载我们配置的处理器映射器和处理器适配器。

这样使用比较麻烦:使用注解驱动代替上面的配置

自动加载RequestMappingHandlerMapping和RequestMappingHandlerAdapter这两个类

3:视图解析器的配置

就是会在返回的所有的视图路径上自动加上前缀和后缀

入门程序中:返回的视图路径:

ma.setViewName("/WEB-INF/hello.jsp");

配置好了视图解析器之后因为会自动加上前缀和后缀。只需要写成:

ma.setViewName("hello");

4.总结:

1:使用注解方式进行SpringMVC进行开发的时候,不配处理器映射器和处理器适配器,框架会默认加载DefaultAnnotationHandlerMapping,AnnotationMethodHandlerAdapter。

2:从spring3.1之后这两个类就过期了,但是还能使用。我们开发时候使用新的类。需要在配置文件中进行配置。我们使用注解驱动:

这个配置是替代了配置:

3:视图解析器配置:

视图解析器,可以不用配置,是为了方便开发使用,

返回 SpringMVC的学习笔记目录