介绍
springmvc是spring的一个模块,无需与spring进行中间整合层的整合,是一个基于MVC的web框架
MVC(B/S下)
MVC是一个设计模式,controller负责流程控制,逻辑处理,model负责数据的存储于读写,view显示数据
流程
请求来:
(C)前端控制器 DispatcherServlet,根据用户请求响应请求Handler->处理器映射器HandlerMapping返回Handler->前端控制器 ->处理器适配器执行处理器(HandlerAdpter)->Handler 处理器(M)
处理后:
Handler(modelandview)->HandlerAdpter->DispatcherServlet->视图解析器(返回view)->DispatcherServlet将view填充到请求(request)
DispatcherServlet与所有组件交互,减少组件之间的耦合性
web.xml中配置DispatcherServlet,contextConfigLocation配置处理器映射器、处理器适配器的配置文件
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>***(略)</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:***.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!-- /解析所有,/*会解析JSP页面,由于JSP找不到对应的Handler导致报错,*.action解析action结尾的违建 -->
<url-pattern></url-pattern>
</servlet-mapping>
配置文件springmvc.xml
配置处理器映射器、处理器适配器、Handler、视图解析器
非注解的适配器与映射器
两种适配器
1.SimpleControllerHandlerAdapter
2.HttpRequestHandlerAdapter
<!-- 处理器适配器继承HandlerAdapter -->
<!-- 要求Handler实现Controller接口,用ModelAndView -->
<bean class="org.springframework.web.servlet.SimpleControllerHandlerAdapter" />
<!-- 要求Handler实现HttpRequestHandler接口,用request,可通过response设置响应的格式 -->
<bean class="org.springframework.web.servlet.HttpRequestHandlerAdapter" />
两种处理器映射器:
1.SimpleUrlHandlerMapping
<bean class="...SimpleUrlHandlerMapping">
<property>
<!-- id既是url -->
<prop id=""></prop>
</property>
</bean>
2.BeanNameUrlHandlerMapping
<bean class="...BeanNameUrlHandlerMapping"></bean>
多个映射器可以并存,SimpleUrlHandlerMapping是BeanNameUrlHandlerMapping的增强
注解的适配器与映射器
<!-- 两种,1.适配器与映射器的bean,2.如下 -->
<mvc:annotation-driver></mvc:annotation-driver>
Handler不需要实现什么接口,类上注解@Controller,用ModelAndView ,对应方法注解映射器,配置handler是用扫描
<context:component-scan base-package=""></context:component-scan>