当前位置: 首页 > article >正文

黑马JavaWeb开发笔记15——用JAVA进行Web开发时候的请求、响应流程,B\S架构、C\S架构(概述)

文章目录

  • 前言
  • 总体流程分析
  • 如何处理请求
  • 如何设置响应数据
  • B/S架构
  • C/S架构
  • 总结


前言

本篇文章是2023年最新黑马JavaWeb开发笔记15:用JAVA进行Web开发时候的请求、响应流程,B\S架构、C\S架构(概述)的总结,只是帮助大家从最浅的层面弄懂这几个概念和基本流程,下一篇笔记做深入讲解。

  1. 总体流程分析
  2. 如何处理请求
  3. 如何设置响应数据
  4. B/S架构
  5. C/S架构

总体流程分析

  • 在上一次的笔记中,我们开发了springbootweb的入门程序。 具体的需求是:基于SpringBoot的方式开发一个web应用,浏览器发起请求 /hello 后 ,给浏览器返回字符串 “Hello World ~”。
  • 真实的过程是,我们在浏览器发起请求请求后端web服务器(也就是内置的Tomcat)
  • 而我们在开发web程序的时候,定义了一个控制器类Controller,请求会被部署在Tomcat中的Controller接收,然后Controller再给浏览器一个响应,响应一个字符串 “Hello World”
  • 在请求响应的过程中是遵循HTTP协议的
    在这里插入图片描述
  • 但是,其实在Tomcat这类Web服务器中,不能识别我们自己定义的Controller
  • 前面讲到过Tomcat是一个Servlet容器,支持Serlvet规范,所以tomcat,可以识别 Servlet程序

如何处理请求

  • 在SpringBoot进行web程序开发时,它内置了一个核心的Servlet程序DispatcherServlet,称之为 核心控制器
    • DispatcherServlet 负责接收页面发送的请求,然后根据执行的规则,将请求再转发给后面的请求处理器Controller
    • 请求处理器处理完请求之后,最终再由DispatcherServlet给浏览器响应数据
      在这里插入图片描述
  • 这样,我们所编写的XxxController 就可以处理请求
  • 作为后端来讲,我们需要重点关注的是Controller里面的内容

如何设置响应数据

  • 浏览器发送请求,会携带请求数据,包括:请求行、请求头
  • 请求到达tomcat之后,tomcat会负责解析这些请求数据,然后将解析后的请求数据传递给Servlet程序的HttpServletRequest对象
  • 意味着 HttpServletRequest 对象就可以获取到请求数据
    在这里插入图片描述
  • 而Tomcat还给Servlet程序传递了一个参数 HttpServletResponse,通过这个对象,我们就可以给浏览器设置响应数据

在这里插入图片描述

B/S架构

  • 上面描述的这种浏览器/服务器的架构模式称为:BS架构
    在这里插入图片描述

  • BS架构:客户端只需要浏览器应用程序的逻辑和数据都存储在服务端

  • 维护很方便,但是速度较慢,会受到网络带宽的影响

  • 后面我们用JAVA语言再去开发web程序的时候,基本是使用B/C架构

  • 以下的一些电商网站或者官网都是B/S架构
    在这里插入图片描述

C/S架构

  • Client/Server客户端/服务器架构模式
  • 这种都需要自己单独安装客户端
  • 很多操作可以在客户端实现,速度快
    在这里插入图片描述

总结

本篇文章是2023年最新黑马JavaWeb开发笔记15:用JAVA进行Web开发时候的请求、响应流程,B\S架构、C\S架构(概述)的总结,只是帮助大家从最浅的层面弄懂这几个概念和基本流程,下一篇笔记做深入讲解。


http://www.kler.cn/a/290949.html

相关文章:

  • 网络安全概论——身份认证
  • 【C语言】动态内存管理:详解malloc和free函数
  • Vue CLI 脚手架创建项目流程详解 (2)
  • LabVIEW伸缩臂参数监控系统
  • Pytorch | 从零构建Vgg对CIFAR10进行分类
  • springboot 配置Kafka 关闭自启动连接
  • log4j漏洞原理以及复现
  • 【JUC】12-CAS
  • Nordic Collegiate Programming ContestNCPC 2021
  • Linux基础 -- 获取CPU负载信息
  • 在react 中还有另外一种three.js 渲染方式
  • 生活因科技而美好:一键解锁PDF处理的无限可能
  • 算法打卡 Day29(回溯算法)-复原 IP 地址 + 子集 + 子集 Ⅱ
  • Gin框架中的全局中间件与中间件传值
  • IDEA 安装lombok插件不兼容的问题及解决方法
  • 【弱监督时间动作定位】Probabilistic Vision-Language Representation for WSTAL 论文阅读
  • Linux shell调试:高效定位错误提高脚本可靠性
  • 修改SpringBoot启动图标banner
  • 使用AI写WebSocket知识是一种怎么样的体验?
  • 17. 如何决定使用ArrayList或LinkedList?在什么情况下选择其中之一?
  • 【Linux】进程周边:进程概念
  • RabbitMQ 入门:基本概念、特性及简单示例
  • 职场关系课:辞退下属的行动指南
  • 智能医学(二)——MDPI特刊推荐
  • HarmonyOS开发实战( Beta5.0)自定义组件冻结功能规范
  • flowable 国产数据库并发性能优化