文章目录
一、Tomcat的概念
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器, 在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
决窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。
由于 Tomcat 是由 Java 语言实现的,因此需要运行在 Java 虚拟机上,所以使用前要先安装 JDK,以提供运行环境。
二、Tomcat的下载与安装
2.1windows系统下载安装Tomcat
Tomcat的官网: https://tomcat.apache.org/
注意: 路径上,不要有中文、空格、特殊字符
打开 Tomcat 文件夹,进入 bin
目录,双击 startup.bat
就可以运行 Tomcat 服务器
注意: 由于 CMD 默认的编码方式是 GBK,而 Tomcat 的默认编码方式是 UTF-8,因此在双击 startup.bat 启动 Tomcat 时,CMD 上显示的会是乱码。但该问题可以不处理,因为并不需要通过 CMD 来查看 Tomcat 的启动状况及其它情况,可以使用其它方式。
2.2Linux系统下载安装Tomcat
首先切换到 opt 目录(opt 是给主机额外安装软件(安装包)所存放的目录)
cd /opt
通过 wget 方式来下载 Tomcat 的安装包
wget https://mirrors.cnnic.cn/apache/tomcat/tomcat-8/v8.5.73/bin/apache-tomcat-8.5.73.tar.gz
将下载的 Tomcat 压缩包进行解压
tar xzf apache-tomcat-8.5.73.tar.gz
之后通过 startup.sh 运行 Tomcat 服务器
/opt/apache-tomcat-8.5.73/bin/startup.sh
2.3测试Tomcat
Tomcat 的默认端口号为 8080
(可以在 conf 目录中server.xml
手动修改)
2.4Tomcat目录结构
-
bin: 存放各种启动、关闭和其它程序的脚本(.sh 文件是针对 Unix 系统使用的,.bat 文件是针对 Windows 系统使用的,* 相同的程序的功能是一样的)
-
conf: 配置文件及相关数据文件存放的目录,如存放 server.xml、tomcat-users.xml、web.xml
-
lib: Tomcat 使用的库文件存放的目录,如存放 Servlet 规范的 API
-
logs: 默认日志文件存放的目录,如存放访问日志(可以通过 server.xml 文件将日志配置到其它目录)
-
temp: 临时文件的工作目录,如上传大文件时的缓存数据会存储在这里
-
webapps: 存放 web 应用、用来程序部署的目录(可以通过 server.xml 文件配置)
-
work: Tomcat 的工作目录,如存放 JSP 编译后的类文件
2.5Web应用部署目录结构
部署应用程序时,一般会将其打包成一个 war
包,然后放到 Tomcat 的应用程序部署目录 webapps 中。
/
: 表示 web 应用程序的根目录,可以存放 HTML、JSP 页面以及其他客户端浏览器必须可见的其他文件(如 JS、CSS、图像文件)。在较大的应用程序中,还可以选择将这些文件划分为子目录层次结构/WEB-INF
: 表示 web 应用程序的所有私有资源目录,用户浏览器不可能访问到的,通常web.xml
和context.xml
均放置于此目录。/WEB-INF/web.xml
: 表示 web 应用程序的私有的部署描述符,描述组成应用程序的servlet
和其他组件(如 filter),以及相关初始化参数和容器管理的安全性约束。/WEB-INF/classes
: 表示 web 应用程序自有的 Java 程序类文件及相关资源存放目录。/WEB-INF/lib
: 表示 web 应用程序自有的JAR
文件,其中包含应用程序所需的 Java 类文件及相关资源(如第三方类库或 JDBC 驱动程序)
三、配置Tomcat的环境变量
我的电脑->属性->高级->环境变量->新建系统变量
CATALINA_HOME
E:\tomcat\apache-tomcat-8.5.56
然后系统变量选择Path
,新建变量:%CATALINA_HOME%\bin
测试:
按 win 加 r 键输入cmd 再输入 startup
,成功如下:
此时访问 http://localhost:8080/
会出现Tomcat默认页面
四、IDEA配置启动Tomcat的web项目
4.1新建一个java项目
4.2Edit Configurations
打开Edit Configurations,添加Tomcat服务器(local)
编辑Tomcat服务器(Local)
右击项目,添加框架支持
勾选好 web应用程序
点击确定
此时可以点击 file —>Project Structure 可以看到模块的 web配置
注意这个路径的指向
添加完web应用程序后 IDEA会自动帮我们添加一个Artifacts
,没有创建的话,自己点击加号创建web应用程序-基于模块。
然后,点击Edit Configurations,选择deployment,添加Artifacts
设置application context 为 /
,点击Apply,ok完成。
4.3启动Tomcat,测试
如图表示成功
五、Tomcat问题
5.1启动Tomcat占用内存过大
解决方案:打开Edit Configuration
,通过修改VM options
,如下:
VM options :
-server
-Xms128m
-Xmx256m
-XX:NewSize=128m
-XX:MaxNewSize=128m
-XX:PermSize=128m
-XX:MaxPermSize=128m
参数说明:
参数 | 说明 |
---|---|
-Xms768m | 设置JVM初始堆内存为768m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 |
-Xmx768m | 设置JVM最大堆内存为768m。 |
-Xss128k | 设置每个线程的栈大小。JDK5.0以后每个线程栈大小为1M,之前每个线程栈大小为256K。应当根据应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。需要注意的是:当这个值被设置的较大(例如>2MB)时将会在很大程度上降低系统的性能。 |
-Xmn2g | 设置年轻代大小为2G。在整个堆内存大小确定的情况下,增大年轻代将会减小年老代,反之亦然。此值关系到JVM垃圾回收,对系统性能影响较大,官方推荐配置为整个堆大小的3/8。 |
-XX:NewSize=1024m | 设置年轻代初始值为1024M。 |
-XX:MaxNewSize=1024m | 设置年轻代最大值为1024M。 |
-XX:PermSize=256m | 设置持久代初始值为256M。 |
-XX:MaxPermSize=256m | 设置持久代最大值为256M。 |
-XX:NewRatio=4 | 设置年轻代(包括1个Eden和2个Survivor区)与年老代的比值。表示年轻代比年老代为1:4。 |
-XX:SurvivorRatio=4 | 设置年轻代中Eden区与Survivor区的比值。表示2个Survivor区(JVM堆内存年轻代中默认有2个大小相等的Survivor区)与1个Eden区的比值为2:4,即1个Survivor区占整个年轻代大小的1/6。 |
-XX:MaxTenuringThreshold=7 | 表示一个对象如果在Survivor区(救助空间)移动了7次还没有被垃圾回收就进入年老代。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代,对于需要大量常驻内存的应用,这样做可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象在年轻代存活时间,增加对象在年轻代被垃圾回收的概率,减少Full GC的频率,这样做可以在某种程度上提高服务稳定性。 |
-client | 设置JVM使用Client模式,特点是启动速度比较快,但运行时性能和内存管理效率不高,通常用于客户端应用程序或开发调试;在32位环境下直接运行Java程序默认启用该模式。 |
-server | 设置JVM使Server模式,特点是启动速度比较慢,但运行时性能和内存管理效率很高,适用于生产环境。在具有64位能力的JDK环境下默认启用该模式。 |
非标准参数(-X) | 默认JVM实现这些参数的功能,但是并不保证所有JVM实现都满足,且不保证向后兼容; |
非稳定参数(-XX) | 此类参数各个JVM实现会有所不同,将来可能会不被支持,需要慎重使用; |
六、问题
6.1webapp文件没有小蓝点
idea打开【File】->【Project Settings】 -> 【Modules】-> 添加web
【Project Settings】 -> 【+】-> 添加
然后:
6.2另一种方式启动Tomcat
settings安装Maven Helper插件:
Edit Configurations编辑Maven配置启动Tomcat。