tomcat简介
Tomcat
是一个开源、免费的Web服务器,属于轻量级web服务器,适合部署中小型、并发访问用户不是很多的web项目,是部署中小型jsp的首选。
Tomcat
和Nginx
、Apache
等Web
服务器一样,具有处理静态资源的能力,但Tomcat
处理静态HTML
的能力不如Nginx、Apache。
此外tomcat还是一个Servlet
和JSP
容器,Tomcat
的默认模式是独立的Servlet
容器。
一般情况下多用Nginx+Tomcat
,Nginx
处理静态资源,Tomcat
处理动态资源
Tomcat就是Servlet容器。
tomcat的目录结构
下载tomcat的zip压缩包,
- bin 存放启动和关闭tomcat的脚本
- conf 存放tomcat配置相关的文件,主要包括server.xml(tomcat服务器的主要配置文件)、web.xml(为部署的web应用设置默认值的文件)
- lib 存放Tomcat运行需要的jar包
- logs 存放Tomcat的日志文件
- temp 存放临时文件
- webapps web app的根目录,主要用于部署web项目。里面有几个tomcat自带的web项目,root是根项目——tomcat的控制台,127.0.0.1:8080显示的那个。
- work 存放Tomcat运行时的临时文件(主要是JSP编译出的Servlet的.java和.class文件),如在Tomcat运行时删除此目录,JSP页面将不能运行
环境变量的配置
需要设置2个环境变量:
- JAVA_HOME 值是jdk的主目录
- CATALINA_HOME 值是tomcat的主目录
注意是主目录,不是主目录下的bin目录。
设置这2个环境变量后,就可以双击startup.bat启动tomcat了。
不管是双击startup.bat启动,还是命令行下启动,都需要设置这2个环境变量。
如果要在命令行下操作(启动、关闭),还需进一步配置:
在命令行下执行命令时,操作系统会到PATH环境变量指定的路径中,找对应的程序来执行命令。
如果在PATH指定的路径下找不到对应的程序,则在命令行当前的路径下找,再找不到就提示“xxx不是内部或外部命令”。
有2种方式:
- 在PATH环境变量中添加tomcat的bin目录。此种方式在命令提示符的任意路径下都可启动、关闭tomcat。
- 先把当前路径切换到tomcat的bin目录(程序所在目录),再执行启动、关闭命令。
在命令提示符下,执行java、javac也是同样的道理。
说明:需要重启计算机,环境变量的配置才会生效。
tomcat的2种启动、关闭方式
- 双击bin下的startup.bat启动,双击shutdown.bat关闭
- 命令行下startup启动,shutdown关闭
如果tomcat启动不了,可以在命令行下启动试试。
因为命令行下启动不了会打印错误信息,有提示;双击startup.bat启动不了,啥都没有,没有提示信息。
启动tomcat后,在浏览器地址栏输入localhost:8080,或者127.0.0.1:8080,可转到tomcat服务器的控制台。
startup.bat只是tomcat的启动入口,和编程中的主类、主函数差不多,只是程序入口,调用其它模块就行了。
startup.bat实际是调用catalina.bat来完成启动的,catalina.bat负责启动,startup.bat只负责调用catalina.bat。
tomcat启动不了的常见原因
- 环境变量未配好,参考上面环境变量的配置
- 其它程序占用了8080端口
比如已经有一个启动的tomcat了、IDEA中正在使用tomcat进行调试,或者8080端口被其它程序占用。
apache使用的端口号默认是80,tomcat使用的端口号默认是8080。
如果url中未指定端口号,浏览器默认使用80端口。服务器使用的不是80端口时,我们需要手动在域名|IP地址后面指定端口号。
一个程序可以使用多个端口,但一个端口不能同时被多个程序使用。
任务管理器 -> 详细信息 -> PID ,查看8080端口是否被占用。PID,即port id,端口号。
如果端口号被占用,有2种解决方式:
- 关闭使用8080端口的其它程序:右键 -> 结束任务
- tomcat使用其它端口号:conf -> server.xml
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
将8080改为其它未使用的端口号。
访问时,浏览器地址中的端口号也要换为对应的。
tomcat用户账户配置
我们可在以下3项中查看、配置tomcat服务器,以及tomcat上的web项目:
这三项的所需的权限不同,需要在conf->tomcat-users.xml中配置:
<tomcat-users> <user username="chy" password="abcd" roles="manager-gui,admin-gui"/> </tomcat-users>
tomcat默认没有设置用户,需要我们手动添加一个用户。
roles只能使用特定的值,这些值对应权限。
解决tomcat窗口中文乱码
中文乱码原因:
windows的控制台(黑框框)默认使用gbk,tomcat的日志默认使用utf-8(tomcat会把日志输出到黑框框、log文件夹下的日志文件中)。
tomcat用utf-8编码日志,把日志输出给windows的黑框框,windows使用gbk来解码,显式日志信息,
utf-8用3个字节表示一个中文字符,gbk用2个字节表示一个中文字符,对不上,解析不了,乱码。
英文都是1个字节,能解析,正常显示。
解决方式:
conf -> logging.properties -> 搜索 java.util.logging.ConsoleHandler.encoding :
java.util.logging.ConsoleHandler.level = FINE java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter java.util.logging.ConsoleHandler.encoding = GBK
tomcat使用的是jdk自带的日志处理器。
一看到console,就知道是输出到控制台的日志,将UTF-8改为GBK,重启tomcat即可。
原文地址:https://www.cnblogs.com/chy18883701161/p/12254478.html