Spring MVC + 请求流程

Spring MVC:

  • 介绍:

    • Spring MVC是Spring Framework提供的Web组件,全称是Spring Web MVC,是目前主流的实现MVC设计模式的框架,提供前端路由映射、视图解析等功能。MVC是一种软件架构思想,把软件按照模型,视图,控制器来划分。
  • 理解:

    • 很多应用程序的问题在于处理业务数据的对象 和 显示业务数据的视图之间存在紧密耦合,MVC设计模式的任务是将包含业务数据的模块 与 显示模块的视图 解耦。采用 分层架构 的好处就是增强系统的可维护性和可扩展性。
    • SpringMVC的工程结构一般来说分为三层,自下而上是Modle层(模型,数据访问层)、Cotroller层(控制,逻辑控制层)、View层(视图,页面显示层),其中Modle层分为两层:dao层、service层;使用spring MVC负责请求的转发和视图管理
  • 主要组件:

    • 1、前端控制器 DispatcherServlet(不需要程序员开发)
      • 作用:接收请求、响应结果,相当于转发器,有了DispatcherServlet 就减少了其它组件之间的耦合度。
    • 2、处理器映射器 HandlerMapping(不需要程序员开发)
      • 作用:根据请求的URL来查找Handler
    • 3、处理器适配器 HandlerAdapter
      • 注意:在编写Handler的时候要按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以正确的去执行Handler。
    • 4、处理器 Handler(需要程序员开发)
    • 5、视图解析器 ViewResolver(不需要程序员开发)
      • 作用:进行视图的解析,根据视图逻辑名解析成真正的视图(view)
    • 6、视图 View(需要程序员开发jsp)
      • View是一个接口, 它的实现类支持不同的视图类型(jsp,freemarker,pdf等等)
  • Spring MVC 的工作流程:

    • 1、 用户发送请求至前端控制器DispatcherServlet。
    • 2、 DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取最终要执行Handler。
    • 3、 处理器映射器找到具体的处理器(依据xml配置或注解查找),生成处理器对象及处理器拦截器(如果有则生成)并返回给前端控制器。
    • 4、 DispatcherServlet调用HandlerAdapter处理器适配器,请求执行Handler。
    • 5、 HandlerAdapter经过适配,调用具体的Handler(处理器,也叫后端控制器)。
    • 6、 Handler执行完成并返回ModelAndView。
    • 7、 HandlerAdapter将Handler执行结果ModelAndView返回给DispatcherServlet。
    • 8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器,将逻辑视图解析成真正的视图。
    • 9、 ViewReslover解析后返回具体View。
    • 10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中 / 将Model数据转换为respose响应)。
    • 11、 DispatcherServlet响应用户。
  • Spring MVC 常用注解:

    • @RequestMapping:把URL请求和业务方法进行映射,在控制器的类定义处以及方法定义处都可以添加@RequestMapping,在类定义处添加相当于多了一层访问路径
      • value:指定URL请求的实际地址。
      • method:指定请求的method类型,包括GET、POST、PUT、DELETE等。
      • params:指定request请求中必须包含的参数值,如果不包含的话,就无法调用该方法
    • @ResponseBody: 用于将Controller 方法返回的对象,转换为指定格式(如json、xml等)后,写入到Response对象的body数据区。
    • @RequestParam:用于获取请求参数的值。
    • @PathVarlable:用于将请求url 中的模板变量映射到方法的参数上,即取出url 中的变量作为参数。
    • @Controller: 用于标识一个类为控制器,处理HTTP请求。
    • @RestController: Controller 和 ResponseBody 的组合。

请求流程:

  • 1、浏览器从 url 中获取域名以及其他所需参数
  • 2、通过 DNS 域名解析器解析地址,把域名转换成相应的 ip
  • 3、通过 ip 查找对应的服务器地址
  • 4、与服务器建立链接
  • 5、向服务器发送所需数据请求,并等待服务器给出响应
  • 6、服务器处理相应请求,并做出反应
  • 7、浏览器收到服务器响应,得到 http 代码
  • 8、渲染页面
  • 三次握手:

    • 1、建立连接,客户端向服务端发出请求,并等待确认
    • 2、服务器收到客户端请求,向客户端发送请求数据确认码
    • 3、客户端接收确认码,并给出确认请求回应,客户端和浏览器建立连接完成
  • 四次挥手:

    • 1、客户端向服务器发送结束数据传递请求
    • 2、服务器收到请求返回一个确认码
    • 3、服务器关闭数据传递,并向客户端发送结果
    • 4、客户端收到服务器处理结束,数据传递结束
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值