文章目录
SpringMVC 的介绍:
(1)springmvc 是什么?
Spring mvc属于表现层的框架,它是Spring框架的一部分
(2)springmvc 有什么用?
- 》接收请求,获取参数
- 》处理参数
- 》将结果响应给浏览器 如 重定向或者请求转发或者返回json
springmvc就是对Servlet的封装
(3)springMVC与Spring 关系
springMVC是spring的一个组件/模块,springMVC是属于spring。类似于spring里面的其他模块:
比如:(1)bean (2)tx:事务管理 (3)AOP
(4)springMVC与MVC的关系
- (1)springMVC是MVC模式里面的control模块。是一个控制层的框架。类似于:servlet,structs2等。
- (2)SpringMVC 是遵循MVC模式的一个控制层框架。
SSM–>spring+springMVC+Mybatis
Ssh–>structs2+spring+hibernate
Spring(整个系统架构的对象)+springMVC+HIbernate—?行不行?能不能整合?
Spring+springMVC+JBDC?–>行不行?
(5)ssm与ssh的关系
SSM框架使用得比ssh多得多。
- (1)更改控制层的框架。将structs2改成了springMVC。
springMVC 在处理大型应用的时候,基本非常稳定,没有什么漏洞。 - (2)更改持久化层的框架。将hibernate改成了Mybatis.
Hibernate是一个重量级全自动持久化框架。–开发来说很简单,不需要做任何开发,甚至都不用写sql代码,sql代码也是hibernate框架自动生成。 - 全自动的问题:
*都导致配置比较麻烦,或者开发人员不容易理解。
*全封装。灵活的同时不灵活。如果说我们要进行非常复杂的sql查询处理,全自动封装反而不灵活,也麻烦。
Mybatis是一个轻量的半自动持久化框架。–需要开发sql。
SpringMVC架构(MVC设计模式在BS系统下的应用)
springmvc 属于spring FrameWork的一部分,就是一个模块
SpringMVC框架原理
(1)前端控制 dispaterServlet
【不需要程序员开发,是springMVC框架提供,需要配置】
SpringMVC的核心
。它是springMVC的大脑,或者CPU。
-
SpringMVC通过dispatcherServlet与映射器处理,适配器处理器,视图解析器进行交互,降低了系统的耦合度。映射器处理,适配器处理,视图解析器可以独立的发展/配置。
-
配置:servlet。—》在web.xml中配置。
-
配置的目的:让所有的请求,首先访问dispatcherServlet 前端控制器。
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 表示容器在启动时立即加载servlet -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!-- 处理所有URL
配置的方式:
(1)*. do或者*.action,*.abc。加了固定的请求后缀。要求所有的request请求都是.do/.action结尾。【推荐】
(2)/ 表示所有的路径。/login.jsp或者/login.html--也会被匹配到,这是我们不希望的。需要配置排除掉所有的/.html或者/*.jsp映射到该目录。【推荐】
(3)/* 不建议使用。会匹配到任何类型的请求。
-->
<url-pattern>/</url-pattern>
</servlet-mapping>
(2)映射器处理器
【不需要程序进行开发,需要配置】
非注解:
BeanNameUrlHandlerMapping:根据name与路径进行映射,找到对应的handler.4
<!--处理器 映射器-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
<!--处理器-->
<bean name="/hello.do" class="cn.happy.day01.FirstController"></bean>
SimpleUrlHandlerMapping :根据映射的key与路径进行映射,然后使用value与handler进行映射。
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/welcome.htm">welcomeController</prop>
<prop key="/*/welcome.htm">welcomeController</prop>
<prop key="/helloGuest.htm">helloGuestController</prop>
</props>
</property>
</bean>
<bean id="welcomeController"
class="com.mkyong.common.controller.WelcomeController" />
<bean id="helloGuestController"
class="com.mkyong.common.controller.HelloGuestController" />
注解:
RequestMappingHandlerMapping
<!-- 注解的映射器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
配置:
(1)在springMVC的配置文件中配置。
默认:springMVC的配置文件在WEB-INF/下面,springmvc-servlet.xml。
(2)配置映射器处理器。
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
(3)处理器
<bean name="/hello.do" class="cn.happy.day01.FirstController"></bean>
请求路径-> /hello.do
(3)适配器处理器
非注解:【了解】
SimpleControllerHandlerAdapter
HttpRequestHandlerAdapter
注解:
RequestMappingHandlerAdapter
<!-- 注解的适配器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
配置:
(1)在springMVC的配置文件中配置。
处理器适配器–适配对应规则的handle/controller。
SimpleControllerHandlerAdapter–规则是:要求所有的handler类实现Controller。
HttpRequestHandlerAdapter–规则是:要求所有的handler类必须实现HttpRequestHandler
RequestMappingHandlerAdapter。
(2)在springMVC的配置文件中添加下面的信息。
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
(4)处理器Handler
【需要程序员开发】
根据配置的适配器处理器不同,开发方式不同。
(5) ModelAndView
【需要开发】
包含Model和View。Model就是页面的数据,View就是显示页面。
View是有很多种类型的:Jsp,Excel,word,pdf 。。。
在开发过程中视图通常是jsp。所以我们要配置的视图解析器,就是JSP的视图解析器,–用于解析JSP视图和model,将model填充到视图里面去。
(6)视图解析器
【不需要程序员开发,只需要配置】
配置:
- (1)在springMVC的配置文件中配置。
- (2)在springMVC的配置文件中添加对应的视图解析器类。一般B/S架构中使用的视图接卸器是jsp的。
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
id="internalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/jsp/" />
<!-- 后缀 -->
<property name="suffix" value=".jsp" />
</bean>
SpringMVC的简单处理流程
- 》核心是前端控制器
- 》真正处理业务的是Handler