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

【Java web】HTTP 与 Web 基础教程

一、HTTP 协议入门(像写信一样的网络通信)

生活比喻:HTTP 协议就像寄信的规则 —— 你(客户端)写封信(请求)给朋友(服务器),信封上要写地址(URL)和寄信方式(请求方法),朋友收到后会回信(响应)并盖邮戳(状态码)。

1. 请求 - 响应模型(三次握手简化版)

  1. 客户端发送请求:包含三部分

    • 请求行GET /hello HTTP/1.1(方法 路径 协议版本)
    • 请求头Host: localhost:8080(服务器地址)、User-Agent: Chrome/114.0(浏览器信息)
    • 请求体:表单数据、JSON 等(GET 请求无请求体,像明信片;POST 请求有请求体,像信封)
  2. 服务器返回响应:也包含三部分

    • 状态行HTTP/1.1 200 OK(协议版本 状态码 描述)
    • 响应头Content-Type: text/html(内容类型)、Date: 2023-08-12(响应时间)
    • 响应体:HTML 代码、JSON 数据等(网页内容)

2. 必学状态码(服务器的 "表情符号")

状态码含义(类比生活场景)常见场景
200😊 成功(信已收到并回复)正常访问网页
404🚫 未找到(地址写错了)访问不存在的 URL
500🔥 服务器错误(朋友家着火了)Java 代码抛异常未处理
302🔄 重定向(请去新地址取信)登录后跳转到首页
403🚷 禁止访问(对方拒绝收信)未登录访问需要权限的页面

3. 常用请求方法(客户端的 "动作指令")

  • GET:索取数据(查快递单号)
    ✅ 例子:http://localhost:8080/students?id=1(查询 ID=1 的学生)
    ⚠️ 特点:参数在 URL 中可见,有长度限制(像明信片写字不能太多)

  • POST:提交数据(寄包裹)
    ✅ 例子:表单提交用户注册信息
    ⚠️ 特点:参数在请求体中,安全且支持大量数据(像快递箱能装更多东西)

二、动手实践:用浏览器抓包看 HTTP

  1. 打开开发者工具
    在 Chrome 浏览器中按F12或右键 "检查",切换到Network(网络)面板,勾选Preserve log(保留日志)。

  2. 观察 HelloServlet 请求
    访问之前创建的http://localhost:8080/项目名/hello,在 Network 面板找到名为hello的请求:

    • 查看请求头:点击请求→HeadersRequest Headers
      找到Accept: text/html(告诉服务器想要 HTML 格式)
    • 查看响应体:点击Response标签,能看到我们 Servlet 输出的<h1>Hello, JavaWeb!</h1>
  3. 修改 Servlet 体验 POST 请求
    HelloServlet中添加 POST 处理方法:

    java

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 获取表单参数(假设前端提交了username)String username = request.getParameter("username");response.setContentType("text/html;charset=UTF-8");response.getWriter().println("<h1>Hello, " + username + "!</h1>");
    }
    

    创建简单 HTML 表单(保存为web/form.html):

    html

    <form action="/项目名/hello" method="post">用户名: <input type="text" name="username"><button type="submit">提交</button>
    </form>
    

    访问http://localhost:8080/项目名/form.html提交表单,在 Network 面板观察 POST 请求的参数如何传递。

三、Web 应用架构扫盲(三层蛋糕模型)

  1. 表现层(蛋糕顶层 - 用户看到的奶油)

    • HTML/CSS/JavaScript:负责页面展示和用户交互
    • JSP:动态生成 HTML 的技术(后续课程详解)
  2. 业务逻辑层(蛋糕中层 - 巧克力夹心)

    • Servlet:处理用户请求,实现业务逻辑
    • Service:封装复杂业务规则(如学生成绩计算)
  3. 数据访问层(蛋糕底层 - 饼干底)

    • JDBC:连接数据库,执行 CRUD 操作
    • 数据库:存储数据(如学生信息表)

类比餐厅:用户(顾客)→ 服务员(表现层)→ 厨师(业务逻辑层)→ 仓库(数据访问层)

http://www.xdnf.cn/news/1292599.html

相关文章:

  • 最新去水印小程序系统 前端+后端全套源码 多套模版 免授权
  • 弹性扩展新范式:分布式LLM计算的FastMCP解决方案
  • 可视化调试LangChain SQLChatMessageHistory:SQLite数据库查看全攻略
  • 6 ABP 框架中的事件总线与分布式事件
  • 服务器安全检测与防御技术总结
  • 比特币与区块链:去中心化的技术革命
  • Java毕业设计选题推荐 |基于SpringBoot的水产养殖管理系统 智能水产养殖监测系统 水产养殖小程序
  • TensorFlow实现回归分析详解
  • 把 Linux 装进“小盒子”——边缘计算场景下的 Linux 裁剪、启动与远程运维全景指南
  • 各种排序算法(二)
  • 升级Gradle版本后,安卓点击事件使用了SwitchCase的情况下,报错无法使用的解决方案
  • PCBA:电子产品制造的核心环节
  • MCP协议更新:从HTTP+SSE到Streamable HTTP,大模型通信的进化之路
  • 记某一次仿真渗透测试
  • 开发Excel Add-in的心得笔记
  • [系统架构]系统架构基础知识(一)
  • 基于elk实现分布式日志
  • 2025 开源语音合成模型全景解析:从工业级性能到创新架构的技术图谱
  • 我们计划编写一个闲鱼监控脚本,主要功能是监控特定关键词的商品,并在发现新商品时通过钉钉机器人推送通知。
  • LCP 17. 速算机器人
  • 从开发工程师视角看TTS语音合成芯片
  • 基于数据驱动来写提示词(一)
  • 机器学习项目从零到一:加州房价预测模型(PART 3)
  • 【论文笔记】DOC: Improving Long Story Coherence With Detailed Outline Control
  • Excel多级数据结构导入导出工具
  • 2025 环法战车科技对决!维乐 Angel Glide定义舒适新标
  • [AI React Web] E2B沙箱 | WebGPU | 组件树 | 智能重构 | 架构异味检测
  • 面试实战 问题二十九 Java 值传递与引用传递的区别详解
  • 汽车免拆诊断案例 | 2017 款丰田皇冠车行驶中加速时车身偶尔抖动
  • 【国内电子数据取证厂商龙信科技】RAID存储技术