SpringMVC

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接受请求并根据使用的GETPOST方法调用相应的服务方法。 服务方法将基于定义的业务逻辑设置模型数据,并将视图名称返回给DispatcherServlet
  • DispatcherServlet将从ViewResolver获取请求的定义视图。
  • 当视图完成,DispatcherServlet将模型数据传递到最终的视图,并在浏览器上呈现。

所有上述组件,即: HandlerMappingControllerViewResolverWebApplicationContext的一部分,它是普通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个处理器适配器能共存?

可以共存

入门体验

  1. 创建web项目
  2. 编写web.xml,在其中注册一个特殊的servlet,前端控制器
  3. 编写一个springMVC对的配置文件
    1. 注册一个视图解析器
  4. 编写控制器
  5. 编写结果页面

前端控制器:

<!-- 配置前端控制器,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</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值