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 11JDK 17
  • 对于需要 最新特性 或希望 提前体验新功能 的开发者,可以选择 非 LTS 版本 ,如 JDK 12JDK 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 命令呢?

原因总结:
  1. JAVA_HOME 环境变量的作用

    • JAVA_HOME 用来指向 JDK 安装的根目录,例如 /usr/local/jdk-17.0.12
  2. PATH 环境变量的作用

    • PATH 变量定义了操作系统搜索可执行文件的目录。当您将 $JAVA_HOME/bin 加入 PATH 时,系统能够在该目录下查找 Java 的可执行文件(如 javajavac 等)。
  3. 为什么可以执行 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 #将源码编译为字节码文件

java 复制代码
class wenjian{
    public static void main(String[] args){
        System.out.println("文件");
    }
}

java 编译后的文件 #执行这个文件

三,maven安装装置使用

概述

Maven 是一个项目管理工具,主要用于 Java 项目的构建、管理和依赖管理。它基于 POM(Project Object Model)文件来描述项目的结构、依赖和插件配置,并且可以自动化执行构建、打包、部署等过程。

下载安装

配置仓库

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 端口等。

XML 复制代码
<Connector port="8080" protocol="HTTP/1.1" 
           connectionTimeout="20000" 
           redirectPort="8443" />
  • port:监听的端口号(默认为 8080)。
  • connectionTimeout:连接超时时间,单位为毫秒。
  • redirectPort:当启用 SSL 时,会自动重定向的端口。
  • Host:配置虚拟主机,可以在同一台服务器上运行多个应用。
XML 复制代码
<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 配置
XML 复制代码
<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 中。

常见配置项:

  • 数据源配置
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" />

部署项目

多实例部署

tomcat优化

五,java项目部署

相关推荐
hrhcode11 分钟前
Java集合 HashMap 原理解读(含源码解析)
java·数据结构·spring boot·hashmap
真的想不出名儿16 分钟前
苍穹外卖-day07(Spring Cache & 购物车业务逻辑)
java·后端
雾喔23 分钟前
Java-08
java·开发语言
小河vlog27 分钟前
.NET 8 获取CPU序列号和主板序列号异常问题
java·服务器·.net
yuanManGan28 分钟前
数据结构漫游记:初识vector
java·开发语言·数据结构
Nijika...40 分钟前
libilibi项目总结(17)Elasticsearch 的使用
java·后端·spring·elasticsearch
恩爸编程43 分钟前
探秘 Maven 依赖范围:你的项目“魔法圈”
java·maven·maven开发·maven多模块开发·maven依赖范围·maven依赖范围概念·maven依赖范围使用
shine_du1 小时前
架构师之路--springboot核心类SpringApplication方法run的源码启动流程
java·spring boot·后端
毒丐1 小时前
VirtualBox使用教程
java·服务器·c++
Easy_Company1 小时前
Hadoop实验:关于MapReduce词频统计的实验步骤
java·大数据·hadoop·mapreduce