tomcat服务器
Web开发中的常见概念
- B/S系统和C/S系统
Browser/Server:浏览器 服务器 系统 ----- 网站,通过浏览器与服务器交互,不需要安装其他程序
Client/Server:客户端 服务器 系统 ----- 要求在电脑上安装一个客户端程序,如QQ、微信、迅雷、大型游戏等 - 服务器:主机+tomcat=web服务器,主机+mysql=数据库服务器
- tomcat:向外部发布web资源的服务器软件
mysql:向外发布数据存储的服务器软件 - 常用的web应用服务器软件:
1)weblogic:oracle公司的大型收费web服务器 支持全部javaEE规范
2)websphere:IBM公司的大型收费web服务器 支持全部的javaEE规范
3)Tomcat:Apache开源组织下的 开源免费的中小型的web应用服务器 支持 javaEE 中的 servlet 和 jsp规范
tomcat的目录结构
bin:脚本目录
-------启动脚本:startup.bat(Windows版) startup.sh(Linux版本)
-------停止脚本:shutdown.bat
conf:配置文件目录 (config /configuration)
-------核心配置文件:server.xml
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
-------用户权限配置文件:tomcat-users.xml
-------所有web项目默认配置文件:web.xml
lib:依赖库,tomcat运行和web项目运行中需要使用的jar包
logs:日志文件
-------localhost_access_log.*.txt tomcat记录用户访问信息,星表示时间,例如:localhost_access_log.2016-02-28.txt
temp:临时文件目录,文件夹内内容可以任意删除。
webapps:默认情况下发布WEB项目所存放的目录。
work:tomcat处理JSP的工作目录。
解决tomcat端口冲突被占用
- tomcat端口配置
- 端口冲突原因:启动了一个8080端口的tomcat,想再开启第二个
- 解决方法
1)将第二个tomcat的8080端口改成其他的,比如8081(修改server.xml中的端口)
2)关闭第一个8080端口的tomcat
如何关闭某个端口对应的服务
-
cmd下运行netstat -aov
-
找出对应端口号的PID,比如8307对应2768
-
打开任务管理器,关闭PID对应的应用服务
web应用的目录结构
- 通过eclipse创建一个叫mail的web工程,run on server后,会在本地webapps文件夹下自动新建一个mail文件夹
web.xml在servlet2.5规范中必须要有,否则会报错,在servlet3规范中可以没有
-
mail工程在tomcat服务器本地的文件夹目录结构如下
classes目录:我们写的Java代码最终都会被翻译成字节码文件xxx.class,就放在这里面
-
web项目发布到tomcat的流程
run on server后,webContent会将下面所有的文件资源都复制到本地tomcat的webapps下面一个新文件夹,这个文件夹以工程名mail来命名
localhost:8080/mail/html/index.html
注意:WEB-INF目录是受保护的,外界不能直接访问
比如访问localhost:8080/mail/WEB-INF/1.html,会报404错误
以下部分转载他人的成果
https://www.cnblogs.com/qlqwjy/p/8036091.html
tomcat logs 目录下各日志文件的含义
1.catalina.日期.log
运行bin目录下的startup.bat,logs文件下会产生catalina.2018-11-12.log日志信息
这个主要是记录tomcat启动时候的信息,和eclipse中启动服务的时候在控制台看到的信息一样。在里面可以看到启动的JVM参数以及操作系统等日志信息。
如果没有使用log4j等日志机制,系统的的错误信息与打印语句也在这个日志文件中记录。
(linux下所有的日志都在catalina.out中)
2. localhost_access_log.日期.txt
例如:localhost_access_log.2018-11-12.txt,这个是存放访问tomcat请求的所有地址以及请求的路径、时间,请求协议以及返回码等信息
127.0.0.1 - - [12/Nov/2018:10:51:38 +0800] "GET / HTTP/1.1" 200 11454
127.0.0.1 - - [12/Nov/2018:10:51:39 +0800] "GET /mail/ HTTP/1.1" 404 1041
127.0.0.1 - - [12/Nov/2018:10:53:27 +0800] "GET / HTTP/1.1" 200 11454
127.0.0.1 - - [12/Nov/2018:10:56:11 +0800] "GET / HTTP/1.1" 200 11454
127.0.0.1 - - [12/Nov/2018:10:56:12 +0800] "GET /mail/ HTTP/1.1" 404 1041
127.0.0.1 - - [12/Nov/2018:11:06:09 +0800] "GET / HTTP/1.1" 200 11454
127.0.0.1 - - [12/Nov/2018:11:06:10 +0800] "GET /mail/ HTTP/1.1" 404 1041
127.0.0.1 - - [12/Nov/2018:13:05:17 +0800] "GET / HTTP/1.1" 200 11454
127.0.0.1 - - [12/Nov/2018:13:05:20 +0800] "GET /mail/ HTTP/1.1" 404 1041
127.0.0.1 - - [12/Nov/2018:15:13:03 +0800] "GET / HTTP/1.1" 200 11454
127.0.0.1 - - [12/Nov/2018:15:13:11 +0800] "GET /mail/ HTTP/1.1" 404 1041
3. tomcat7-stderr.日期.log
例如:tomcat7-stderr.2018-11-12.log
这个是log4j的错误日志,因此在程序中要合理的捕捉异常
4. tomcat7-stdout.日期.log (类似于eclipse的控制台的信息)
这个是程序中的System语句打印的日志(包括系统抛出的异常),也终于明白了为什么一再强调不能用打印语句进行系统调试