Tomcat快速入门:从安装到项目部署
Tomcat快速入门:从安装到项目部署
Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,由Apache、sun和其他一些公司及个人共同开发而成。最新的Serviet和JSP规范总是能在Tomcat中得到体现。Tomcat是目前比较流行的web应用服务器。
通常,为了让Java开发的应用程序(app)能够在服务器上正常运行,必须安装Java运行时环境(JRE)。JRE主要支持Java SE,而如果要运行Java EE应用,则需要更多的支持,比如依赖于服务器软件,Tomcat就是其中一种常用的服务器。
有了Tomcat之后,由于它本身也是用Java实现的,因此同样需要JRE来运行。之前看Java Web教程,觉得有一个比喻可以帮助理解应用程序、Tomcat以及JRE三者的关系:将Java开发的应用程序比作子弹,而Tomcat则是枪。子弹需要符合枪的规范,并装入枪中才能发射。然而,仅有枪并不意味着可以随时使用,还需要在靶场上才能操作,而JRE就可以理解为这个靶场。
Tomcat安装
在Tomcat官网左侧Download模块选择对应版本的Tomcat进行下载。这里选择64-bit Windows版本的压缩包进行下载,下载完成后,选择一个合适的文件夹进行解压,即可使用:
需要注意的是,在Tomcat的10以及之后的版本中,由于包名由原先的javax.改成jakarta.,因此,原先可以运行在之前版本的应用程序,需要修改包名才能运行在10版本以及之后的Tomcat上。另外,下载Tomcat时需要确认支持的Java版本:
Tomcat服务启动:进入apache-tomcat目录下的bin文件夹,找到startup命令。如果是在Windows操作系统,则选择运行startup.bat,如果是在Linux系统,则选择运行startup.sh。这里以Windows系统为例,双击startup.bat,出现一个控制台窗口,里面打印着启动的日志,这时可以打开浏览器输入:
,当出现以下页面时,说明启动成功:
Tomcat服务关闭:可以直接关闭启动时出现的控制台窗口,也可以运行shutdown命令,比如在Windows系统中,双击bin目录中的shutdown.bat即可关闭Tomcat服务。
解决Tomcat打印日志中文乱码:在conf目录下找到logging.properties文件,打开后找到控制台的字符集设置,将UTF-8改成GBK,之后,重新启动Tomcat服务即可:
java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.encoding = GBK
# java.util.logging.ConsoleHandler.encoding = UTF-8
Tomcat常见目录
(1)bin目录
该目录用于存放Tomcat相关命令,比如startup、shutdown等命令。
(2)conf目录
该目录用于存放配置文件,比如:1)配置Tomcat服务占用的端口号,可以修改conf下的server.xml配置文件内容;2)设置Tomcat启动控制台字符集,防止日志乱码,可以修改logging.properities中控制台处的字符集设置。
(3)lib目录
该目录用于存放Tomcat程序的相关jar包。可以将部署在Tomcat上项目所需的jar包存放在lib文件夹中,但不建议这样做,会污染环境。
(4)logs目录
该目录用于存放Tomcat启动后记录的日志。Tomcat使用久会产生较多日志,建议定期清理不必要的日志信息,避免堆积。
(5)temp目录
该目录用于存放临时文件,不是很重要,无需多关注
(6)webapps目录
该目录用于存放需要部署的项目,webapps文件夹中本身自带了一些项目,这些项目可以删除。
(7)work目录
该目录用于存放与jsp技术相关的文件。由于目前jsp技术过时了,因此,这个work目录可以不关注。
WEB项目标准结构
在使用Tomcat的过程中,一个标准的可以用于发布的WEB项目标准结构如下:
- static:非必要目录,约定俗成的名字,一般在此处放静态资源(css js img)
- WEB-INF:必要目录,必须叫WEB-INF,受保护的资源目录,浏览器通过url不可以直接访问的目,存放项目相关的重要文件:
- classes:项目字节码根路径
- lib:存放项目所需的第三方jar包
- web.xml:当前项目的配置文件
url的组成部分和项目中资源的对应关系如下:
Tomcat部署项目
使用Tomcat部署项目,有三种方式:
- 直接将编译好的项目放在webapps目录下
- 将编译好的项目打成war包放在webapps目录下,Tomcat启动后会自动解压war包
- 可以将项目放在非webapps的其他目录下,在Tomcat中通过配置文件指向app的实际磁盘路径
对于第三种部署方式,首先在磁盘的自定义目录准备一个部署项目,这里以名称为app的项目为例。之后,在Tomcat的conf文件夹下创建Catalina/localhost目录,并在该目录下创建一个app.xml文件(该文件与项目名同名),文件内容为:
<!--
path:项目的访问路径,也是项目的上下文路径,即浏览器中输入的项目名称
docBase:项目在磁盘中的实际路径
-->
<Context path="/app" docBase="D:\webapps\app">
其中,path参数表示是项目的访问路径,也是项目的上下文路径,即浏览器中输入的项目名称;docBase参数表示项目在磁盘中的实际路径。注意:path、xml文件名称以及项目名称尽量保持一致,否则需要额外的配置。之后,即可启动Tomcat访问项目。
IDEA关联Tomcat
在部署JavaWeb工程时,首先需要将该工程构建成可以用于Tomcat服务器部署的应用程序,之后才能将这个应用程序真正部署到Tomcat服务器上。这个过程可以使用IDEA进行。
(1)建立Tomcat和IDEA关联
打开IDEA应用,在Settings中找到Build, Execution, Deployment模块,找到Application Servers选项,添加一个Tomcat Server:
注意:Tomcat Home地址选到Tomcat bin目录的上一层,之后点击OK即可。
(2)使用IDEA创建和开发JavaWeb工程
在自定义路径下创建一个项目文件夹,这里以web-all命名项目文件夹,并用IDEA打开这个空项目。在创建JavaWeb工程之前,首先点击导航栏处的File的Project Structure选项,设置JDK和Java的版本,同时设置构建好的应用程序的输出路径:
注意,这里是为了便于将多个开发项目放在同一个文件夹中管理,才先创建一个web-all项目。所以,接着是通过new Module创建具体需要开发的项目。右键项目,选择new新的Module(这里演示的项目Build systems选择IntelliJ):
之后需要将这个普通项目转成一个Java Web项目。不过,在此之前,需要为项目添加Tomcat运行依赖和Web组件。点击导航栏处的File的Project Structure选项,选择当前Modules的Dependencies,添加Tomcat依赖。点击+选择Library...中对应版本的Tomcat依赖:
接着,添加Web资源组件。右键项目,选择Add Framework Support...,勾选Web Application,选择5.0版本(4.0版本无法在Tomcat 10中运行):
此时,可以看到项目目录下多了一个web文件夹,说明目前这个项目已经不再是普通项目,而是一个Java Web项目。根据常见的开发项目目录结构,为这个项目创建一些测试代码:
(3)将工程构建成可部署的应用程序
在开发好当前工程后,需要将当前工程转成一个应用程序。点击IDEA导航栏中的Build下面的Build Artifacts,选择当前工程点击Build。完成后会生成一个out文件夹,该文件夹的artifacts中有一个工程名称_war_exploded的应用程序,这个应用程序即为转化后的输出。当然这一步其实可以省略,直接进行下面的Tomcat配置,最终在运行项目时,会自动转换和生成。接着进行Tomcat项目部署配置。点击编辑Run/Debug Configurations:
添加一个Tomcat Server Local:
选择当前版本的Tomcat作为Application Server,点击Deployment,将当前转换好的应用程序添加进去,这里可以将Application context设置成一个较短的名称,这样使用浏览器访问项目的路径会简洁一些:
(4)将应用程序部署到Tomcat并启动运行
配置完成后,点击IDEA中的运行项目按钮即可启动Tomcat并在Tomcat上运行项目。