Tomcat 与 Eclipse

本文介绍了Tomcat作为Web服务器的角色,如何在Eclipse中部署Web应用,以及Tomcat的目录结构和配置文件。重点讨论了webapps目录的用途,启动Tomcat的步骤,以及Eclipse与手动部署的区别。此外,还讲解了JSP的编译过程,以及工作目录下的资源映射和动态更新。最后提到了环境变量配置和JSP编译输出的位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是Tomcat

Tomcat 是Eclipse 用于部署Web应用的服务器

准确的说,Tomcat 只是servlet 的容器

Tomcat 并没有实现JavaEE 的所有标准


Tomcat 是由许多组件构成的

如:Tomcat的JSP引擎Jasper

负责网络连接的Coyote

(下面介绍的Tomcat是基于9.0版本的)

一:Web 应用如何部署

(1)Tomcat 目录下的webapps 目录就是Web应用部署的地方

(2)当Eclipse 运行Web 应用的时候,会把相应的资源文件给放到webapps中
(在Eclipse 中修改文件内容的时候,webapps 目录下的文件也相应被修改)
(当然,Eclipse Workspace 中的文件内容也是同时被修改)

(3)webapps 下有对应文件后,我们则需要运行Tomcat安装目录/bin/startup.bat 启动Tomacat

(4)当Eclipse 运行Web 应用的时候,会自动帮我们运行startup.bat 启动Tomcat

(4)启动Tomcat后,我们就可以在浏览器中,访问我们的Web应用和其他文件资源了

这里给个访问路径的例子,具体不同再修改:

http://localhost:8080/EElearn2/Forward1.html

(默认是8080端口,这个是可以通过配置文件进行修改的)

(5)你可以在webapps 里放文件夹,也可以在里面放打包好的war 包

(Tomcat 默认会帮你把war 包里的东西给解压出来,当然你也可以选择不解压,后面再详细说)


二:用Eclipse 部署和用Tomcat手动部署有什么不同

(1)用Tomcat 手动部署的时候,使用的配置文件在 Tomcat安装目录/conf 下

(2)用Eclipse 部署时,Eclipse 会在Workspace 下新建一个Server 的文件夹

Tomcat的配置文件就在这

(其实是在Server目录下的 xxxconfig 文件夹里

用不同版本的Tomcat文件夹名称会不同,我这就不具体给出了 )


CATALINA_HOME 和 CATALINA_BASE

你双击你Eclipse里的服务器就可以看到相关的信息

其中,Configuration path 就是你Eclipse 对Tomcat的配置文件

下面还会有Sever path 和Deploy path

分别是 catalina.base 和你项目部署的目录(对应Tomcat下的webapps)

关于catalina.base,也就是CATALINA_BASE

简单的说就是Tomcat 的工作目录,下面还会再提及

相信大家肯定还见过CATALINA_HOME

这个对应的是Tomcat 的安装目录

另外呢,你在启动服务器的时候,注意看consle 里输出的信息

你会看到一些配置信息

九月 30, 2020 4:01:21 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: CATALINA_BASE:         D:\software\eclipseworkplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1
九月 30, 2020 4:01:21 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: CATALINA_HOME:         D:\software\apache-tomcat-9.0.31
九月 30, 2020 4:01:21 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dcatalina.base=D:\software\eclipseworkplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1
九月 30, 2020 4:01:21 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dcatalina.home=D:\software\apache-tomcat-9.0.31
九月 30, 2020 4:01:21 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dwtp.deploy=D:\software\apache-tomcat-9.0.31\webapps
九月 30, 2020 4:01:21 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Djava.endorsed.dirs=D:\software\apache-tomcat-9.0.31\endorsed
九月 30, 2020 4:01:21 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dfile.encoding=UTF-8

多 留 意 c o n s l e 里 的 信 息 , 报 错 信 息 都 会 在 里 面 , 可 以 帮 助 我 们 有 效 解 决 问 题 \color{red}{多留意consle 里的信息,报错信息都会在里面,可以帮助我们有效解决问题} consle

甚至于,如果你手动启动Tomcat遇到问题时,也得依赖Tomcat给出的这些信息

也许黑框框会闪退

但是,这些信息都是会被保存在Tomcat安装目录/logs/catalina.xxxx-xx-xx.log

补充:

logs下的 localhost_access_log.xxxx-xx-xx.txt

会保存用户对服务器的请求信息

例:

这个表示你成功访问了服务器上的一个jsp文件,200是状态码,GET请求

0:0:0:0:0:0:0:1 - - [30/Sep/2020:15:20:18 +0800] “GET /EElearn3/xxtimes.jsp HTTP/1.1” 200 463

这个表示你成功访问了服务器上的一个.ico 图片文件

0:0:0:0:0:0:0:1 - - [30/Sep/2020:16:23:38 +0800] “GET /favicon.ico HTTP/1.1” 200 21630


这样可能会导致一个问题

浏 览 器 按 正 确 路 径 访 问 资 源 , 结 果 报 错 , 无 法 正 确 访 问 \color{red}{浏览器按正确路径访问资源,结果报错,无法正确访问} 访访

我们按照webapps 下对应的路径,在浏览器访问资源,结果访问失败

但是,我们用Eclipse 运行Web应用时,却可以正常访问

只是路径名和Web项目名并不对应

下 面 介 绍 什 么 操 作 会 导 致 上 面 的 问 题 \color{blue}{下面介绍什么操作会导致上面的问题}

在你使用Eclipse 对你的project 进行一些不正确重命名操作时,可能会发生错误

例:你已经手动启动Tomcat

然后你在Eclipse 对你的project 进行重命名

再在Eclipse 上运行你的Web应用

这时肯定会报错-----大意是说Tomcat已在运行

这种情况下,你这个重命名操作就可能会导致上面提及的资源访问失败的问题

原因是:

你 上 面 不 正 确 的 重 命 名 操 作 , 会 导 致 E c l i p s e 修 改 资 源 的 映 射 ! \color{blue}{你上面不正确的重命名操作,会导致Eclipse 修改资源的映射!} Eclipse

资源的映射可以在Eclipse 关于Tomcat的配置文件中修改(上面提过)

这里额外提醒一点

一般情况下,就不要去碰webapps下的东西

很可能会和你用的IDE产生冲突的

而真当冲突发生,然后应用无法正常访问的时候

有一个死马当活马医的办法

把 w e b a p p s 下 的 出 现 问 题 的 应 用 给 删 掉 \color{red}{把webapps下的出现问题的应用给删掉} webapps

Eclipse 会帮我们把应用重新部署一遍


刚发现这原因的时候,我以为这是Eclipse的Bug

但写这个博客的时候,我好像想通了!

Eclipse 这么做,好像是合理的

大 彻 大 悟 \color{green}{大彻大悟}

一般来说,Eclipse 的使用者没啥必要到webapps 目录下去看具体的文件

你只需要在Eclipse 中写代码,然后Run ,程序只要能正常在服务器上跑,那就没问题

在你一通不正确的骚操作下,这个Web应用还能跑起来,那才是Eclipse 想要的!

Eclipse考虑更多的是用户在各种情况下仍然能正常使用这个软件


三:配置文件

路径:Tomcat安装目录/conf

准确的说,这其实是Catalina 的配置文件

Catalina 是Tomcat 的一个组件,用作severlet 的容器


这里就简单介绍一下我接触过的 server.xml

(1)Host 标签

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

1.name 主机名

2.appBase 就是你部署Web 应用的目录

3.unpackWARs 则是之前说过的是否加压war包

(值为true 解压的话,你可以在解压出来的文件夹里详细了解其结构)

(值为false ,则不解压,但是并不影响正常访问资源)

4.autoDeploy 自动部署,其实叫动态部署会更合适一些 哈哈

设为true 时,表示Tomcat 会动态更新Web应用

也就是,Tomcat 会监听webapps,如果有文件被修改了,则会在服务器上动态更新

(2)Context标签

<Context docBase="Spring02" path="/Spring2" 
reloadable="false" source="org.eclipse.jst.jee.server:Spring02"/>

这个就是之前说的有关资源映射的标签

1.docBase 为webapps下实际的资源

2.path 是浏览器访问资源的路径

(/表示在webapps目录)

3.其他的我就没去文档查了,照着填就完了~

有兴趣的朋友可以自己去看看

(有一说一,Tomcat 的文档查起来没那么方便)


四:谁编译的JSP

把JSP 编译成Java文件不是Eclipse 完成的,而是由Tomcat完成的

(准确的说是Tomcat 的 Jasper 2 JSP Engine)

你可以自己做一个简单的实验

在Tomcat 的webapps,新建一个文件夹,新建一个Jsp文件,然后bin/startup.bat 启动Tomcat

当你访问Jsp文件的时候

你就会发现在Tomcat下的work目录里会多出有对应的Java文件和class文件

(整个过程并不依赖Eclipse)


这 里 再 补 充 一 下 J S P 编 译 出 来 的 J a v a 和 c l a s s 文 件 会 被 放 到 哪 \color{blue}{这里再补充一下JSP编译出来的Java和class文件会被放到哪} JSPJavaclass

会被放到Tomcat 的工作目录之下

也就是前面提到的CATALINA_BASE

分为两种情况:

(1)手动启动Tomcat:

Tomcat安装目录/work/Catalina/localhost/{Webapp name}/org/apache/jsp

(前面说过,localhost 是可以重命名的,上面的路径供给大家参考)

(2)利用Eclipse 启动:

Workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp/work/…

tmp 可能后面还会带编号,大家灵活处理

work目录后面的路径就和情况(1)一样了


对了,还有要提的就是,你修改JSP文件也是会被Tomcat监听(准确的说是Jasper引擎)到的

然后,Tomcat 会动态编译出新的Java文件和class文件到Tomcat的工作目录


最最最后补充一点

Tomcat 的运行是需要JRE的,所以我们需要配置环境变量JRE_HOME、JAVA_HOME

(Tomcat 是个Java 程序,需要JRE)

如果环境变量,我们就得到startup.bat 里去添加JRE_HOME、JAVA_HOME

JAVA_HOME:JDK的目录

JRE_HOME:JRE的目录

例:

set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_221
set JRE_HOME=C:\Program Files\Java\jdk1.8.0_221\jre

(一般情况下,JRE是在JDK目录之下的)


Tomcat is a web server also developed by the Apache Software Foundation, thus its official name is Apache Tomcat.

Apache Software Foundation (ASF)

更像是一个在服务器上运行的程序

Although we call Apache a web server, it is not a physical server, but rather a software that runs on a server. Its job is to establish a connection between a server and the browsers of website visitors (Firefox, Google Chrome, Safari, etc.) while delivering files back and forth between them (client-server structure). Apache is a cross-platform software, therefore it works on both Unix and Windows servers.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值