目录
一、关于服务器
服务器可以说是一台特殊的计算机(相比普通计算机运行更快、负载更高、价格更贵),也可以说是用于部署
网站的应用运行更快、价格更贵,这个通俗易懂,但是服务器负载是指什么?
服务器负载是指当前该服务器所承担的数据处理情况,反映了该服务器当前在线人数!
Tomcat是一款什么类型服务器?
Tomcat就是一款web服务器,也可以说是应用服务器,其实本质就是一个软件,一个应用!
这类 web/应用服务器的作用就是发布我们的应用(工程),让用户能够通过浏览器访问我们的应用!
二、常见应用服务器
服务器名称 | 说明 |
weblogic | 实现了javaEE规范,重量级服务器,又称为javaEE容器! |
websphereAS | 实现了javaEE规范,重量级服务器! |
JBOSSAS | 实现了JavaEE规范,重量级服务器,免费! |
Tomcat | 实现了jsp/servlet规范,是一个轻量级服务器,开源免费!是开发和调试Servlet、JSP 程序的首选。 |
三、Tomcat扮演的角色
1. 简介
Tomcat的作用是作为Web服务器部署Web项目,从而让客户端能够访问,
在这个过程中它扮演两个角色: Web服务器和Servlet容器
2. Web服务器
3. Servlet容器
Tomcat充当Web服务器,主要用来部署Web项目,从而让客户端能够访问,
Tomcat充当Servlet容器,它可以将从web页面接收请求后再将这些请求重定向到Servlet对象中,
然后将动态生成的结果返回到正确的位置中
四、Tomcat下载与安装
Tomcat官网下载地址:Apache Tomcat® - Welcome!
1. 下载安装后解压Tomcat
因为Tomcat是Java代码编写,所以必须要配置JAVA_HOME和java环境变量之后才能运行,可以通过下面的命
令检测:
C:\Users\Administrator>java -version
java version "1.8.0_141"
Java(TM) SE Runtime Environment (build 1.8.0_141-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)
C:\Users\Administrator>echo %JAVA_HOME%
D:\software\Java
C:\Users\Administrator>echo %PATH%
D:\software\xftp;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDO
WS\System32\WindowsPo
werShell\v1.0;D:\software\Java\bin;D:\software\apache-maven-
3.5.4\bin;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;
将Tomcat压缩包解压到一个非中文无空格的目录下,以避免后续出现没必要的错误!
2. Tomcat目录结构详解
bin:专门用来存放Tomcat服务器的可执行程序
conf:专门用来存放Tocmat服务器的配置文件
lib:专门用来存放Tomcat服务器的jar包
logs:专门用来存放Tomcat服务器运行时输出的日记信息
temp:专门用来存放Tomcdat运行时产生的临时数据
webapps:专门用来存放部署的Web工程
work:Tomcat工作时的目录,用来存放Tomcat运行时jsp翻译为Servlet的源码,和Session钝化的目录
3. 配置Tomcat环境变量
3.1. 配置Tomcat环境变量前先配置JDK环境变量
步骤一:首先右击我的电脑(此电脑),点击属性,或者也可以从控制面板上打开,如下图,找到系统点击高级
系统设置;
步骤二:然后进入系统属性界面,点击右下角的环境变量
步骤三:进入环境变量界面后找到最下方的系统变量,点击新建,将JAVA_HOME和JRE_HOME分别配置好相
应的值,它们各自的值取决于它们在你电脑上的位置,找到再复制粘贴即可,默认C盘
常见的JAVA_HOME配置错误有以下几种情况:
一、JAVA_HOME必须全大写
二、JAVA_HOME中间必须是下划线,不是减号
三、JAVA_HOME配置的路径只需要配置到jdk的安装目录即可,不需要带上bin目录
3.2. 配置 tomcat环境变量
步骤一:新建系统变量CATALINA_HOME,值就是Tomcat安装解压后的目录;:
步骤二:然后在环境变量栏上选中Path点击编辑;
步骤三:在编辑环境变量界面中选择新建如图中所示的路径,再点击确定即可完成Tomcat环境变量的配置
五、启动Tomcat并访问首页
运行Tomcat解压后根目录下\bin\startup.bat即可启动Tomcat服务器,然后打开谷歌浏览器,
在地址栏输入“http://localhost:8080”就可以访问Tomcat了
六、Tomcat入门问题
1. 启动和停止
进入到Tomcat服务器的二进制目录(即bin目录)
1.1. Windows/Linux 启动
startup.bat / startup.sh
1.2. Windows/Linux 停止
shutdown.bat / shutdown.sh
注意:其中.bat文件是针对windows系统的运行程序,.sh文件时针对Linux系统的运行程序
2. 启动问题
2.1. 启动一闪而过
可能原因:没有配置环境变量
解决办法:配置上JAVA_HOME环境变量
2.2. 端口被占用
问题所在:Address already in use : JVM_Bind
解决办法:找到占用该端口的应用
- 进程不重要:使用cmd命令:netstat -a -o 查看 pid 在任务管理器中结束占用端口的进程!
- 进程很重要:修改自己的端口号,修改的是Tomcat目录下\conf\server.xml中的配置。
2.3. 启动产生很多异常,但能正常启动
原因:Tomcat中部署着很多项目,每次启动这些项目都会启动,而这些项目中有启动报异常的。
解决办法:
- 能找到报异常的项目,就把它从发布目录中移除!
- 能确定报异常的项目,就重新解压一个新的Tomcat!
2.4. 启动控制台乱码问题
找到 D:\development\JavaEE\tomcat\apache-tomcat-9.0.69\conf\logging.properties
文件进行修改编码配置!
2.5. Tomcat端口问题
Tomcat安装目录下的conf目录中,可以看到一个server.xml文件,这个xml文件中就配置了Tomcat的端口号
……
<!-- 第22行 -->
<Server port="8005" shutdown="SHUTDOWN">
……
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
……
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
三个位置共定义了3个端口号,Tom
cat启动后,这个三个端口号都会被占用!
2.6. 其它问题
例如:启动产生异常,但是不能正常启动,此时就需要解压一个新的Tomcat启动,来确定是系统问题,还是
Tomcat的问题。
所以,此时就需要具体问题,具体分析,然后再对症解决!
3. Tomcat 三种部署方式
3.1. 隐式部署
把项目war包拷贝到webapps目录下,Tomcat启动会自动解压webapps目录下war包
3.2. 显式部署:两种
方式一:
在server.xml配置文件的host标签加入Context标签配置
在Host标签下添加如下的配置
<Context path="/hello"docBase="C:/demo/demo1"reloadable="true" >
</Context>
方式二:
在conf/Catalina/localhost中创建xml文档,访问的路径为文件名称
创建demo2.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="C:/demo/demo1" reloadable="true"></Context>
注意:这里已经告知三种方式的配置思路,具体百度去学就行。
4. Tomcat配置虚拟主机
步骤一:找到tomcat/conf/server.xml文件
步骤二:编辑server.xml配置文件,找到<Engine>标签,对其设置
步骤三:修改hosts文件,将其拷贝出来修改(hosts文件位置:C:\Windows\System32\drivers\etc)
步骤四:重启tomcat
步骤五:验证结果
5. Tomcat默认首页的配置
步骤一:找到tomcat的安装目录,打开其中的conf目录!
步骤二:使用文本编辑器,打开conf目录下的server.xml文件
步骤三:找到其中的<Host>签,在其中添加如下内容:
<Context path="" docBase="testDemo" />
这里的path代表浏览器发出是虚拟目录请求,我们需要的是配置首页,所有填""就行。
这里的docBase是虚拟目录对应的真实目录,这里的testDemo即对应webApps目录下的testDemo文件夹,
这里一定要不要写了/testDemo
步骤四:在testDemo目录下添加index.html文件,在该文件就会变成Tomcat的默认首页!
6. Web应用默认欢迎列表的配置
首先要明确的是,配置默认主页是针对应用说的,是应用的默认主页!
在应用的web.xml中配置:
<welcome-file-list>
<welcome-file>默认主页</welcome-file>
</welcome-file-list>
例如:
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
7. Tomcat默认访问时的注意点
ROOT的工程的访问,以及默认index.html页面的访问!
- 当我们在浏览器地址栏中输入访问地址如下:http://ip:port/:没有工程名的时候,默认访问的是ROOT
工程
- 当我们在浏览器地址栏中输入的访问地址如下:http://ip:port/工程名/:没有资源名,默认访问
index.html页面,配置了欢迎列表页面,就按照欢迎列表页面依次进行访问
8. 打包Web工程
编写完Web项目之后,通常是将Web项目打包成war包,然后将war包放入Tomcat的webapps目录中即可
在Tomcat启动过程中,会将war包进行解压,然后运行解压后的项目(这就是前面三种部署方式中的隐式部
署)在浏览器访问我们刚刚部署的项目"http://localhost:8080/项目文件夹名/要访问的文件名"
七、IDEA集成Tomcat
1. 编辑Tomcat实例
2. 配置Tomcat实例
3. 部署项目
4. 部署好之后的效果
5. 启动服务器
6. IDEA运行时的界面布局
八、基于Maven的Web项目结构
Web项目的结构分为:开发中的项目和开发完可以部署的Web项目,这两种项目的结构是不一样的!
1. Maven Web项目结构: 开发中的项目
2. 开发完成部署的Web项目
注意:
- 开发中的项目通过执行Maven打包命令package,可以获取到部署的Web项目目录
- 编译后的Java字节码文件和resources的资源文件,会被放到WEB-INF下的classes目录下
- pom.xml中依赖坐标对应的jar包,会被放入WEB-INF下的lib目录下
动态工程目录结构
目录或文件名 | 功能 |
src目录 | 存放Java源文件 |
web目录 | 存放Web开发相关资源 |
web/WEB-INF目录 | 存放web.xml文件、classes目录、lib目录 |
web/WEB-INF/web.xml文件 | 别名:部署描述符deployment descriptor,作用:Web工程的核心配置文件 |
web/WEB-INF/classes目录 | 存放编译得到的*.class字节码文件 |
web/WEB-INF/lib目录 | 存放第三方jar包 |
3. 基于Maven的Web项目创建
基于 Maven 创建Web项目,创建方式有两种:使用骨架 和 不使用骨架
3.1. 使用骨架创建
步骤一:创建Maven项目
步骤二:选择使用Web项目骨架
步骤三:输入Maven项目坐标创建项目
步骤四:确认Maven相关的配置信息后,完成项目创建
步骤五:删除pom.xml中多余内容
步骤六:补齐Maven Web项目缺失的目录结构
3.2. 不使用骨架创建
步骤一:创建Maven项目
步骤二:选择不使用Web项目骨架
步骤三:输入Maven项目坐标创建项目
步骤四:在pom.xml设置打包方式为war
步骤五:补齐Maven Web项目缺失webapp的目录结构
步骤六:补齐Maven Web项目缺失WEB-INF/web.xml的目录结构
九、Tomcat Maven插件
在IDEA中使用本地Tomcat进行项目部署,相对来说步骤比较繁琐,我们还可以用一种更简便的方式来替换
它,那就是直接使用Maven中的Tomcat插件来部署项目,
具体的实现步骤,只需要两步,分别是:
步骤一:在pom.xml中添加Tomcat插件
<build>
<plugins>
<!--Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</build>
步骤二:使用Maven Helper插件快速启动项目,选中项目,右键-->Run Maven --> tomcat7:run
注意:
如果选中项目并右键点击后,看不到Run Maven和Debug Maven,这个时候就需要在IDEA中下载Maven Helper插件,
具体的操作方式为: File --> Settings --> Plugins --> Maven Helper ---> Install,
安装完后按照提示重启IDEA,就可以看到了。
Maven Tomcat插件目前只有Tomcat7版本,没有更高的版本可以使用
(如果想要配置更高版本的Tomcat,需要另外配置)
使用Maven Tomcat插件,要想修改Tomcat的端口和访问路径,可以直接修改pom.xml
<build>
<plugins>
<!--Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>80</port><!--访问端口号 -->
<!--项目访问路径配置
未配置访问路径: http://localhost:80/tomcat-demo2/a.html
配置/后访问路径: http://localhost:80/a.html
如果配置成 /hello,访问路径会变成什么?
答案: http://localhost:80/hello/a.html
-->
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
十、在IDEA中重新部署运行
1. 为什么需要重新部署?
对于已经运行过的Web项目,如果我们增加了目录和文件,那么部署目录有可能不会自动同步过来,
从而造成实际运行的效果和我们期望的不同,
如下图中,我们在工程目录已经新增了images目录和两个图片:
但是在部署目录并没有出现:
哪怕我们执行了重新部署也没有起作用
2. 怎么重新部署
2.1. 清理部署目录
2.2. 构建
2.3. 效果
十一、导入现有的Module
直接导入即可
十二、IDEA整合Tomcat:热部署详解
On Update action/On frame deactivation
1. 应用场景
一般服务器(比如:tomcat,jboss等)启动以后,我们还需要进一步修改java代码,或者是jsp代码,
一般来说,改完重启以后才会生效,但如果配置了服务器的热部署,热部署,就可以改完代码后立即生效,而
不是重启服务器再生效,这样就会节省大量时间!
2. 两个选项
On Update action : 顾名思义,当代码改变的时候,需要IDEA为你做什么;
On Frame deactivation : 当失去焦点(比如你最小化了IDEA窗口),需要IDEA为你做什么
3. 演示模板
下面以tomcat为例,并且使用 war exploded 方式部署
3.1. On Update action
On Update action里面有四个选项(一般选Update classes and resources)
Update resources:如果发现有更新,而且更新的是资源文件( *.jsp, *.xml等,不包括java文件),就会立
刻生效
Update classes and resources: 如果发现有更新,这个是同时包含java文件和资源文件的,就会立刻生效
在运行模式下,修改java文件时不会立刻生效的;
在debug模式下,修改java文件时可以立刻生效的
当然,两种运行模式下,修改resources资源文件都是可以立刻生效的!
Redploy: 重新部署,只是把原来的war删掉,不重启服务器
Restart :重启服务器
3.2. On Frame deactivation
Do nothing : 不做任何事 (一般推荐这个,因为失去焦点的几率太大)
Update resources : 失去焦点后,修改的resources文件都会立刻生效
Update classes and resources : 失去焦点后,修改的java,resources文件都会立刻生效
和On update action中的Update classes and resources一样,
也就是运行模式修改的java文件不会生效,debug模式修改的java文件会立刻生效。
3.3. 细节问题
启动 tomcat 用debug启动(或者快捷键Shift+F9) 启动,
run启动服务器–有热部署,但不立即生效