P50 maven
Maven是一款用于管理和构建java项目的工具。
Maven:
依赖管理:项目依赖资源jar包
统一项目结构
项目构建
基于Maven创建的项目目录结构:
src
main 实际项目资源
java java源代码目录
resources 配置文件目录
test 测试项目资源
java
resources
pom.xml 项目配置文件
P51 Maven-概述-介绍、安装
基于项目对象模型POM的概念,通过一小段描述信息来管理项目的构建(pom.xml)。
作用:
方便的依赖管理
统一的项目结构
标准的项目构建流程
仓库:用于存储资源,管理各种jar包
本地仓库:自己计算机上的一个目录
中央仓库,由maven团队维护的全球唯一的
远程仓库(私服):一般由公司团队搭建的私有仓库
添加依赖后,找到依赖的顺序:
本地仓库→←中央仓库
本地仓库→←私服→←中央仓库
安装:
解压
配置本地仓库,我的本地仓库D:\Lenovo\application\apache-maven-3.8.7\mvn_resp
配置阿里云私服
配置环境变量,将其bin目录加入到PATH换进变量
命令行中执行指令:mvn -v
查看maven版本号
P52 Idea中集成maven及使用
如果创建空项目需要自己配置一些环境:
上述步骤简化:配置maven环境,全局
创建maven项目:
在上述空白项目中,点击新建新模块,选择常规模块,创建maven
项目中target文件夹就是编译后产生的字节码文件。
Maven坐标:
坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置
使用坐标定义项目或引入项目中需要的依赖
Maven坐标主要组成:
groupId:定义当前Maven项目隶属组织,域名反写
artifactId:定义 当前Maven项目名,通常是模块名
version:当前项目版本号
导入Maven项目:
方式一,在maven面板中选择导入,选择对应项目中的pom.xml即可
方式二,在项目结构中导入
删除模块选择Remove Module,磁盘中也要删除
P54 maven-依赖管理-依赖配置
P54 依赖配置
配置项目需要的多个依赖:
<dependencies>
<dependency>
<groupId></groupId>
<artifactId></artifactId>
</dependency>
</dependencies>
第一次使用,编写坐标信息没有提示怎么办?
可在仓库中进行搜索模块,参考usage使用频次,越高则较好,点击不同版本,进入可复制依赖。
P55 依赖传递
依赖具有传递性
直接依赖:在当前项目中通过依赖配置建立的依赖关系
间接依赖:被依赖的资源如果依赖其他资源,当前项目中间接依赖其他资源
例如:A项目依赖B项目,则
<dependency>
<groupId>com.itheima</groupId>
<artifactId>maven-projectB</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
查看依赖情况,只需要打开pom文件,右键选择diagrams展示依赖。
如果依赖传递中想要排除依赖,则指主动断开依赖的资源,被排除的资源无需指定版本
例如:
<exclusions>
<exclusion>
<groupId></groupId>
<artifactId></artifactId>
</exclusion>
</exclusions>
P56 依赖范围
依赖的jar包,默认情况下可以在任何地方使用,
可通过<scope> </scope>
设置作用范围
作用范围:
主程序范围有效
测试程序范围 有效
是否参与打包运行
例如junit在单元测试时可以使用test的范围
P57 生命周期
Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一
Maven中有3套相互独立的生命周期:
clean:清理工作
default:核心工作,例如编译、测试、打包、安装、部署等
site:生成报告、发布站点等
每套生命周期包含一些阶段,阶段是有顺序的,后面的阶段依赖于前面的阶段
常用介绍:
clean:移除上一次构建生成的文件
compile:编译项目源代码
test:选择合适单元测试框架运行测试,junit
package:将编译后的文件打包,例如jar,war
install:安装项目到本地仓库
执行指定生命周期的两种方式:
maven面板中lifecycle有常见的生命周期阶段,双击即可
在命令行中命令执行
在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行。
P58 Web入门-课程介绍
spring cloud构建微服务相关。
spring提供了若干个子项目,每个项目用于完成特定的功能。
spring framework较为基础的底层框架。
spring boot可帮助我们非常快速构建应用程序、简化开发、提高效率。
P59 Web入门-SpringbootWeb-快速入门
案例:
创建工程,添加web开发相关依赖
定义一个HelloController类,添加方法hello,并添加注解。
运行测试
P60 Web入门-HTTP协议-概述
HTTP:hyper text transfer protocol超文本传输协议,规定了浏览器和服务器之间数据传输的规则
HTTP特点:
基于TCP协议,面向连接、安全
基于请求-响应模型的,一次请求对应一次响应
是无状态的协议,对事务处理没有记忆能力,每次请求-响应都是独立的
缺点:多次请求间不能共享数据
优点:速度快
P61 Web入门-请求协议
请求数据格式分三个部分:
请求行,即请求数据格式的第一行,分三部分,
请求方式
资源路径
协议
请求头:格式为
key:value
常见请求头代表的含义
Host:请求的主机名
User-Agent:浏览器的版本,告诉服务器浏览器的版本常用于兼容处理
Accept:浏览器能接收的资源类型
Accept-Language:浏览器的偏好语言
Accept-Encoding:浏览器可支持的压缩类型
Content-Type:请求主体的数据类型
Content-Length:请求主体的大小
请求体:Post请求特有的,用于存放请求参数
回顾get请求和post请求,
get的请求参数在请求行中,请求大小有限制
post请求参数在请求体中,请求大小没有限制
P62 Web入门-响应协议
与请求协议类似
分为三部分:
响应行:协议、状态码、描述
响应头:
key:value
响应体,响应正文
请求响应状态码及常见响应头如下图所示:
常见的响应状态码:
状态码 | 英文描述 | 解释 |
---|---|---|
200 | OK |
客户端请求成功,即处理成功,这是我们最想看到的状态码 |
302 | Found |
指示所请求的资源已移动到由Location 响应头给定的 URL,浏览器会自动重新访问到这个页面 |
304 | Not Modified |
告诉客户端,你请求的资源至上次取得后,服务端并未更改,你直接用你本地缓存吧。隐式重定向 |
400 | Bad Request |
客户端请求有语法错误,不能被服务器所理解 |
403 | Forbidden |
服务器收到请求,但是拒绝提供服务,比如:没有权限访问相关资源 |
404 | Not Found |
请求资源不存在,一般是URL输入有误,或者网站资源被删除了 |
405 | Method Not Allowed |
请求方式有误,比如应该用GET请求方式的资源,用了POST |
428 | Precondition Required |
服务器要求有条件的请求,告诉客户端要想访问该资源,必须携带特定的请求头 |
429 | Too Many Requests |
指示用户在给定时间内发送了太多请求(“限速”),配合 Retry-After(多长时间后可以请求)响应头一起使用 |
431 | Request Header Fields Too Large |
请求头太大,服务器不愿意处理请求,因为它的头部字段太大。请求可以在减少请求头域的大小后重新提交。 |
500 | Internal Server Error |
服务器发生不可预期的错误。服务器出异常了,赶紧看日志去吧 |
503 | Service Unavailable |
服务器尚未准备好处理请求,服务器刚刚启动,还未初始化好 |
状态码大全:https://cloud.tencent.com/developer/chapter/13553
P64 Web入门-协议解析
浏览器内置有解析协议的,
关注在服务端利用java接收浏览器的请求协议,解析,按照响应格式返回
手写一个服务端程序进行处理非常繁琐,代码量很多,很多都封装起来形成web服务器,例如:
jeetty
WebLogic
WebSphere
Apache Tomcat
P64 Web入门-Tomcat介绍
web服务器,是一个软件程序,对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让web开发更加便捷。
了解java的三大分支:
JavaSE:java标准版
JavaME:java小型版
JavaEE:java企业版
javaEE,指java企业级开发的技术规范总和,包含13项技术规范,JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF
Tomcat轻量级(支持少量的JavaEE规范)Web服务器,又称为Web容器、Servlet容器\
Servlet程序需要依赖Tomcat才能运行(支持Servlet的Web服务器)
P65 Web入门-Tomcat基本使用
安装tomcat,到官网依据java version,下载对应版本的tomcat,我下载的是10版本的。
zip包解压过后,得到如下目录:
bin,可执行文件
conf,配置文件
lib,依赖的jar包
logs,日志文件
temp,临时文件
webapps,应用发布目录
work工作目录
启动Tomcat:访问目录bin\startup.bat
,
如果出现中文乱码,则修改配置文件conf/logging.properties
,将utf-8改为GBK
解决问题
关闭:
直接关掉窗口
或者访问
bin\shutdown.bat
正常关闭ctrl+C
修改Tomcat的端口号:在conf/server.xml中修改port
注意:HTTP协议默认端口是80,则localhost和localhost:80是一样的。
怎么往Tomcat部署应用程序:
将项目放置到webapps目录下即可
P66 Web入门-Tomcat入门程序
starter起步依赖
起步依赖,把开发某一个功能的依赖聚合在一起,
例如
spring-boot-starter-web,web开发常见的依赖
spring-boot-starter-test,单元测试所需的依赖
创建springboot工程,则会引入与父工程版本号对应的起步依赖,所以可以解释起步依赖没有版本号
可以看到spring-web中的依赖传递中有tomcat,所以运行项目就可启动tomcat,不用自己单独启动了。