当前位置: 首页 > 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.lryc.cn/news/619503.html

相关文章:

  • 技术速递|使用 AI Toolkit 构建基于 gpt-oss-20b 的应用程序
  • Node.js面试题及详细答案120题(16-30) -- 核心模块篇
  • Docker部署 Neo4j 及集成 APOC 插件:安装与配置完整指南(docker-compose)
  • 数据挖掘常用公开数据集
  • spring gateway配合nacos实现负载均衡
  • 【HTML】在页面中画一条0.5px的线
  • 【Part 4 未来趋势与技术展望】第一节|技术上的抉择:三维实时渲染与VR全景视频的共生
  • SQL语句优化
  • JsonReader:Spring AI 的 JSON 搬运大师
  • html img标签设置默认图片,防止图片路径不存在导致图片不展示影响页面美观
  • 2022 年全国硕士研究生招生考试真题笔记
  • Nestjs框架: 由权限模型设计到 Prisma 数据库迁移的演示
  • ZED 2i相机调试
  • 【SpringBoot】12 核心功能-配置文件详解:Properties与YAML配置文件
  • 肖臻《区块链技术与应用》第十一讲:比特币核心概念重温:一文读懂私钥、交易、挖矿与网络现状
  • 模型驱动的自动驾驶AI系统全生命周期安全保障
  • Easysearch 数据迁移之 INFINI Gateway
  • elasticsearch mapping和template解析(自动分词)!
  • LeetCode 刷题【40. 组合总和 II】
  • Linux系统编程Day13 -- 程序地址空间(进阶)
  • 边缘节点 DDoS 防护:CDN 节点的流量清洗与就近拦截方案
  • IPA1299至为芯替代TI ADS1299的脑机接口芯片
  • 机器翻译:学习率调度详解
  • 云蝠智能 VoiceAgent 在不良资产处理中的技术应用与实践
  • 2020/12 JLPT听力原文 问题一 5番
  • 磁悬浮轴承转子动平衡:零接触旋转下的“隐形杀手”深度解析与精准猎杀指南
  • Video_AVI_Packet(1)
  • 部署 Docker 应用详解(MySQL + Tomcat + Nginx + Redis)
  • 1688商品数据抓取:Python爬虫+动态页面解析
  • Visual Studio Code 跨平台快捷键指南:Windows 与 macOS 全面对比