SpringMVC
待更新
文章目录
简介
Springmvc是一个web层mvc框架,类似struts2. 何谓mvc:
model 模型 封装了应用程序数据,通常它们将由POJO
类组成
view 视图 负责渲染模型数据,一般来说它生成客户端浏览器可以解释HTML输出。
controller 控制器 负责处理用户请求并构建适当的模型,并将其传递给视图进行渲染。
这是一种设计模式,将责任进行拆分,不同组件负责不同的事情
Spring Web模型 - 视图 - 控制器(MVC)框架是围绕DispatcherServlet
设计的,它处理所有的HTTP请求和响应。 Spring Web MVC DispatcherServlet的请求处理工作流如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hhg07Wa3-1572800330321)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1567421512792.png)]
以下是对应于到DispatcherServlet
的传入HTTP请求的事件顺序:
- 在接收到HTTP请求后,
DispatcherServlet
会查询HandlerMapping
以调用相应的Controller
。 Controller
接受请求并根据使用的GET
或POST
方法调用相应的服务方法。 服务方法将基于定义的业务逻辑设置模型数据,并将视图名称返回给DispatcherServlet
。DispatcherServlet
将从ViewResolver
获取请求的定义视图。- 当视图完成,
DispatcherServlet
将模型数据传递到最终的视图,并在浏览器上呈现。
所有上述组件,即: HandlerMapping
,Controller
和ViewResolver
是WebApplicationContext
的一部分,它是普通ApplicationContext
的扩展,带有Web应用程序所需的一些额外功能。
好处:
- 结构清晰
- 更好维护(大量使用jsp的年代,<%%>,显示)
坏处:
- 更复杂了
springmvc流程图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kxq6mjkd-1572800330323)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1567069463405.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xsj9ZQz1-1572800330325)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1567444175657.png)]
处理器映射器
BeanNameUrlHandlerMapping
功能:寻找Controller
根据url请求去匹配bean的name属性url,从而获取Controller
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RoNMrzzA-1572800330333)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1567444470539.png)]
SimpleUrlHandlerMaping
功能:寻找Controller
根据浏览器url匹配简单url的key,key又Controller的id找到Controller
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9XoszCVe-1572800330335)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1567444481114.png)]
ControllerClassNameHandlerMapping
功能:寻找Controller
根据类名(MyController)类名.do来访问,类名首字母小写
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K5D754q4-1572800330338)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1567444499643.png)]
映射器之间能不能共存?
3个处理器映射器可以共存。
处理器适配器
SimpleControllerHandlerAdapter
功能:执行controller
调用controller里面方法,返回modelAndView。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D3W4Eie0-1572800330341)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1567444553583.png)]
HttpRequestHandlerAdapter
功能:执行controller
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i6HsaEqk-1572800330342)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1567444566035.png)]
2个处理器适配器能共存?
可以共存
入门体验
- 创建web项目
- 编写web.xml,在其中注册一个特殊的servlet,前端控制器
- 编写一个springMVC对的配置文件
- 注册一个视图解析器
- 编写控制器
- 编写结果页面
前端控制器:
<!-- 配置前端控制器,DispatcherServlet -->
<servlet>
<!--
这里写的名字是讲究的,
如果我们不去修改spring配置文件的默认位置,那么springmvc
它会去web-inf下面找一个叫做springmvc-servlet.xml的文件
[servlet-name]-servlet.xml
-->
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</