首页 > 其他分享 >基础流程

基础流程

时间:2024-12-16 17:34:08浏览次数:6  
标签:Web HTTP 请求 流程 基础 响应 浏览器 data

相信很多人在开发时,大多是controller到service到mapper,但是用户在点击触发一个事件时,这个请求到底怎么过来的,怎么就找到了你写的这个接口呢。鉴于我以前同时写前端和后端,所以我想简单概述下一个基本的流程

1. 客户端事件触发

  • 用户交互:用户在浏览器中点击网页上的按钮触发交互事件。这通常在HTML文档中表现为一个<button>或其他可交互元素。
<button id="myButton">Submit</button>
  • JavaScript事件监听器
    • 在HTML页面上通过JavaScript为按钮添加监听器,监听click事件。
    • 可以通过直接在元素上添加事件或在脚本块中动态添加。
document.getElementById('myButton').addEventListener('click', function() {
    // 获取必要的数据或元素值,如表单输入
    var inputValue = document.getElementById('inputField').value;

    // 发起请求
    sendRequest(inputValue);
});

2. 构造HTTP请求

  • 初始化请求:创建HTTP请求对象,可以使用XMLHttpRequest对象或现代浏览器中的fetch API。
function sendRequest(data) {
    fetch('/api/endpoint', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({ data: data })
    })
    .then(response => response.json())
    .then(data => console.log('Success:', data))
    .catch((error) => console.error('Error:', error));
}
  • 设置请求参数
    • 指定请求方法(GET, POST等)。
    • 设置请求头,例如Content-Type(通常为application/jsonapplication/x-www-form-urlencoded)。
    • 提供请求体(例如JSON数据)或URL参数。

3. 网络层处理

  • DNS解析:浏览器会根据请求的URL进行DNS解析,将域名(如example.com)转换为目标服务器的IP地址。涉及以下步骤:

    • 浏览器检查自身缓存。
    • 若无结果,查询操作系统的缓存。
    • 否则通过路由器和ISP请求DNS服务器进行递归查询。
  • 建立连接

    • TCP连接:通过三次握手确定与服务器之间的可靠连接。(想了解自己去查,我也不甚了解,这个网络运维方面工作更多一些)
    • SSL/TLS握手(在HTTPS连接时):客户端与服务器之间进行加密会话的协商,涉及证书验证和会话密钥生成。

4. 请求到达Web服务器

  • Web服务器接收:服务器软件(如Apache、Nginx)接受到浏览器发来的HTTP请求。

  • 初步处理和路由:Web服务器可能会基于服务器配置进行请求的初步处理,如:

    • 检查防火墙规则。
    • 路由请求到正确的应用(反向代理的情况)。

5. 应用服务器处理请求

  • 请求转发:如果是Java web应用程序,Web服务器通常会将请求转发到一个应用服务器(如Apache Tomcat)。

  • 应用服务器处理:应用服务器负责执行Java应用程序代码,通过Serlvet容器来处理请求。

6. DispatcherServlet拦截请求

  • Spring框架的作用
    • DispatcherServlet充当前端控制器,所有进来的请求最初都被这个Servlet捕获。
    • 它通过查找映射和配置(如XML或注解)来识别目标控制器。

7. 请求映射到控制器

  • 映射查找
    • DispatcherServlet通过查找HandlerMapping来确定应该调用哪个控制器方法。
    • 使用注解(如@RequestMapping)或XML配置匹配URL和HTTP方法。
@Controller
public class MyController {

    @PostMapping("/api/endpoint")
    public ResponseEntity<MyResponse> handleRequest(@RequestBody MyData data) {
        // 业务处理
        return ResponseEntity.ok(new MyResponse("Success"));
    }
}
  • 参数解析
    • 使用Spring的HandlerMethod能力自动解析和绑定请求中的参数、头信息、和请求体到方法参数。

8. 控制器执行

  • 执行处理逻辑
    • 控制器方法调用应用程序的业务逻辑,通常通过调用服务层组件进行更复杂的操作。
    • 如果涉及数据库,可能会通过DAO(数据访问对象)模式访问数据库。

9. 生成和返回响应

  • 处理结果
    • 控制器返回业务逻辑处理后的结果,通常封装成某种响应对象。
    • 如果结果是视图名,DispatcherServlet通过视图解析器为客户端生成HTML页面。
    • 对于REST服务,通常返回JSON格式数据。

10. HTTP响应构造

  • 响应生成
    • Spring框架会构造标准的HTTP响应,设置合适的状态码、响应头和响应体。
    • Servlet容器(如Tomcat)负责最终的HTTP响应构建和发送。

11. 返回给客户端

  • 传回响应:应用服务器将响应传递给Web服务器,Web服务器再将其返回给客户端浏览器。

12. 客户端处理响应

  • 处理响应

    • 浏览器接收到HTTP响应后,根据响应头中的Content-Type决定解析方式。
    • 如果是JSON,JavaScript可以解析并更新页面上的内容。
    • 如果是HTML,浏览器会直接渲染页面。
  • 页面更新

    • 基于接收到的数据,可能会调用JavaScript来更新网页的DOM内容,修改界面元素,或者显示用户提示。以下是一个简单的例子:
fetch('/api/endpoint')
    .then(response => response.json())
    .then(data => {
        document.getElementById('responseMessage').innerText = data.message;
    });

这一流程跨越了多个技术层次,包括浏览器端的用户交互和脚本执行,网络协议与传输,服务器端的Web与应用服务器交互,以及Java应用框架(如Spring)的内部操作逻辑。每个步骤都有其独特的技术细节与实现逻辑,以确保请求的正确处理和响应。

标签:Web,HTTP,请求,流程,基础,响应,浏览器,data
From: https://www.cnblogs.com/jhfnewstart/p/18610705

相关文章

  • LInux基础——vsftpd问题
    1、问题:客户端报错“响应:500OOPS:failedtoopenxferloglogfile:/var/log/vsftpd/vsftpd.conf”根因:没有创建vsftpd日志目录#创建vsftpd日志目录mkdir/var/log/vsftpd 2、问题:修改默认vsftpd登入端口根因:/etc/vsftpd/vsftpd.conf#将默认登入端口21修改未132......
  • 天津市企业技术中心认定指南(条件、材料清单、流程)
    2025年天津市企业技术中心认定指南为企业提供了详尽的申请条件、所需材料清单及认定流程。这一指南旨在帮助企业了解并准备相关的认定工作,确保申请过程的顺利进行。条件部分详细列出了企业在技术创新能力、研发投入比例、科技人员数量等方面的具体要求;材料清单则明确了企业需......
  • Java 基础学习路线
    一、环境搭建与入门(1-2周)安装Java开发工具包(JDK),配置环境变量,确保能够在命令行中正常运行Java命令。选择一款集成开发环境(IDE),如Eclipse或IntelliJIDEA,熟悉其基本操作,包括创建项目、编写代码、调试程序等。学习Java的基本语法,包括变量、数据类型(基本数据类型如in......
  • Dot Foods EDI 需求分析及对接流程
    DotFoods是一家美国领先的食品和非食品产品的中间批发分销商,主要为食品服务、零售和分销行业的客户提供服务,是北美大型食品中间分销商之一。DotFoods(以下简称Dot)的业务模式是通过整合多个供应商的产品,为客户提供小批量、多样化的货品,从而帮助客户降低库存成本并提高运营效率......
  • web组态软件开发详细流程介绍
     什么是组态软件?组态软件是一种用于创建、配置和管理各种工业控制系统的应用程序。它通过用户友好的图形界面和先进的功能,使工程师能够实时监控和控制复杂的工业过程。一、组态软件的基本概念1.1组态软件的作用组态软件在工业控制系统中起到关键的作用。它可以实时获......
  • 零基础学习人工智能—Python—Pytorch学习(十二)
    前言本文介绍使用神经网络进行实战。使用的代码是《零基础学习人工智能—Python—Pytorch学习(九)》里的代码。代码实现mudule定义首先我们自定义一个module,创建一个torch_test17_Model.py文件(这个module要单独用个py文件定义),如下:importtorch.nnasnnimporttorch.nn.fun......
  • Linux系统基础(二):目录结构解析
    Linux目录结构根目录介绍/根目录/bin 放置的是在单人维护模式下还能够被操作的指令,在/bin底下的指令可以被root与一般帐号所使用/boot存放启动所需要的文件,如Linux内核和引导程序/dev存放设备文件,用于访问设备如硬盘、显示器、网络接口......
  • Python基础 day9 迭代生成,文件操作
    一:迭代器 iter特点:每次迭代得到的结果都是下一次迭代的初始值。迭代对象:字符串,列表,元组,集合,字典。可迭代对象的表现形式为内置了iter方法的数据,都属于可迭代对象。声明迭代器:方法一:        变量名=可迭代对象.__iter__()方法二:      ......
  • Python基础 day8 函数(三)
    一:闭包函数闭:封闭,指一个嵌套函数中的内层数据。包:用内层函数来操作外层函数得到的数据。闭包函数的作用:间接修改数据,保护私有数据不被轻易修改。闭包函数的必备条件:1.必须是一个嵌套函数2.内层数据必须操作外层函数数据(这个数据可以是变量或参数)3.外层函数必须返回内层......
  • 2024年最新最全网络安全护网行动指南【附零基础入门教程】_网络安全靶场整个业务指南
    前言随着《网络安全法》和《等级保护制度条例2.0》的颁布,国内企业的网络安全建设需与时俱进,要更加注重业务场景的安全性并合理部署网络安全硬件产品,严防死守“网络安全”底线。“HW行动”大幕开启,国联易安誓为政府、企事业单位网络安全护航!,网络安全形势变得尤为复杂严峻。......