ARTICLE DETAIL

资讯详情

深耕网站SEO优化与搜索引擎排名提升的一线实战洞察。

web前端基础到入门——09day

web前端基础到入门——09day 摘要本文是一篇面向初学者的 SpringBoot 入门实战指南。文章首先解释了 SpringBoot 作为 Spring 生态“加速器”的定位通过“约定优于配置”和“起步依赖”两大核心能力解决了传统 Spring 项目配置繁琐的问题。随后通过一个“浏览器访问 /hello 返回 Hello World”的明确目标手把手演示了使用 IDEA 创建 SpringBoot 项目、编写 Controller 和启动应用的完整三步流程。最后文章深入浅出地剖析了 Web 请求背后的网络三要素IP、端口、路径和 HTTP 协议的基本格式请求/响应行、头、体帮助读者在动手实践的同时理解其底层原理为后续学习打下坚实基础。为什么是 SpringBoot先讲个背景故事做 Java 开发迟早要跟 Spring 打交道。它是什么官网写得很直白Spring makes Java simple。翻译过来就是Java 本身太啰嗦了Spring 帮你省事。比如你想让 A 类调用 B 类的方法原生 Java 得自己 new 对象、管生命周期Spring 说“你别管了我帮你注入”。你想操作数据库原生 JDBC 几十行样板代码Spring 封装成两三行就搞定。Spring 把这些能力分散在它的子项目里——处理 Web 的有 Spring MVC管数据的有 Spring Data做微服务的有 Spring Cloud。统统打包称作Spring 全家桶。但这就带来了一个新问题。全家桶的核心叫 Spring Framework它是整个生态的底座。问题在于光用它来搭一个能跑的 Web 项目你就得写一堆 XML 配置、导入一堆依赖、搞清楚组件扫描和自动装配……还没开始写业务代码一天已经过去了。于是就有了SpringBoot。它的设计初衷就是——让跑起来这件事快到你来不及走神。两个核心能力约定优于配置。你不写配置它就用默认的。你想改再加。起步依赖。一个spring-boot-starter-web自动拽进来 Web 开发需要的所有 jar 包版本都不用你操心。一句话SpringBoot 不是替代 Spring而是让你更快用上 Spring。跑起来第一个 SpringBoot Web 应用你需要做什么目标很明确浏览器访问/hello页面显示Hello World ~。这在 SpringBoot 里只需要三步。第一步搭骨架IDEA 里新建 Module这次不选 Maven选Spring Initializr。它会从 Spring 官方拉一个项目模板下来。填几个基本信息——项目名、Group一般是域名反写比如com.itheima、Java 版本选 11 就行。然后在依赖选择页勾上Spring Web这是关键。点击 Finish 后 IDEA 会联网下载依赖。网速慢的话得等一会儿但这时间你什么都不用管。建好之后你拿到的是一个标准结构springboot-web-demo ├── src/main/java/com/itheima │ └── SpringbootWebDemoApplication.java ← 入口自带 main ├── src/main/resources │ ├── static/ ← 放静态文件html、css、图片 │ └── application.properties ← 配置项全在这 ├── src/test/java ← 测试代码 └── pom.xml ← 只引入了一个 starter-web留意一下pom.xml里只有spring-boot-starter-web这一个依赖没有 Tomcat、没有 Jackson、没有日志框架——但启动之后它们全都会在。这就是起步依赖的魔法后面细说。第二步写一个“接客”的方法在com.itheima下新建一个包叫controller然后创建HelloControllerpackage com.itheima.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; RestController public class HelloController { RequestMapping(/hello) public String hello() { System.out.println(Hello World ~); return Hello World ~; } }就十几行代码两个注解解释一下RestController告诉 SpringBoot“这个类是用来处理 HTTP 请求的返回值直接写回浏览器不跳页面”。RequestMapping(/hello)把路径/hello绑到这个方法上。有人访问这个路径方法就执行。System.out.println那行没什么实际作用只是让你在控制台看到“有人来过”。第三步启动找到项目里带 main 方法的那个类名字通常是xxxApplication右键Run。控制台开始刷日志。看到类似Tomcat started on port(s): 8080这句话应用就跑起来了。打开浏览器输入http://localhost:8080/hello页面上出现Hello World ~。同时 IDEA 控制台也打印了一行同样的文字。就三步建项目 → 写类 → 启动。没有一行 XML没配 Tomcat没改任何设置——一个 Web 应用已经在跑了。停下来想一下刚才到底发生了什么http://localhost:8080/hello这个地址拆开来看就是 Web 通信的三要素要素这个例子里的值解决什么问题IPlocalhost就是 127.0.0.1找到网络里的哪台机器端口8080找到那台机器上的哪个程序资源路径/hello向那个程序要什么东西你之前在 JavaSE 学过网络编程的三要素——IP、端口、协议这里刚好全用上了。浏览器根据 IP 找到你的电脑本机根据 8080 端口找到正在运行的 SpringBoot 应用然后说“我要访问/hello这个资源”。SpringBoot 内部扫描到你的RequestMapping(/hello)找到对应的hello()方法执行它把返回值Hello World ~塞进 HTTP 响应里发给浏览器。那浏览器和服务器之间传数据的格式是什么这就是HTTP 协议要讲的事。 HTTP 协议浏览器和服务器的对话规则一次请求长什么样打开浏览器按 F12切到 Network网络标签页然后刷新页面。你会看到一系列请求。点开任意一个就能看到它内部的结构。HTTP 规定一次请求和一次响应必须按固定格式来。你不需要记住每一条但你需要知道格式分三块——请求行 / 请求头 / 请求体。请求浏览器发给服务器一个典型的 GET 请求长这样GET /brand/findAll?nameOPPOstatus1 HTTP/1.1 ← 请求行 Host: www.example.com ← 请求头 User-Agent: Mozilla/5.0 (Windows NT 10.0) Chrome/... Accept: text/html, application/json ← 空行没有请求体请求行包含三样东西——用什么方式请求GET、要哪个资源/brand/findAll?nameOPPOstatus1、用的什么版本的协议HTTP/1.1。注意到资源路径里?后面的部分没有那是参数。nameOPPOstatus1——多个参数用拼接keyvalue的格式。这就是GET 传参的方式参数跟在 URL 后面能被人直接看到。请求头是一堆Key: Value主要作用是告诉服务器“我是谁、我能接收什么格式的数据、我希望怎么回复”。比如User-Agent里写的就是你用的浏览器和操作系统服务器看到这个就能做兼容处理——IE 浏览器兼容问题就是这么解决的。POST 的差别同样的请求如果用 POSTPOST /brand HTTP/1.1 ← 请求行没有 ? 参数了 Host: www.example.com Content-Type: application/json ← 告诉服务器请求体是 JSON Content-Length: 85 ← 请求体长度 ← 空行请求头结束的标记 {name:OPPO,status:1} ← 请求体参数在这里区别一目了然GET 把参数挂在 URL 后面POST 把参数藏在请求体里。这也解释了为什么 GET 的 URL 有长度限制浏览器对地址栏长度有限制、安全性较低参数暴露在地址栏而 POST 没有长度限制、相对安全一点——但不是绝对安全因为 POST 的请求体同样可以被抓包工具看到。响应服务器返回给浏览器服务器收到请求处理完按同样的三段式格式回复HTTP/1.1 200 OK ← 响应行 Content-Type: text/html; charsetutf-8 ← 响应头 Content-Length: 582 ← 空行 !DOCTYPE html ← 响应体浏览器真正渲染的内容 html.../html响应行最重要的是中间那个数字200——状态码。它用一个数字告诉你这次请求的结果。日常开发中你只需要对三个状态码有直觉反应状态码看到它你该想到什么200一切正常。请求成功数据拿到了。404你访问的路径不存在。检查 URL 拼写或者看后端有没有写这个接口。500服务器崩了。代码抛了异常去查日志。其他状态码以后再认1xx 是“等一下还没处理完”3xx 是“你要的东西搬到别处了”4xx 系列里还有 401未授权、403禁止访问5xx 系列里还有 502/503网关/服务问题。响应头里同样是一堆Key: Value——Content-Type告诉浏览器返回的是什么类型HTML、JSON、图片等Content-Length告诉浏览器数据有多大。响应体就是浏览器真正要渲染或处理的内容比如 HTML、JSON 数据、图片二进制流。总结今天你完成了从零到一的 SpringBoot Web 应用搭建理解了 SpringBoot 的定位——不是替代 Spring而是让你更快用上 Spring。体验了 SpringBoot 的“快”——三步建项目、写 Controller、启动就让浏览器里出现了Hello World。拆解了 Web 通信的三要素——IP、端口、资源路径对应到你的localhost:8080/hello。认识了 HTTP 协议的基本格式——请求行/头/体响应行/头/体以及 GET 和 POST 传参的区别。下一节我们会让这个Hello World变得更“有用”——接收参数、返回 JSON、连接数据库。但今天先享受这行字出现在你自己服务器上的成就感吧。
返回列表