一JavaEE导读
在之前的学习中,我们主要是学习的Java基础,而JavaEE进阶部分,我们学习的是Java在企业中如何应用.
Java更多场景是业务开发,狭义点可以理解为web开发.所以在JavaEE进阶中,我们会学习如何用Java来做web开发
1.什么是web开发?
web(World Wild Web),即全球广域网,也称万维网.
简单来说,就是可以通过浏览器和程序进行交互,比如京东淘宝等网站.
目前来说,用户对PC端应用的开发结构模式主要分为C/S架构和B/S架构.
C/S即Client/Server(客户机/服务器)结构.常见的C/S架构的应用有QQ/微信,以及各种需要下载的网络游戏等等.一般来说,需要安装并且要与服务器建立网络通信的应用都属于C/S架构
B/S即Browser/Server(浏览器/服务器)结构,分为Web浏览器,服务器程序,数据库服务三部分.所有的业务逻辑部分都由服务器程序处理,客户端仅需要使用浏览器就可以完成所有操作,降低了客户端的维护成本.

在我们之后的学习中,主要学习的就是B/S架构的项目.
1.通过浏览器访问前端程序,前端程序返回前端代码.
2.前端程序调用后端程序,进行数据获取.
3.后端返回数据后,前端根据后端的数据进行页面渲染,显示页面.

后面学习的主要内容就是Maven,Spring家族框架:Spirng,SpringBoot,Spring MVC,Mybatis,Lunix
2.什么是框架?
简单点来说,框架的作用就是将原本重复化的代码,或者一些复杂的功能封装起来,我们只需要调用它的接口就可以实现一些之前需要花费很大力气才能实现的功能.
二.SpringBoot
1.Maven
Maven是一个项目管理工具.通过pom.xml文件的配置获取jar包,而不用手动去添加jar包
Maven的功能有很多,他可以帮助我们管理依赖,项目构建,统一项目结构......
这里就有人会有疑问了,什么是jar包?什么是依赖?
举个例子,比如我们需要解析JSON(一种数据格式,在之前的文章中有提及),正常情况来说,我们需要手动去写代码来解析JSON的内容
但是有了Maven之后,我们可以直接在pom.xml文件中,添加依赖,然后Maven就会自动下载这个依赖的jar包,之后我们就可以使用这个依赖已经写好的工具来帮我们解析JSON.
下面是在pom.xml文件中引入依赖的方法.

可能上面光靠文字,不能更好的理解Maven的方便,下面会有代码例子:
比如有一段JSON:
{"name":"张三","age":18}
变成Java对象:
java
class User {
public String name;
public int age;
}
自己手动写代码解析JSON:
java
String json = "{\"name\":\"张三\",\"age\":18}";
json = json.replace("{", "").replace("}", "");
String[] parts = json.split(",");
String name = "";
int age = 0;
for (String part : parts) {
String[] kv = part.split(":");
String key = kv[0].replace("\"", "");
String value = kv[1].replace("\"", "");
if (key.equals("name")) {
name = value;
} else if (key.equals("age")) {
age = Integer.parseInt(value);
}
}
User user = new User();
user.name = name;
user.age = age;
使用Maven:
1.写依赖(告诉Maven下载Jackson的jar包):
这串代码就是依赖,依赖可以认为是我们需要使用的jar包的声明
jar包就是具体的代码.jar包的内容是别人写好的,我们只需要通过接口调用别人写好的功能就可以了.
groupId -> 相当于组织名/公司名,用来说明这个库是谁家的
artifactId -> 就是你要用的这个组织/公司的哪个产品的名称
version -> 这个产品的版本号
java
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.0</version>
</dependency>
我们只需要写完依赖,然后刷新Maven,Maven就会从远程仓库里面帮我们自动下载jar包.
2.写代码:
有了Jackson之后,我们就可以使用Jackson里面的接口来解析JSON数据了.
java
import com.fasterxml.jackson.databind.ObjectMapper;
String json = "{\"name\":\"张三\",\"age\":18}";
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(json, User.class);
(1).创建Maven项目:
使用IDEA,File -> New -> Project

创建完成之后,我们就可以看到在左侧中有一个pom.xml文件,这个里面就是Maven存放依赖的地方.
(2).Maven的核心功能
项目构建:
当我们开发完成一个项目之后,代码需要经过编译,测试,打包,发布等流程,每次代码的调试修改,都需要经过这些流程,Maven给我们提供了一套简单的命令来完成项目构建.


依赖管理:
上面提到,Maven是一个项目管理工具,通过pom.xml文件的配置获取jar包,不用手动添加jar包.
pom.xml就是Maven的配置文件,用来描述项目的各种信息.
(1).依赖传递:
比如我们使用依赖A,而依赖A需要用到依赖B和依赖C,这时候,我们只需要导入依赖A,Maven会自动帮我们导入依赖B和依赖C.
(2).依赖排除:
当我们的项目越来越复杂,库之间的依赖关系也会变得越来越复杂.

如果项目A用不到jarB,这时候,可以通过排除依赖(主动断开依赖的资源)的方式来实现.
Maven还有一些功能是依赖调节.可选依赖等等.
(3).依赖调节:
当项目中存在依赖冲突的时候:
A -> B -> C -> Jar(1.0)
A -> D -> Jar(2.0)
这时候,Maven会采用最短路径优先的原则去选择依赖,jar(2.0)的路径更短,会选择jar2.0,当然我们也可以指定依赖的版本.
(3).Maven Help插件
当出现jar包冲突的时候,我们去观察pom.xml文件可能会不方便找到哪个jar包冲突,这时候可以使用Maven Help插件.
在Plugings搜索这个插件,下载即可.

下载之后,我们可以在pom.xml文件下面找到
点进去,就可以看到依赖之间的关系

此时如果我们不需要某个依赖,可以右键排除
(4).Maven仓库
通过短短几行代码,就可以把依赖jar包放在项目里面,这是如何做到的?
观察一个依赖,我们可以通过groupId,artifactId,version定位到唯一的jar包.

这串代码,也称为坐标.当我们在pom.xml文件中配置完依赖之后,Maven会根据坐标的位置,去仓库找jar包.并把它下载下来,添加到项目当中,下载jar包的位置就成为仓库.
Maven仓库分为两大类,本地仓库和远程仓库(中央仓库).
本地仓库:自己计算机上的一个目录,Maven会首先查找本地仓库中是否有对应的jar包,如果有直接在本地仓库下载,没有的话就在远程仓库下载.
通通过这个页面,我们可以配置本地仓库地址

中央仓库:Maven软件中内置的一个远程仓库地址,就是中央仓库,服务于整个互联网,由Maven团队维护,全球唯一.
仓库地址:https://repo1.maven.org/maven2/
仓库查询网站:https://mvnrepository.com/
就好比上面那个lombok依赖,我们就可以去网站找到.
搜索lombok
点进去,我们根据版本号就可以找到唯一的我们需要的依赖

继续点击需要的版本,就可以找到依赖代码,直接复制进pom文件即可

由于中央仓库在国外,所以下载会比较慢,这时候我们可以设置国内源.
Maven镜像地址:https://zhuanlan.zhihu.com/p/627320558
我们只需要在pom文件中,在mirrors节点上添加下面内容即可:

2.第一个SpringBoot程序
(1).了解Spring
在学习SpringBoot之前,我们可以先了解一下Spring(Spring | Home).
从Spring官网,我们可以看到Spring让java程序更加快速,安全,简单.

SpringBoot的诞生是为了简化Spring程序开发的.
Spring的项目包含很多,这些项目都是基于Spring Framework开发的.但是Spring Framework存在配置多,入门难的问题,为了简化开发者使用,Spring推出了SpringBoot.

(2).创建SpringBoot项目:
如果是使用社区版IDEA需要使用SpringBootHelp插件来帮助我们创建SpringBoot项目,使用专业版则自带这个功能.
我们可以使用edu邮箱去申请一年的免费IDEA专业版.具体操作可以去IDEA官网看看

选择Maven,选择YAML,剩下的可以不需要改,然后Next.下面这个界面就是选择需要的一些依赖了,选好之后IDEA会自动在创建的pom.xml中添加这些依赖.
这里我们勾选这个


然后点击Creat,我们就创建完成了一个SpringBoot项目.
观察pom文件,不需要全部去看,看<dependencies>标签里面的内容.
在pom文件中引入了两个依赖:
spring-boot-starter-web:包含了web应用开发所需要的常见依赖
spring-boot-starter-test:包含了单元测试所需要的常见依赖
但是我们在之前提到了,导入依赖需要版本号,但是在这里,这两个依赖并没有指定版本号,为什么也可以正常运行呢?
这是因为每一个SpringBoot工程都有一个父工程,依赖的版本号,在父工程中统一管理.
父工程指定版本号之后,就会自动引入和所指定版本号对应的依赖,创建的SpringBoot项目,会继承SpringBoot父工程

目录介绍:

(2)输出helloworld
在这个目录下创建一个hello文件,

代码如下,启动程序,打开浏览器,输入http://127.0.0.1:8080/world
java
@RestController
public class hello {
@RequestMapping("/world")
public String hello() {
return "hello world";
}
效果如下:

至于如何实现的,主要是通过这两个注解,在后面我们会带大家了解.
三.web服务器
在之前我们已经学习过HTTP协议,知道了HTTP协议就是HTTP客户端和HTTP服务器之间数据交互的格式.
Web服务器就是对HTTP协议进行封装,程序员不需要直接对协议进行操作(自己写代码去解析http协议规则),让web开发更加便捷.web服务器主要功能就是提供网上信息浏览服务.
常见的web服务器有:Apache,Nginx,IIS,Tomcat,Jboss等等
SpringBoot内置了Tomcat服务器,无需配置即可运行.
Tomcat内置端口号是8080,所以我们程序访问时候的端口号也是8080

1.请求响应分析流程
浏览器输入URL之后,发起请求,就和服务器建立了连接.

浏览器:
服务器:
收到浏览器发送的请求,在服务器上找到对应的资源路径的资源,把资源发送给浏览器
2.访问出错
(1)404代表访问资源不存在
大概率是URL错了,这里我们把hello改为hello1,就会出现404错误
或者注释写错也会出现,RequestMapping注解表示的就是资源路径映射,如果我们把这个改为/hello1,那么我们/hello这个路径就访问不到了


(2)500表示服务器内部出现问题
我们在代码中加入10/0这个错误的代码,就会出现500状态码


程序后端控制台也告诉我们错误:除数为0
(3)无法访问此网站
我们把后台程序停止运行,就会出现这种情况

这种情况一般是Tomcat未启动,或者端口号/IP写错
四.总结:
我们最开始学习Spring的时候,会遇到很多问题,更多的是和环境相关的问题.
Spring Boot 提供了启动添加依赖的功能,可以快速集成框架.
内置 web 服务器,无需配置 Tomcat 等 Web 服务器,直接运行和部署程序.
可以完全抛弃繁琐的 XML, 使用注解和配置的方式进行开发.
支持更多的监控的指标,可以更好的了解项目的运行情况等特点.
学习SpringBoot,需要学习各种注解的使用,后面会为大家讲解注解有关的用法,以及Spring项目从0到1的实践.