黑马程序员2023新版JavaWeb开发教程(P1
Java主要是做这些项目的服务端业务接口的开发!
这也就是Java企业级的应用方式。
10几年前的学习路线: 现在的学习路线: 什么是Web?
Web:全球广域网,也称为万维网(www World Wide Web),能够通过浏览器访问的网站。 0.1 工作流程现在还没有数据呢!只是一个空架子!
我要怎么获取我的数据呢?开前端代码请求!! 数据库中的数据就返回给我们的浏览器啦~~
0.2 Web网站的开发模式以前:前端后端混合在一起开发(混合开发)
所以!!!!!
0.3 开发课程安排 1. Web前端开发提示:不同的浏览器,内核不同,对于相同的前端代码解析的效果会存在差异。
1.2 HTML、CSS 1.2.1 HTML小入门HTML——学标签
CSS——学样式
HTML标签是不分大小写的单引号与双引号html语法松散 1.2.1 VsCode DOCTYPE html> Document 你好 1.2.2 HTML教程 图片标签: src:指定图像的url (绝对路径/相对路径)width:图像的宽度(像素/相对于父元素的百分比)height:图像的高度(像素/相对于父元素的百分比)标题标签: -
水平线标签:
由于前端主要是了解,大家可以取找一些大佬的CSDN笔记 看一看 YYDS!!
1.2.3 CSS教程由于前端主要是了解,大家可以取找一些大佬的CSDN笔记 看一看 YYDS!!
1.2.4 JS教程由于前端主要是了解,大家可以取找一些大佬的CSDN笔记 看一看 YYDS!!
1.2.5 Vue教程由于前端主要是了解,大家可以取找一些大佬的CSDN笔记 看一看 YYDS!!
2. Maven后端Web开发
MavenSpringBoot Web基础篇MySQLSpringBoot MybatisSpringBoot Web开发篇SpringBoot Web进阶篇什么是maven? Maven是apache旗下的一一个开源项目,是一款用于管理和构建java项目的工具。 Maven的作用?
依赖管理
这些是在网上下载的jar包,手动导入做一个大项目 非常的难!
如果用Maven呢?我们只需要建立一个maven工程。
工程中我是不需要导入任何jar包的,我只需要在pom.xml中配置你想要的jar包信息就行。Maven得到这个信息会自动联网下载这个包。
统一项目结构
不同的开发工具,他们构建出的目录结构是不统一的,我在idea中导入的工程导入到eclipse是无法直接用的。
项目构建
2.1 Maven的概述介绍:
Apache Maven是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建。作用: ➢方便的依赖管理 ➢统一的项目结构 ➢标准的项目构建流程官网: http://maven.apache.org/仓库:用于存储资源,管理各种jar包。
本地仓库:自己计算机上的一一个目录。中央仓库:由Maven团队维护的全球唯一的。 仓库地址: https://repo1.maven.org/maven2/远程仓库(私服):一般由公司团队搭建的私有仓库。安装:https://maven.apache.org/download.cgi
将原有的例子配置注释掉 加入自己的配置 nexus-aliyuncentralNexus aliyunhttp://maven.aliyun.com/nexus/content/groups/public 配置基础 JDK 版本如果按照默认配置运行,Java 工程使用的默认 JDK 版本是 1.5,而我们熟悉和常用的是 JDK 1.8 版本。修改配置的方式是:将 profile 标签整个复制到 settings.xml 文件的 profiles 标签内。
jdk-1.8 true 1.8 1.8 1.8 1.8配置环境变量
新建环境变量:
配置环境变量的规律:
XXX_HOME 通常指向的是 bin 目录的上一级
PATH 指向的是 bin 目录
通过 mvn -v 验证:
Microsoft Windows [版本 10.0.22621.1555](c) Microsoft Corporation。保留所有权利。C:WindowsSystem32>mvn -vApache Maven 3.9.2 (c9616018c7a021c1c39be70fb2843d6f5f9b8a1c)Maven home: D:Download_SoftwareMavenapache-maven-3.9.2Java version: 19.0.2, vendor: Oracle Corporation, runtime: E:Java_DownLoadjdk-19_windows-x64_binjdk-19.0.2Default locale: zh_CN, platform encoding: UTF-8OS name: "windows 11", version: "10.0", arch: "amd64", family: "windows"C:WindowsSystem32> 2.2 IDEA集成Maven 2.2.1 配置Maven环境 选择IDEA中File —— Settings —— Build,Execution,Deployment —— Build Tools —— Maven设置IDEA使用本地安装的Maven,并修改配置文件及本地仓库路径 2.2.2 创建Maven项目Maven坐标
什么是坐标? ➢Maven中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置。 ➢使用坐标来定义项目或引入项目中需要的依赖。Maven中的坐标使用三个『向量』在『Maven的仓库』中唯一的定位到一个『jar』包。
groupId:公司或组织的 id,即公司或组织域名的倒序,通常也会加上项目名称 例如:groupId:com.javatv.maven
artifactId:一个项目或者是项目中的一个模块的 id,即模块的名称,将来作为 Maven 工程的工程名 例如:artifactId:auth
version:版本号 例如:version:1.0.0
提示:坐标和仓库中 jar 包的存储路径之间的对应关系,如下
javax.servletservlet-api2.5上面坐标对应的 jar 包在 Maven 本地仓库中的位置:
Maven本地仓库根目录javaxservletservlet-api2.5servlet-api-2.5.jar
2.2.3 导入Maven项目 2.3 Maven依赖管理最核心的功能
2.3.1 依赖配置依赖就是jar包,jar包就是依赖
pom.xml POM:Project Object Model,项目对象模型。和 POM 类似的是:DOM(Document Object Model),文档对象模型。它们都是模型化思想的具体体现。
POM 表示将工程抽象为一个模型,再用程序中的对象来描述这个模型。这样我们就可以用程序来管理项目了。我们在开发过程中,最基本的做法就是将现实生活中的事物抽象为模型,然后封装模型相关的数据作为一个对象,这样就可以在程序中计算与现实事物相关的数据。
POM 理念集中体现在 Maven 工程根目录下 pom.xml 这个配置文件中。所以这个 pom.xml 配置文件就是 Maven 工程的核心配置文件。其实学习 Maven 就是学这个文件怎么配置,各个配置有什么用。
当前的pom.xml
4.0.0 org.example Maven_test 1.0-SNAPSHOT 19 19 UTF-8引入依赖
4.0.0 org.example Maven_test 1.0-SNAPSHOT 19 19 UTF-8 ch.qos.logback logback-classic 1.2.3注意:第一次输入 没有提示,因为本地库没有,正常输入点击下面这个东西,更新库即可 注意事项
如果引入的依赖,在本地仓库不存在,将会连接远程仓库/中央仓库,然后下载依赖。(这个过程会 比较耗时,耐心等待)如果不知道依赖的坐标信息,可以到[https://mvnrepository.com/]中搜索。 2.3.2 依赖传递依赖是具有传递性的,当导入一个依赖, 你可能导入了好几个
当你引入projectA项目资源,你就引入了B与C直接依赖:在当前项目中通过依赖配置建立的依赖关系间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源但是我要是A不需要其中继承过来的资源怎么办???
net.javatv.mavenauth1.0.0compile commons-loggingcommons-logging 2.3.3 依赖范围 junitjunit4.10test上面说到我们使用 Maven 最主要的就是使用它的依赖管理功能,引入依赖存在一个范围,maven的依赖范围包括: compile,provide,runtime,test,system。
compile:表示编译范围,指 A 在编译时依赖 B,该范围为默认依赖范围。编译范围的依赖会用在编译,测试,运行,由于运行时需要,所以编译范围的依赖会被打包。 provided:provied 依赖只有当 jdk 或者一个容器已提供该依赖之后才使用。provide 依赖在编译和测试时需要,在运行时不需要。例如:servlet api被Tomcat容器提供了。 runtime:runtime 依赖在运行和测试系统时需要,但在编译时不需要。例如:jdbc 的驱动包。由于运行时需要,所以 runtime 范围的依赖会被打包。 test:test 范围依赖在编译和运行时都不需要,只在测试编译和测试运行时需要。例如:Junit。由于运行时不需要,所以 test 范围依赖不会被打包。 system:system 范围依赖与 provide 类似,但是必须显示的提供一个对于本地系统中 jar 文件的路径。一般不推荐使用。
依赖范围编译测试运行时是否会被打入jar包compile*√√√√provided*√√××runtime×√√√test*×√××system√√×√ 2.3.4 生命周期生命周期 Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一。
Maven中有3套相互独立的生命周期:
clean: 清理工作。default: 核心工作,如:编译、测试、打包、安装、部署等。site: 生成报告、发布站点等。 clean:移除上一次构建生成的文件compile:编译项目源代码test:使用合适的单元测试框架运行测试(junit)package:将编译后的文件打包,如: jar、war等install:安装项目到本地仓库 2.3.5 继承Maven工程之间,A 工程继承 B 工程
B 工程:父工程A 工程:子工程本质上是 A 工程的 pom.xml 中的配置继承了 B 工程中 pom.xml 的配置。
在父工程中统一管理项目中的依赖信息,具体来说是管理依赖信息的版本。
它的背景是:
对一个比较大型的项目进行了模块拆分。一个 project 下面,创建了很多个 module。每一个 module 都需要配置自己的依赖信息。它背后的需求是:
在每一个 module 中各自维护各自的依赖信息很容易发生出入,不易统一管理。使用同一个框架内的不同 jar 包,它们应该是同一个版本,所以整个项目中使用的框架版本需要统一。使用框架时所需要的 jar 包组合(或者说依赖信息组合)需要经过长期摸索和反复调试,最终确定一个可用组合。这个耗费很大精力总结出来的方案不应该在新的项目中重新摸索。通过在父工程中为整个项目维护依赖信息的组合既保证了整个项目使用规范、准确的 jar 包;又能够将以往的经验沉淀下来,节约时间和精力。
父工程创建好之后,要修改它的打包方式:
pom只有打包方式为 pom 的 Maven 工程能够管理其他 Maven 工程。打包方式为 pom 的 Maven 工程中不写业务代码,它是专门管理其他 Maven 工程的工程,所以可以将生成的 src 目录删除。
② 创建模块工程 然后可以在父工程的 pom 文件中看到: 而子工程的 pom 如下:
③ 在父工程中配置依赖的统一管理
使用dependencyManagement标签配置对依赖的管理,如下:
4.0.0 net.javatv.maven maven-demo-parent pom 1.0-SNAPSHOT demo-module org.springframework spring-beans 5.3.19 org.springframework spring-core 5.3.19 org.springframework spring-context 5.3.19 org.springframework spring-aop 5.3.19而实际上被管理的依赖并没有真正被引入到工程。
④ 子工程中引用那些被父工程管理的依赖
关键点:省略版本号
子工程引用父工程中的依赖信息时,可以把版本号去掉。把版本号去掉就表示子工程中这个依赖的版本由父工程决定,具体来说是由父工程的dependencyManagement来决定。
子工程 pom 如下:
maven-demo-parent net.javatv.maven 1.0-SNAPSHOT 4.0.0 demo-module org.springframework spring-beans org.springframework spring-core org.springframework spring-context org.springframework spring-aop此时,被管理的依赖才被引入到工程。
⑤ 修改父工程依赖信息的版本
这个修改可以是降级,也可以是升级,但一般来说都是升级。
⑥ 父工程中