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

Web 后端 请求与响应

一 请求响应

1. 请求(Request)

客户端向服务器发送的HTTP请求,通常包含以下内容:

  • 请求行:HTTP方法(GET/POST等)、请求的URL、协议版本。

  • 请求头(Headers):客户端信息(如浏览器类型、支持的语言)、Cookie、内容类型等。

  • 请求体(Body):POST/PUT请求时携带的数据(如表单参数、JSON)。

在JavaWeb中的处理

  • Servlet通过HttpServletRequest对象接收请求:

protected void doGet(HttpServletRequest request, HttpServletResponse response) {
    // 获取请求参数(如URL中的参数)
    String username = request.getParameter("username");
    
    // 获取请求头信息
    String userAgent = request.getHeader("User-Agent");
}

2. 响应(Response)

服务器处理请求后返回给客户端的HTTP响应,通常包含:

  • 状态行:状态码(如200成功、404未找到)、状态描述。

  • 响应头(Headers):内容类型(如HTML/JSON)、Cookie、缓存控制等。

  • 响应体(Body):返回的实际内容(如HTML页面、JSON数据)。

在JavaWeb中的处理

  • Servlet通过HttpServletResponse对象生成响应:

protected void doGet(HttpServletRequest request, HttpServletResponse response) {
    // 设置响应内容类型(如HTML或JSON)
    response.setContentType("text/html;charset=UTF-8");
    
    // 写入响应内容
    PrintWriter out = response.getWriter();
    out.println("<h1>Hello, World!</h1>");
    
    // 设置响应状态码(可选)
    response.setStatus(200);
}

3. 常见场景

  • GET请求:获取数据(如访问网页),参数通过URL传递。

  • POST请求:提交数据(如表单提交),参数通过请求体传递。

  • 重定向:服务器返回302状态码,让客户端跳转到新URL。

response.sendRedirect("/new-page.jsp");

返回JSON:常用于前后端分离项目。

response.setContentType("application/json;charset=UTF-8");
String json = "{\"name\":\"Tom\", \"age\":20}";
out.print(json);

4. 典型流程

  1. 客户端发送HTTP请求到服务器(如访问/login)。

  2. 服务器解析请求,交给对应的Servlet处理。

  3. Servlet通过request获取参数,执行业务逻辑(如查询数据库)。

  4. Servlet通过response生成响应(返回页面或数据)。

  5. 客户端接收并渲染响应结果。

5 总结

  • 请求(Request):客户端向服务器要数据或提交数据。

  • 响应(Response):服务器处理请求后返回结果。

  • JavaWeb通过HttpServletRequestHttpServletResponse对象封装了HTTP协议的底层细节,开发者只需关注业务逻辑的实现。

二 BS架构与CS架构

1. BS架构(Browser/Server)

定义

用户通过浏览器(如Chrome、Firefox)访问应用,业务逻辑和数据存储集中在服务器端,客户端仅负责展示和简单交互。

特点
  • 客户端:无需安装额外软件,只需浏览器。

  • 服务器:负责核心逻辑、数据处理和存储。

  • 通信:基于HTTP/HTTPS协议,通过请求-响应模式交互。

优点
  • 跨平台:支持任何有浏览器的设备(PC、手机、平板)。

  • 维护方便:只需更新服务器,客户端自动同步。

  • 低成本:无需开发和维护多平台的客户端。

  • 轻量级:适合快速迭代的Web应用(如电商、博客)。

缺点
  • 性能依赖网络:弱网环境下体验差。

  • 功能受限:复杂操作(如3D渲染、本地硬件调用)支持有限。

  • 安全性较低:易受XSS、CSRF等Web攻击。

适用场景
  • Web应用(如在线办公、电商网站)。

  • 信息展示型系统(如新闻门户、企业官网)。

  • 轻量级交互需求(如表单提交、数据查询)。

技术栈
  • 前端:HTML/CSS/JavaScript、React/Vue等框架。

  • 后端:Java/Python/PHP、Spring/Django/Node.js。

  • 协议:HTTP/HTTPS、WebSocket。

2. CS架构(Client/Server)

定义

用户需要安装独立的客户端软件,客户端承担部分业务逻辑,与服务器协同工作。

特点
  • 客户端:需安装特定程序(如桌面应用、手机APP)。

  • 服务器:负责核心数据和业务逻辑。

  • 通信:通常基于TCP/UDP或自定义协议,支持实时交互。

优点
  • 性能高:客户端可处理复杂计算(如图形渲染、本地缓存)。

  • 功能强大:支持本地硬件操作(如摄像头、打印机)。

  • 离线可用:部分功能可在无网络时使用(如本地数据库)。

缺点
  • 开发维护成本高:需适配多平台(Windows/macOS/iOS/Android)。

  • 更新复杂:需用户手动升级客户端版本。

  • 依赖用户设备:硬件兼容性可能存在问题。

适用场景
  • 高性能需求应用(如大型游戏、视频编辑软件)。

  • 本地硬件交互(如工业控制、医疗设备)。

  • 企业级内部系统(如ERP、财务软件)。

技术栈
  • 客户端:C++/C#(桌面)、Java/Kotlin(Android)、Swift(iOS)。

  • 服务器:Java/Python/C++、MySQL/Oracle等数据库。

  • 通信协议:TCP/UDP、gRPC、自定义二进制协议。


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

相关文章:

  • Spring Boot 集成 RabbitMQ 并实现消息确认机制
  • 3月营销日历:开启春日盛宴,绽放生活魅力
  • 浅谈网络 | 容器网络之Cilium
  • 设计模式之适配模式是什么?以及在Spring AOP中的拦截器链的使用源码解析。
  • C# 十六进制字符串转换为十进制
  • 解决 `pip is configured with locations that require TLS/SSL` 错误
  • 10-R数组
  • 如何调用 DeepSeek API:详细教程与示例
  • 人工智能 - AIGC 和AGI 有什么区别
  • 【十一】Golang 指针
  • Redis7——基础篇(六)
  • MAC-OS低版本升级到高版本——亲测有效
  • 后端开发:开启技术世界的新大门
  • 【CI/CD】持续集成及 Jenkins
  • AI前端开发:跨领域合作的新机遇与挑战
  • C++17 中的 std::to_chars 和 std::from_chars:高效且安全的字符串转换工具
  • scratch猜年龄互动小游戏 2024年12月scratch四级真题 中国电子学会 图形化编程 scratch四级真题和答案解析
  • 深入解析 iText 7:从 PDF 文档中提取文本和图像
  • 使用AWS Amplify AI Kit和Neon Postgres构建基于RAG的应用程序
  • 点击表格的最后一行的下拉框,会出现横向滚动条