DispatcherServlet:前段控制器
用户请求到达前端控制器,相当于MVC模式中的C,DispatcherServlet是整个流程控制的中心,由于它调用其他组件处理用户的请求,它的存在降低了组件之间的耦合性。
HandlerMapping:处理器映射器
负责根据用户请求的url找到Hnadler即处理器,springmvc提供了不同的映射器实现不同的映射方式,比如:配置文件方式、实现接口方式、注解方式等。
Hnadler:处理器
Handler是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。由于Handler涉及到具体的业务请求,所以一般情况需要根据业务需求开发Handler。
HandlerAdapter:处理器适配器
通过HandlerAdapter对处理器进行执行,这只是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。
ViewResolver:视图解析器
ViewResolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成程物理视图名即具体的页面地址,再生成VIew视图对象,最后对View进行渲染将处理结果通过页面展示给用户。
View:视图
Spring提供了很多的View视图类型的支持,包括:JSTLView、FreeMarkerView、PDFView等,常用的是jsp。一般情况下需要由程序员根据业务需求开发具体的页面。
默认加载的组件:
不做任何配置,就可以使用这些组件,因为框架已经默认加载这些组件了。
组件扫描器:
使用组件扫描器省去了在sprign容器配置每个Controller类的繁琐
使用<context:component-scan>自动扫描标记@Controller的控制器类,在springmvc.xml配置文件如下:
<!--配置controller扫描包,多个包之间用,分隔-->
<context:component-scan base-package="cn.springmvc.controller"/>
配置处理器映射器:
注解式处理器映射器,对类中标记了@RequestMapping的方法进行映射,根据@RequestMapping定义的url匹配@RequestMapping标记的方法,匹配成功返回HandlerMethod对象给前端控制器。
HandlerMethod对象中封装url对应的方法Method。
在springmvc.xml配置文件中配置如下:
<!--配置处理器映射器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
配置处理器适配器:
注解式处理器适配器,对标记@RequestMapping的方法进行适配。
在springmvc.xml配置文件中配置如下:
<!--配置处理器适配器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
注解驱动:
直接配置处理器映射器和处理器适配器比较麻烦,可以使用注解驱动来加载。
SpringMVC使用<mvc:annotation-driven>自动加载RequestMappingHandlerMapping和RequestMappingHandlerAdapter
可以在springmvc.xml配置文件中使用<mvc:annotation-driven>替代注解处理器和适配器的配置。
<!--注解驱动-->
<mvc:annotation-driven/>
视图解析器:
视图解析器使用SpringMVC框架默认的InternalResourceViewResolver,这个视图解析器支持JSP视图解析。
在springmvc.xml配置文件中配置如下:
<!--配置视图解析器-->
<bean
class = "org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--配置逻辑视图的前缀-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--配置逻辑视图的后缀-->
<property name="suffix" value=".jsp"/>
</bean>
逻辑视图名需要在controller中返回ModelAndView指定,比如逻辑视图名为Item,则最终返回的jsp视图地址:
"WEB-INF/jsp/Item.jsp"
最终jsp物理地址:
前缀+逻辑视图名+后缀