将web应用部署到Tomcat的三种方式
Tomcat作为Servlet/JSP容器(服务器)挺不错的,开源免费,需要知道的是Tomcat是一个Web服务器,其符合Servlet/JSP规范,但是却没有实现所有JavaEE规范,所以我们还是应该规范说法,称Tomcat为一个JavaWeb服务器,而不是JavaEE服务器
我们使用IDE部署JavaWeb项目基本上都是一键完成,这是IDE给我们该来的好处,但是还是有必要了解一下部署项目的细节
要将JavaWeb应用部署到Tomcat,需要显式或隐式定定义一个Tomcat上下文。在Tomcat中,每一个Tomcat上下文都表示一个Web应用程序。所以我们也将分为隐式和显式两种方式来进行总结
显式部署
显式部署总的来说就是以目录结构的方式部署,不打包,只要项目根目录(Maven为webapp 普通项目为webRoot/webContent)有WEB-INF(WEB-INF下有classes,jar包,配置文件),有静态资源(HTML,CSS,JS ,图片等)即可。再通过一个在Tomcat中的配置文件来将我们的程序发布出来。
显式部署有两种方式:
- 在Tomcat的conf/Catalina/localhost目录下创建一个XML文件
- 在Tomcat的conf/server.xml文件中添加一个Context元素
方式一
如果决定给每一个上下文都创建一个XML文件(第一种方式),那么这文件名就很重要了,因为上下文路径就是从这个文件名的衍生得到的。例如,将一个Demo1.xml文件放在conf/Catalina/localhost目录下,那么这个应用程序的上下文路径就是Demo1,访问的URL就为:http://localhost:8080/Demo1
这个上下文文件只有一行代码:
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="d:/Demo1" reloadable="true"></Context>
这里的docBase是必须的属性,它定义了应用程序的位置。reloadable属性是可选的,如果存在并且值为true,那么一旦程序中Java类文件或者是其他资源文件有任何添加,减少或者是更新,Tomcat都可以检测到,并且重新加载该应用程序
当把上下文文件添加到Tomcat的指定目录下,Tomcat就会自动加载应用程序。当删除这个文件时,Tomcat就会自动卸载应用程序(Eclipse和Idea都是利用这种方式部署项目的,所以去Tomcat部署目录中是找不到项目根目录及资源文件的,这些文件存在于IDE项目的工作空间中)
方式二
在conf/server.xml文件中的Host标签下添加一个Context元素
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<Context path="/Demo2" docBase="d:/Demo1" reloadable="true"></Context>
</Host>
以第一种方式不同之处在于此处定义上下文需要给上下文路径定义path属性,这个path属性的值表示需要访问的项目名,访问的URL就为:http://localhost:8080/Demo2
一般来说,不建议通过server.xml来管理上下文,因为修改了Tomcat配置文件。不过,如果有多个应用程序需要测试,使用这种方式或许更为方便,因为可以在一个文件中同时管理所有的应用程序
隐式部署
方式三
隐式部署真是太方便了,非常建议使用这种方式部署项目。通过将一个war文件或者整个应用程序复制到Tomcat的webapps(Tomcat默认的部署项目位置,可以在server.xml文件中修改,但不建议修改)目录下,启动服务器之后就会解压这个war,解压到部署项目位置。(MyEclipse就是将项目根目录部署到Tomcat中,所以会在Tomcat中找到项目根目录及资源文件)
原文地址:https://www.cnblogs.com/lz2017/p/7147115.html
将web应用部署到Tomcat的三种方式的更多相关文章
- Java Web 项目发布到Tomcat中三种部署方法
第一种方法:在tomcat中的conf目录中,在server.xml中的,节点中添加: <Context path="/" docBase="E:\TOMCAT\a ...
- 转:Java Web 项目发布到Tomcat中三种部署方法
首先整理项目文件,文件内包含jsp.js等和class编译后的文件及lib包,如: 第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加: ...
- Activiti进阶(二)——部署流程资源的三种方式
转自:http://blog.csdn.net/zjx86320/article/details/50234707 流程资源可以是各种类型的文件,在启动流程或流程实例运行过程中会被读取.下面介绍常用的 ...
- tomcat部署javaweb项目的三种方式
一.将项目文件夹或war包直接拷贝到tomcat的webapps下 二.在Tomcat\conf\Catalina\localhost下建立xml文件 修改内容如下<Context path=& ...
- 部署web应用到虚拟主机的三种方式
方式一: 在 [tomcat]/conf/server.xml 文件中的<Engine>标签下的<Host>标签内部, 添加一个 <Context ...
- 在Linux安装配置Tomcat 并部署web应用 ( 三种方式 )
系统版本:centos6.5版本 java版本:1.7 一.准备工作 1.java -version 检查是否有java环境,没有则需要去安装并配置到环境变量中. 2.下载tomcat包,下载地址:h ...
- 在Tomcat中部署web项目的三种方式
搬瓦工搭建SS教程 SSR免费节点:http://www.xiaokeli.me 在这里介绍在Tomcat中部署web项目的三种方式: 1.部署解包的webapp目录 2.打包的war文件 3.Man ...
- Tomcat中部署web应用的三种方式
Tomcat中部署web应用的三种方式(静态部署) 第一种,针对war或解压后的war,最为常用的是直接操作webapp目录,将完整的war包或者web应用直接放到webapp目录下.使用 ...
- 关于tomcat部署应用的三种方式
关于tomcat部署应用虽然不是一个经常的操作,因为一旦选择了一种部署方式,我们其他的应用就会不经大脑的使用这种既定模式, 如果不使用这种部署方式,但是对于其他的部署方式不是很清楚的话,很容易抓瞎,所 ...
随机推荐
- <四则运算>第二次冲刺
这一次冲刺的主要内容是完善我们的界面,是我们的APP界面更规划更标准一点, 然后还要添加一些新算法. 距离客户的需求已经一半了. 代码正在完善中,稍后上传...
- Tomcat启动失败
前景:使用的是tomcat9.0,配置好后,使用一切正常,刷慕课跟着做练习,也一切正常.出事在于,老师为了方便直接拷之前写的一个项目,我照做了,老师改了虚拟路径了,我忘记改了,然后跑了一下项目就出毛病 ...
- Spring基础之 反射(Reflection)
1.了解Class package com.inspire.reflection.Class_api; import java.lang.reflect.Constructor; import jav ...
- JavaScript中的cookie
cookie本身没什么可介绍的,但是cookie在JavaScript中,有很多需要注意的 首先,cookie在JavaScript中,是window.document对象的一个属性,所以访问cook ...
- MYSQL CASCADE DELETE 引发的思考
MYSQL CASCADE DELETE :级联删除.这个概念还是学习Oracle时得到的. 就是主键记录删除时,相关的有外键的表里的记录,也删除. https://dev.mysql.com/doc ...
- JavaScript解决一个带验证的Form两个Submit事件(一个页面保持不动【AJAX实现】,一个页面提交并跳转)的场景
<form class="form-horizontal" action="/biz/patent/edit" method="post&quo ...
- 给kali linux2.0装一个中文输入法
没有中文输入法好痛苦啊.. 毕竟做了无限网卡,虚拟机和主机可以完完全全当两台设备使用了,所以kali还是需要一个中文输入法才方便. 由于使用的是比较新的kali版本和源,现在安装fcitx已经可以直接 ...
- 51nod蜥蜴与地下室(1498)(暴力搜索)
题意:一个数组s,再给你a,b值,除了s1和sn外,你可以攻击其他元素,你对这个元素的伤害为a,那么他两边的元素会受到b的牵连伤害,si-a,si-1-b,si+1-b: 求最小的次数,使得这个数组的 ...
- MyBatis:一对一关联查询
MyBatis从入门到放弃三:一对一关联查询 前言 简单来说在mybatis.xml中实现关联查询实在是有些麻烦,正是因为起框架本质是实现orm的半自动化. 那么mybatis实现一对一的关联查询则是 ...
- Python连接字符串用join还是+
我们先来看一下用join和+连接字符串的例子 str1 = " ".join(["hello", "world"]) str2 = &quo ...