day4:tomcat—maven-jdk
一,java项目部署过程
- 编译:使用javac命令将.java源文件编译成.class宇节码文件
- 打包:使用工具如maven或Gradle将项目的依赖、资源和编译后的字节码打包成一个分发格式,如.jar文件,或者.war文件(用于web应用)
- 部署:将打包后的文件复制到服务器上指定的目录中,可能是Tomcat、JBoss、wildFly等应用服务器的deployments目录
二,jdk概述与安装配置
概述
JDK(Java Development Kit,Java 开发工具包)是开发 Java 应用程序所需的核心工具集合。它包含了运行 Java 应用程序和开发 Java 程序的各种工具和库。JDK 包括了 JRE(Java Runtime Environment,Java 运行时环境)和开发工具,如 编译器(javac
)、调试工具(jdb
)以及其他必要的工具和库。
J2SE, J2EE, J2ME 概述
版本 | 全称 | 定义 | 主要用途 | 适用对象 |
---|---|---|---|---|
J2SE | Java 2 Standard Edition | J2SE 是 Java 的标准版本,提供了核心类库和基础功能,适用于桌面和服务器应用。 | 提供开发桌面应用、命令行应用、图形界面(GUI)应用、控制台应用等。 | 开发桌面程序、简单的服务器应用等。 |
J2EE | Java 2 Enterprise Edition | J2EE 是 Java 的企业版,主要用于开发大型的企业级应用,提供了分布式计算、事务管理和安全功能。 | 用于开发 Web 应用、企业级应用、分布式系统、服务端应用等。 | 开发 Web 应用、大型企业应用、分布式系统等 |
J2ME | Java 2 Micro Edition | J2ME 是 Java 的微型版,主要用于开发嵌入式设备、移动设备、有限资源环境下的应用。 | 用于开发手机、嵌入式设备、物联网设备和其他资源受限的应用。 | 开发移动设备、嵌入式设备等应用。 |
JDK 版本选择指南
JDK 版本 | 适用场景 | 版本类型 | 建议选择的情况 |
---|---|---|---|
JDK 8 | 适合老旧项目、已使用 Lambda 表达式和 Stream API 的项目 | LTS(长期支持) | 如果你的项目基于 Java 8,或依赖于旧版 API,选择 JDK 8。 |
JDK 11 | 企业级应用、Web 服务、微服务架构等 | LTS(长期支持) | 适合现代化应用,支持微服务,长期稳定更新。 |
JDK 17 | 大型项目、长期支持、性能优化 | LTS(长期支持) | 对于新项目和生产环境中的长期应用,JDK 17 是首选。 |
JDK 12+ | 新特性、试验性功能、快速更新的应用 | 非 LTS(短期支持) | 对于快速追求新特性的开发,适合实验性和开发中应用。 |
推荐做法:
- 对于 生产环境 和 长期维护的项目,优先选择 LTS 版本,如 JDK 8, JDK 11 或 JDK 17。
- 对于需要 最新特性 或希望 提前体验新功能 的开发者,可以选择 非 LTS 版本,如 JDK 12、JDK 14 等,但需要注意这些版本会定期更新,且没有长期支持。
特性(运行在jvm上)
-
跨平台性: JDK 支持跨平台开发,Java 程序可以在不同的操作系统(Windows、Linux、macOS 等)上运行,无需修改代码。运行在jvm上
-
内存管理: JDK 提供了自动内存管理,包含垃圾回收机制,这大大简化了开发者的工作。
-
多线程支持: JDK 提供了内建的多线程支持,使得开发者可以高效地利用多核处理器。
-
丰富的库和 API: JDK 包含了大量的类库和 API,可以帮助开发者完成各种任务,例如网络通信、图形用户界面(GUI)开发、数据库操作等。
-
安全性: JDK 提供了多种安全特性,包括加密机制、安全类库、身份验证等,帮助开发者构建安全的应用程序。
-
支持最新的 Java 标准: JDK 支持 Java 的最新版本,包括最新的语言特性和标准库。
安装
yum安装
#查看是否安装java
rpm -qa java
#查看jdk的相关安装包
yum -y list java*
#安装jdk
yum install -y java-11-openjdk.x86_64
#测试验证(不需要配置环境变量)
java -version
源码安装(因为仓库不提供oracle的java)
#卸载之前的jdk
rpm -qa| grep java
yum remove java* -y
#下载JDK安装包:Java Archive Downloads - Java SE 17(这个版本 x64 Compressed Archive)
wget https://download.oracle.com/java/17/archive/jdk-17.0.12_linux-x64_bin.tar.gz
#上传源码包的centos机
# 解压缩源码包
tar -xf jdk-17_linux-x64_bin.tar.gz -C /usr/locat/
# 测试
java -version
配置(学了这么久我还不会自己配,现在开始学吧)
打开 /etc/profile
文件: 使用 vim
或任何文本编辑器打开 /etc/profile
文件:
sudo vim /etc/profile
在文件的最后面添加环境变量设置: 在文件的末尾添加以下内容:
# 设置 JAVA_HOME 和更新 PATH
export JAVA_HOME=/usr/local/jdk-17.0.12
export PATH=$JAVA_HOME/bin:$PATH
注意:
export JAVA_HOME=/usr/local/jdk-17.0.12
这行设置了JAVA_HOME
环境变量为您的 JDK 安装路径。export PATH=$JAVA_HOME/bin:$PATH
这行将 Java 的bin
目录加入到系统的PATH
环境变量中,这样您就可以在任何地方通过命令行调用 Java。
保存并退出 vim
: 按 Esc
键,然后输入 :wq
保存并退出。
使修改生效: 运行以下命令使 /etc/profile
文件的修改立即生效:
source /etc/profile
测试 Java 环境变量是否配置成功: 运行以下命令,查看 Java 版本来验证配置是否正确:
java -version
没有明确设置 java
这个变量,为什么仍然可以直接运行 java --version
命令呢?
原因总结:
-
JAVA_HOME
环境变量的作用:JAVA_HOME
用来指向 JDK 安装的根目录,例如/usr/local/jdk-17.0.12
。
-
PATH
环境变量的作用:PATH
变量定义了操作系统搜索可执行文件的目录。当您将$JAVA_HOME/bin
加入PATH
时,系统能够在该目录下查找 Java 的可执行文件(如java
、javac
等)。
-
为什么可以执行
java
命令:java
命令是 JDK 安装目录下的一个可执行文件,通常位于$JAVA_HOME/bin/java
。- 通过将
$JAVA_HOME/bin
添加到PATH
环境变量中,操作系统能够在$JAVA_HOME/bin
目录中找到java
命令。 - 结果就是您不需要显式设置
java
变量,系统能够自动找到并执行它。
关键点:
- 设置
JAVA_HOME
后,$JAVA_HOME/bin
目录会被添加到PATH
中,操作系统就能在该目录中找到 Java 可执行文件。 - 您可以通过执行
java -version
来确认java
命令是否正确运行,因为操作系统会根据PATH
来查找java
可执行文件。
命令
javac 文件.java #将源码编译为字节码文件
class wenjian{ public static void main(String[] args){ System.out.println("文件"); } }
java 编译后的文件 #执行这个文件
三,maven安装装置使用
概述
Maven 是一个项目管理工具,主要用于 Java 项目的构建、管理和依赖管理。它基于 POM(Project Object Model)文件来描述项目的结构、依赖和插件配置,并且可以自动化执行构建、打包、部署等过程。
下载安装
- 访问 Apache Maven 官网下载页面:Download Apache Maven – Maven
- 选择适合的版本下载,例如:
apache-maven-3.x.x-bin.tar.gz
或apache-maven-3.x.x-bin.zip
。 - wget https://dlcdn.apache.org/maven/maven-3/3.9.9/binaries/apache-maven-3.9.9-bin.tar.gz(复制命令可能报错,我认为应该是csdn给链接加了什么)
- 选择适合的版本下载,例如:
- 解压文件
- tar -xzvf apache-maven-3.x.x-bin.tar.gz -C /usr/local/
- 设置环境变量
- vim /etc/profile
- source /etc/profile
- mvn -version 验证一下
配置仓库
Maven 默认使用中央仓库来下载依赖包,但我们通常会配置自己的本地仓库或私有仓库,以便在离线或代理时使用。配置文件为:apache-maven-3.9.9/conf/settings.xml(建议先备份在修改)
1. 配置本地仓库
默认情况下,Maven 会将依赖下载到本地仓库,即
~/.m2/repository
目录。如果你想自定义本地仓库的位置,可以通过修改 Maven 的配置文件settings.xml
来实现。步骤 1:修改
settings.xml
打开 Maven 配置文件
settings.xml
,该文件位于 Maven 安装目录下的conf
文件夹中,或位于用户的~/.m2/
目录下。修改或添加以下配置:
<localRepository>自己设置存放位置</localRepository>(注意:不写这句就是默认)
步骤 2:保存并退出
- 保存
settings.xml
文件后,Maven 会将所有依赖下载到你指定的目录中,而不是默认的~/.m2/repository
。2. 配置远程仓库
Maven 默认会连接 Maven Central Repository 来下载依赖包。你可以在
settings.xml
文件中配置其他远程仓库,例如私有仓库或镜像仓库。步骤 1:配置远程仓库
你可以在
settings.xml
文件中添加自定义远程仓库的配置信息:<mirrors> <!-- 定义镜像列表 --> <mirror> <!-- 定义单个镜像 --> <id>alimaven</id> <!-- 镜像的唯一标识 --> <name>aliyun maven</name> <!-- 镜像的名称 --> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <!-- 镜像的URL --> <mirrorOf>central</mirrorOf> <!-- 指定这个镜像替代的仓库 --> </mirror> </mirrors>
步骤 2:添加远程仓库
你还可以在项目的
pom.xml
文件中添加远程仓库,以便 Maven 下载依赖时从指定的仓库获取。<repositories> <repository> <id>example-repo</id> <url>https://repo.example.com/maven2</url> </repository> </repositories>
本地仓库(Local Repository)主要用于存储从远程仓库下载的依赖包以及项目构建过程中生成的构件(例如 .jar
、.war
文件)。本地仓库的作用是缓存这些依赖,以便在以后进行构建时可以避免重复从远程仓库下载,提高构建效率和稳定性。(简单的说,本地仓库会存下远程仓库下载过得资源,并且下次直接先去本地看,没有在远程)
常用命令
mvn工程相关命令,需要在项目pom.xml同级的目录中运行
mvn clean:清理项目,删除
target/
目录中的所有文件(即编译生成的文件和构建产物)。解释:
clean
目标用于移除所有由 Maven 构建产生的文件,确保每次构建都从一个干净的状态开始。- 通常在执行构建前执行
clean
命令,避免使用旧的构建结果或缓存的文件。mvn validate:验证项目是否正确,是否有缺失的依赖。
mvn compile:编译源代码,生成
.class
文件。解释:
compile
目标将项目中的所有源代码编译为.class
文件,这些文件会被存放在target/classes/
目录下。- 这一步骤不会打包生成 JAR 文件,只是编译源代码。
mvn test:自动扫描并执行位于
src/test/java
目录下的所有测试类,并显示测试结果。mvn package:将编译后的代码打包成可部署的格式,如 JAR、WAR 或其他格式。
解释:
package
目标会将编译后的代码和资源文件打包成项目配置中指定的格式(例如 JAR 或 WAR 文件)。该文件会存放在target/
目录下。- 如果
pom.xml
中配置了打包成 JAR 文件,那么执行此命令后会生成一个.jar
文件。mvn install:将打包好的项目安装到本地 Maven 仓库中。
解释:
install
目标会将打包好的项目(JAR、WAR、EAR 等)安装到本地 Maven 仓库(通常是~/.m2/repository
)中。- 这使得其他项目可以引用这个已构建的项目作为依赖。
- 在执行
mvn install
后,本地仓库中会存储项目构建的产物,以便其他项目进行依赖。mvn deploy:将项目的构建产物上传到远程 Maven 仓库。
解释:
deploy
目标会将构建产物(JAR、WAR、EAR 等)上传到配置的远程 Maven 仓库。这通常用于共享构建产物,供其他开发者或项目使用。deploy
命令通常是在项目完成构建并准备发布时使用,它会将产物发布到中央仓库或私有仓库。
安装数据库(先看tomcat安装)
maven命令(待定)
四,Tomcat安装配置
概述(自带处理动态资源的功能)
Apache Tomcat 是一个轻量级的 Java Web 服务器,专门用于运行 Java Servlets 和 JavaServer Pages(JSP)。它作为一个 Servlet 容器,能够处理 Java Web 应用的请求并生成响应。
主要特点:
- 支持 Java Servlet 和 JSP 标准。
- 支持 HTTP 和 AJP 协议。
- 提供良好的性能和灵活的配置选项。
- 支持多种 Web 应用部署方式,包括 WAR 文件、目录部署等。
官网:Apache Tomcat® - Welcome!
下载安装
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.98/bin/apache-tomcat-9.0.98.tar.gz
解压:tar -zxvf apache-tomcat-<version>.tar.gz
设置环境变量:
export CATALINA_HOME=/xxx/tomcat-版本
export PATH=$CATALINA_HOME/bin:$PATH
开启访问,ip:8080
配置文件详解
Tomcat 配置文件位于 conf
目录下,主要的配置文件有:
1. server.xml
这是 Tomcat 的主配置文件,定义了整个服务器的行为,包括端口、线程池、虚拟主机等配置。
常见配置项:
-
Connector:配置 Tomcat 监听的端口,例如 HTTP 端口、AJP 端口等。
-
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
port
:监听的端口号(默认为 8080)。connectionTimeout
:连接超时时间,单位为毫秒。redirectPort
:当启用 SSL 时,会自动重定向的端口。
- Host:配置虚拟主机,可以在同一台服务器上运行多个应用。
-
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="/path/to/your/application"/> </Host>
name
:主机名(通常是localhost
)。appBase
:Web 应用的基础目录,通常是webapps
。unpackWARs
:是否自动解压 WAR 文件。
2. web.xml
web.xml
是每个 Java Web 应用的配置文件,位于 WEB-INF
目录下,定义了应用的 Servlet、过滤器、监听器等。
常见配置项:
- Servlet 配置:
-
<servlet> <servlet-name>hello</servlet-name> <servlet-class>com.example.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
servlet-name
:Servlet 的名称。servlet-class
:Servlet 类的完整路径。url-pattern
:Servlet 映射的 URL。
3. context.xml
该文件配置每个 Web 应用的相关设置,通常位于应用的 META-INF/context.xml
中。
常见配置项:
- 数据源配置:
-
<Resource name="jdbc/MyDataSource" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="user" password="password" driverClassName="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://localhost:3306/mydb" />