type
status
date
slug
summary
tags
category
icon
password
参考课程:
【黑马程序员 JavaWeb开发教程】
@ZZHow(ZZHow1024)
Maven
- 官网:
- 简介:Maven 是 Apache 旗下的一个开源项目,是一款用于管理和构建 Java 项目的工具。
Apache Maven 是一个项目管理和构建工具,它基于项目对象模型(Project Object Model, POM)的概念,通过一小段描述信息来管理项目的构建。
Apache 软件基金会
成立于 1999 年 7 月,是目前世界上最大的最受欢迎的开源软件基金会,也是一个专门为支持开源项目而生的非盈利性组织。
开源项目:https://www.apache.org/index.html#projects-list
- 作用:
- 方便的依赖簑理
- 统一的项目结构
- 标准的项目构建流程
方便快捷的管理项目依赖的资源(jar 包),避免版本冲突问题。
提供标准、统一的项目结构。
标准跨平台(Linux、Windows 和 MacOS)的自动化项目构建方式。
清理 → 编译 → 测试 → 打包 → 发布
- Maven 项目的目录结构:
- 文件夹 main ——— 实际项目资源
- 文件夹 java ——— Java 源代码目录
- 文件夹 resources ——— 配置文件目录
- 文件夹 test ——— 测试项目资源
- 文件 pom.xml ——— 项目配置文件
- 仓库:用于存储资源,管理各种 jar 包。
- 本地仓库:自己计算机上的一个目录。
- 中央仓库:由 Maven 团队维护的全球唯一的。仓库地址:https://repo1.maven.org/maven2/
- 远程仓库(私服):一般由公司团队搭建的私有仓库。
- 安装
- 解压 zip 压缩包。
- 配置本地仓库:修改 conf/settings.xml 中的 <localRepository> 为一个指定目录。
- 配置阿里云私服:修改 conf/settings.xml 中的 <mirrors> 标签,为其添加如下子标签:
- 配置环境变量:MAVEN_HOME 为 maven 的解压目录,并将其 bin 目录加入 PATH 环境变量。
- 配置 Maven 环境(当前工程)
- 选择 IDEA中 File --> Settings --> Build,Execution,Deployment --> Build Tools -->Maven
- 设置IDEA 使用本地安装的 Maven,并修改配置文件及本地仓库路径
- 配置 Maven 环境(全局)
- Close Project 后再进行配置
- 使用 IDEA 创建 Maven 项目
- 创建模块,选择 Maven,点击 Next。
- 填写模块名称,坐标信息,点击 finish,创建完成。
- 编写 HelloWorld,并运行。
- Maven 坐标
- 什么是坐标
- Maven 中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置。
- 使用坐标来定义项目或引入项目中需要的依赖。
- Maven 坐标主要组成
- groupld:定义当前 Maven 项目隶属组织名称(通常是域名反写,例如:com.itheimg)。
- artifactld:定义当前 Maven 项目名称(通常是模块名称,例如 Order-service、goods-service)。
- version:定义当前项目版本号。
- IDEA 导入 Maven 项目
- 方式一:打开 IDEA,选择右侧 Maven 面板,点击 + 号,选中对应项目的 pom.xml 文件,双击即可。
- 方式二:打开 IDEA,选择 File - Project Structure - Modules,点击 + 号,选中对应项目的 pom.xml 文件,双击即可。
- 依赖管理
- 依赖配置
- 依赖:指当前项目运行所需要的jar包,一个项目中可以引入多个依赖。
- 配置:
- 在 pom.xml 中编写 <dependencies> 标签。
- 在 <dependencies> 标签中使用 <dependency> 引入坐标。
- 定义坐标的 groupld, artifactld, version。
- 点击刷新按钮,引入最新加入的坐标。
- 依赖查询网站:
- 依赖传递(依赖具有传递性)
- 直接依赖:在当前项目中通过依赖配置建立的依赖关系。
- 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源。
- 排除依赖
- 排除依赖指主动断开依赖的资源,被排除的资源无需指定版本。
- 依赖范围
- 依赖的 jar 包,默认情况下,可以在任何地方使用。可以通过
<scope>xxx</scope>
设置其作用范围。 - 作用范围:
- 主程序范围有效(main 文件夹范围内)。
- 测试程序范围有效(test 文件夹范围内)。
- 是否参与打包运行(package 指令范围内)。
scope 值 | 主程序 | 测试程序 | 打包(运行) | 示例 |
compile(默认) | ✓ | ✓ | ✓ | Log4j |
test | × | ✓ | × | JUnit |
provided | ✓ | ✓ | × | Servlet-API |
runtime | × | ✓ | ✓ | JDBC 驱动 |
- 生命周期
- Maven 的生命周期就是为了对所有的 Maven 项目构建过程进行抽象和统一。
- Maven 中有 3 套相互独立的生命周期:
- clean:清理工作。
- default:核心工作,如:编译、测试、打包、安装、部署等。
- site:生成报告、发布站点等。
- Java 程序员需要关注的 5 个 Maven 生命周期
- clean(清理):移除上一次构建生成的文件。
- compile(编译):编译项目源代码。
- test(测试):使用合适的单元测试框架运行测试(JUnit)。
- package(打包):将编译后的文件打包,如:jar、war等。
- install(安装):安装项目到本地仓库。
- 执行指定生命周期的两种方式:
- 在 IDEA 中,右侧的 Maven 工具栏,选中对应的生命周期,双击执行。
- 在命令行中,通过命令执行。
在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行。
SpringBootWeb入门
- 官网:
- Spring 发展到今天已经形成了一种开发生态圈,Spring 提供了若干个子项目,每个项目用于完成特定的功能。
- 步骤:
- 创建 SpringBoot 工程,并勾选 Web 开发相关依赖。
- 定义 HelloController 类,添加方法 hello,并添加注解。
- 运行启动类,打开浏览器测试。
HTTP协议
- 概念:
Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。
- 特点:
- 基于 TCP 协议:面向连接,安全。
- 基于请求-响应模型的:一次请求对应一次响应。
- HTTP 协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。
- 缺点:多次请求间不能共享数据。
- 优点:速度快。
- HTTP 请求协议
- 请求数据格式
- 请求行:请求数据第一行(请求方式、资源路径、协议)。
- 请求头:第二行开始,格式 key: value。
- 请求体:POST 请求特有的,存放请求参数
- 常见的请求头
GET 与 POST
请求方式 - GET:请求参数在请求行中,没有请求体,如:/brand/findAll?name=OPPO&status=1。 GET 请求大小是有限制的。
请求方式 - POST:请求参数在请求体中,POST 请求大小是没有限制的。
字段名 | 含义 |
Host | 请求的主机名 |
User-Agent | 浏览器版本,例如 Chrome 浏览器的标识类 Mozilla/5.0 … Chrome/79,IE 浏览器的标识类似Mozilla/5.0(Windows NT …) like Gecko |
Accept | 表示浏览器能接收的资源类型,如text/*,image/* 或 /* 表示所有 |
Accept-Language | 表示浏览器偏好的语言,服务器可以据此返回不同语言的网页 |
Accept-Encoding | 表示浏览器可以支持的压缩类型,例如 gzip,deflate 等 |
Content-Type | 请求主体的数据类型 |
Content-Length | 请求主体的大小(单位:字节) |
- HTTP 响应协议
- 响应数据格式
- 响应行:响应数据第一行(协议、状态码、描述)。
- 响应头:第二行开始,格式 key: value。
- 响应体:最后一部分,存放响应数据。
- 状态码大致分类
- 最常见的三个状态码
- 状态码大全:
- 常见的响应头
状态码 | 含义 |
1xx | 响应中 - 临时状态码,表示请求已经接收,告诉客户端应该继续请求或者如果它已经完成则忽略它 |
2xx | 成功 - 表示请求已经被成功接收,处理已完成 |
3xx | 重定向 - 重定向到其他地方;让客户端再发起一次请求以完成整个处理 |
4xx | 客户端错误 - 处理发生错误,责任在客户端。如:请求了不存在的资源、客户端未被授权、禁止访问等 |
5xx | 服务器错误 - 处理发生错误,责任在服务端。如:程序抛出异常等 |
状态码 | 含义 |
200 | 客户端请求成功 |
404 | 请求资源不存在,般是 URL 输入有误,或者网站资源被删除了 |
500 | 服务器发生不可预期的错误 |
字段名 | 含义 |
Content-Type | 表示该响应内容的类型,例如:text/html,application/json |
Content-Length | 表示该响应内容的长度(字节数) |
Content-Encoding | 表示该响应压缩算法,例如 gzip |
Cache-Control | 指示客户端应如何缓存,例如 max-age=300 表示可以最多缓存 300 秒 |
Set-Cookie | 告诉浏览器为当前页面所在的域设置 cookie |
- HTTP 协议解析
- 客户端:浏览器。
- 服务器端:Web 服务器软件(当前最受欢迎的是 Apache Tomcat)。
- Web 服务器
- 对 HTTP 协议操作进行封装,简化 Web 程序开发。
- 部署 Web 项目,对外提供网上信息浏览服务。
Tomcat
- 简介
- 概念:Tomcat 是 Apache 软件基金会一个核心项目,是一个开源免费的轻量级 Web 服务器,支持 Servlet / JSP 少量 JavaEE 规范。
- JavaEE:Java Enterprise Edition,Java 企业版。指 Java 企业级开发的技术规范总和。包含 13 项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF。
- Tomcat 也被称为 Web 容器、Servlet 容器。Servlet 程序需要依赖于 Tomcat 才能运行。
- 官网:
- 基本使用
- 下载:官网下载。
- 安装:绿色版,直接解压。
- 卸载:直接删除目录。
- 启动:
- Windows:双击 bin\startup.bat
- 控制台中文乱码:修改 conf\logging.properties
- macOS/Linux:sh startup.sh 或 ./startup.sh
- 关闭:
- Windows:
- 直接 x 掉运行窗口:强制关闭
- bin\shutdown.bat: 正常关闭
- Ctrl + C:正常关闭
- macOS/Linux:
- 直接 x 掉运行窗口:强制关闭
- sh shutdown.sh 或 ./shutdown.sh:正常关闭
- Ctrl + C:正常关闭
- 文件目录:
- 文件夹 bin → 可执行文件
- 文件夹 conf → 配置文件
- 文件夹 lib → Tomcat 依赖的 jar 包
- 文件夹 logs → 日志文件
- 文件夹 temp → 临时文件
- 文件夹 webapps → 应用发布目录
- 文件夹 work → 工作目录
- 常见问题:
- 启动窗口一闪而过:检查 JAVA_HOME 环境变量是否正确配置
- 端口号冲突:找到对应程序,将其关闭掉
- 配置 Tomcat 端口号(conf/server.xml)
- Tomcat 部署项目:
HTTP 协议默认端口号为 80,如果将 Tomcat 端口号改为 80,则将来访问 Tomcat 时,将不用输入端口号。
将项目放置到 webapps 目录下,即部署完成。
- 入门程序解析(内嵌 tomcat)
- 起步依赖
- spring-boot-starter-web
- spring-boot-starter-test
- 内嵌 Tomcat 服务器
- 基于 Springboot 开发的 Web 应用程序,内置了 tomcat 服务器,当启 动类运行时,会自动启动内嵌的 tomcat 服务器。