Spring MVC 详解(二)

时间:2023-03-09 13:39:05
Spring MVC 详解(二)

前端控制器

在web.xml中配置:

Spring MVC 详解(二)

在springmvc.xml中配置springmvc架构三大组件(处理器映射器、适配器、视图解析器)

Spring MVC 详解(二)

处理器映射器

在springmvc.xml中配置:

BeanNameUrlHandlerMapping: 根据请求url(XXXX.action)匹配spring容器bean的 name

找到对应的bean(程序编写的Handler)

<!-- 根据bean的name进行查找Handler 将action的url配置在bean的name中 -->

<bean

class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />

所有处理器映射器都实现HandlerMapping接口。

处理器适配器

在springmvc.xml配置:

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

所有的适配器都是实现了HandlerAdapter接口。

程序编写Handler根据适配器的要求编写。

SimpleControllerHandlerAdapter适配器要求:

通过supports方法知道Handler必须要实现哪个接口:

Handler编写

需要实现Controller接口:

Spring MVC 详解(二)

Spring MVC 详解(二)

配置Handler

在springmvc.xml配置Handler由spring管理Handler。

Spring MVC 详解(二)

配置视图解析器

配置视图解析,能够解析jsp视图:

Spring MVC 详解(二)

注解映射器和适配器

注解映射器

spring3.1之前默认加载映射器是

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

3.1之后要使用:

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

在springmvc.xml中配置RequestMappingHandlerMapping:

使用RequestMappingHandlerMapping需要在Handler 中使用@controller标识此类是一个控制器,使用@requestMapping指定Handler方法所对应的url。

注解适配器

spring3.1之前默认加载映射器是

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

3.1之后要使用:

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

RequestMappingHandlerAdapter,不要求Handler实现任何接口,它需要和RequestMappingHandlerMapping注解映射器配对使用,主要解析Handler方法中的形参。

注解开发Hanlder

Spring MVC 详解(二)

配置Handler

Spring MVC 详解(二)

建议使用组件扫描,组件扫描可以扫描@Controller、@Service、@component、@Repsitory

小结

DispatcherServlet:前端控制器,相当于*调度器,可以降低组件之间的耦合度。

HandlerMapping:处理器映射器,负责根据url查找Handler

HandlerAdapter:处理器适配器,负责根据适配器要求的规则去执行处理器。可以通过扩展适配器支持不同类型的Handler。

viewResolver:视图解析器,根据逻辑视图名解析成真正的视图,

Spring MVC 详解(二)

真正视图地址==前缀+逻辑视图名+后缀