Hello Tomcat(What)
Tomcat是常见的免费的web服务器.
Tomcat 这个名字的来历,Tomcat是一种野外的猫科动物,不依赖人类,独立生活。 Tomcat的作者,取这个名字的初衷是希望,这一款服务器可以自力更生,自给自足,像Tomcat这样一种野生动物一般,不依赖其他插件,而可以独立达到提供web 服务的效果。
- (安装tomcat)首先右边下载 tomcat.rar
解压在d:盘,随便你解压在哪里,一般解压在一个好找的地方,因为后续的学习需要频繁的启动它
然后运行批处理文件: D:/tomcat/bin/startup.bat
最后如果你看到Server startup in xxx ms,就表明启动成功了。
注 Tomcat启动之后,不要关闭。。。。 关闭了就不能访问了。。。。- (部署tomcat)部署一个功能完备的web应用 有很多种方式,但是如果只是部署一个test.html,很简单
把test.html 复制到 D:\tomcat\webapps\ROOT 目录下
就可以通过 http://127.0.0.1:8080/test.html 访问了- (端口号解释)8080是tomcat默认使用的端口号
平时上网的网址,比如 http://12306.com/index.html 是没有端口号的
如何让tomcat也做成这样呢?tomcat的端口配置相关信息在 server.xml中
server.xml 记录了非常多的tomcat配置信息,其中就包括端口
用记事本打开 D:\tomcat\conf\server.xml
查询 ctrl+f,输入8080
可以找到两个8080,一个在注释中,不用理会。 另一个是;这就表明使用的是8080端口,把它修改为80,保存。
接着,必须重启tomcat
重启tomcat...就是先关掉(点击黑屏幕右上角的xx),再运行startup.bat...
tomcat问题排查(How)
列罗出了Tomcat常见的问题,如不能启动,屏幕一闪而过,启动之后,访问总是出现404等等常见问题。
以下排查手段都是针对通过startup.bat 独立方式启动的Tomcat,集成开发环境IDE(IDEA,ECLIPSE,MYECLIPSE等) 下的Tomcat启动不在此知识点讨论范围之内。
1、现象:点击startup.bat之后,屏幕一闪而过
检验:如图所示, 首先通过cmd命令进入控制台,然后切换到对应的目录执行startup命令,得到JRE_HOME environment .... 这么个提示,就表示JAVA_HOME环境变量没有设置或CATALINA_HOME环境变量设置错误。
2、现象:Tomcat可以成功启动,但是就是不能访问自己配置的web应用,老是提示404错误
检验:如图所示, 在环境变量里,CATALINA_HOME设置在了另一个合法的tomcat目录上,所以无论运行哪个startup.bat,都会导致这个d:/tomcatxxxx目录下的程序被启动,而不是你期望的那个。
分析:默认的Tomcat会优先根据环境变量中的CATALINA_HOME来定位目录,并运行。
解决:
在环境变量中删除CATALINA_HOME,CATALINA_BASE的配置,记得不仅要检查环境变量,还要检查用户变量。
3、现象:屏幕一闪而过,或者不会关闭,但是提示大量错误,其中会看到如图所示的Address already in use: JVM_Bind <null>:80,即表示端口被占用了。
检验:如果是这个错误,在TOMCAT目录下的logs目录里,会有一个日志文件:catalina.yyyy-mm-dd.log(当天时间),在这个日志文件里会记载一样的错误:Address already in use: JVM_Bind <null>:80。即表明80端口被占用了。
分析:端口是独占式的,一旦一个程序占用了这个端口,其他程序就不能够再去占用它了。而80端口,有可能是被已经存在的Tomcat占用了,也有可能是被其他不知名的软件占用了,比如Apache,IIS,Oracle等等。
4、现象:404错误
检验:打开tomcat/logs目录里的localhost.yyyy-mm-dd.log文件,发现大量的报错信息。
分析:当server.xml, web.xml配置错误的时候,当前web应用就会部署失败,并且会将错误信息输出到localhost.yyyy-mm-dd.log文件中。
解决: 要在localhost.yyyy-mm-dd.log文件中看提示什么错误,有可能是配置的context目录不存在,有可能是多了一个>符号,具体问题,具体分析了。
现象:404错误,明明有文件,但是就是不能访问。
检验:这个严格地说,也是配置失败,但是tomcat不会大量报错,只会偷偷地来这么一句: startup failed due to previous errors。
分析:过滤器启动失败就会报这个错。
解决:同样的,过滤器启动失败原因也是多种多样,好在它都会把具体错误信息输出到localhost.yyyy-mm-dd.log,这样打开localhost.yyyy-mm-dd.log根据实际情况分析,就可以较快定位问题所在了。
现象:404错误,明明有文件,但是就是不能访问。
检验:在命令行中运行java -version 检查一下当前java的版本
分析:当部署的web应用中的类是由高版本JDK编译生成,而当前tomcat运行所使用的JDK又是低版本的话,就会报出如图所示的错误:UnsupportedClassVersionError,进而导致web应用启动失败。
部署(to do)
下载好j2ee.rar后,解压出来,假设解压到如下目录:
E:\download\j2ee
接着用记事本把 前面下载的 tomcat8080 对应的 conf 目录下的 server.xml文件打开,复制本来被注释掉的
<!--
<Context path="/" docBase="E:\\project\\j2ee\\web" debug="0" reloadable="false" />
-->
如图所示,把e:\\ project\\j2ee\\web 修改为 e:\\ download\\j2ee\\web。
如果没有把握就下载右上角的server.xml,并覆盖server.xml。
注: 文件路径是双斜杠哦,不是单斜杠
重启:关闭tomcat, 并重新运行startup.bat。 然后输入如下网址,看到如图所示的截图,即表示部署成功了。