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就会自动卸载应用程序

方式二

在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文件中修改,但不建议修改)目录下,启动服务器就可以了

**将应用部署到Tomcat根目录的三种方法

将应用部署到Tomcat根目录的目的是可以通过“http://[ip]:[port]”直接访问应用,而不是使用“http://[ip]:[port]/[appName]”上下文路径进行访问。

方法一:(最简单直接的方法)

删除原 webapps/ROOT 目录下的所有文件,将应用下的所有文件和文件夹复制到ROOT文件夹下。

方法二:

删除原webapps/ROOT 目录下的所有文件,修改文件“conf/server.xml”,在Host节点下增加如下Context的内容配置:

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
......
<Context path="" docBase="C:/apache-tomcat-6.0.32/myapps/bc.war"></Context>
</Host>

注意:

1)path 的值设置为空;
2)应用不要放到tomcat的webapps目录下(如上述配置是放到自定义的文件夹myapps内的),否则访问时路径会有问题;
3)docBase指定到绝对路径。

如配置此设置后重启tomcat,如果docBase指向的是war文件,则会自动将war解压到 webapps/ROOT 目录;如果docBase指向的是应用已解压好的目录,如 docBase=”C:/apache-tomcat-6.0.32/myapps/bc” ,则tomcat不会生成 webapps/ROOT 目录(这种情况下,这样就可以不用删除 webapps/ROOT 目录,但 webapps/ROOT 目录内的内容是无法访问的),访问时将直接使用docBase指定的目录。

方法三:

与方法二类似,但不是修改全局配置文件“conf/server.xml,而是在“conf/Catalina/localhost”目录下增加新的文件”ROOT.xml”(注意大小写),文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<Context path="" docBase="C:/apache-tomcat-6.0.32/myapps/bc.war" reloadable="true">
</Context>

注意:

Tomcat5.0以下版本在d:/Tomcat/conf/Catalina/localhost目录下会自动生成了一个ROOT.xml文件,但是5.0以上版本已不再生成此文件。

参考资料:
[1].http://www.linuxidc.com/Linux/2011-12/48939.htm
[2].http://nj-apple-tree.iteye.com/blog/1635953

将Java web应用部署到Tomcat 及部署到Tomcat根目录 的三种方式的更多相关文章

  1. java web中日期Date类型在页面中格式化显示的三种方式

    一般我们经常需要在将服务器端的Date类型,传到页面进行显示,这就涉及到一个如何格式化显示Date类型的问题,一般我们有三种方式进行: 1)在服务端使用SimpleDateFormat等类格式化成字符 ...

  2. java 学习笔记 读取配置文件的三种方式

    package com.itheima.servlet.cfg; import java.io.FileInputStream; import java.io.FileNotFoundExceptio ...

  3. Java反射学习-2 - 获取Class对象的三种方式

    package cn.tx.reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import ...

  4. 在Linux安装配置Tomcat 并部署web应用 ( 三种方式 )

    系统版本:centos6.5版本 java版本:1.7 一.准备工作 1.java -version 检查是否有java环境,没有则需要去安装并配置到环境变量中. 2.下载tomcat包,下载地址:h ...

  5. 在Tomcat中部署web项目的三种方式

    搬瓦工搭建SS教程 SSR免费节点:http://www.xiaokeli.me 在这里介绍在Tomcat中部署web项目的三种方式: 1.部署解包的webapp目录 2.打包的war文件 3.Man ...

  6. Tomcat中部署web应用的三种方式

    Tomcat中部署web应用的三种方式(静态部署)       第一种,针对war或解压后的war,最为常用的是直接操作webapp目录,将完整的war包或者web应用直接放到webapp目录下.使用 ...

  7. Tomcat,eclipse热部署的三种方式

    热部署是指在你修改项目BUG的时候对JSP或JAVA类进行了修改在不重启WEB服务器前提下能让修改生效.但是对配置文件的修改除外! 怎么说呢?热部署其实用的算少了,热部署怎么说都是个人部署的,大点的公 ...

  8. Tomcat热部署的三种方式

    原文地址:https://blog.csdn.net/nlwangxin/article/details/49734659热部署是指在你修改项目BUG的时候对JSP或JAVA类进行了修改在不重启WEB ...

  9. #Eclipse web工程 部署 三种方式 3

    Eclipse web工程 部署 三种方式 3.热部署 在Eclipse中,实现 修改一个.java文件或者.jsp文件甚至是配置文件,不需要重启WEB服务器的前提下让修改生效,实现tomcat自动加 ...

随机推荐

  1. BZOJ.4293.[PA2015]Siano(线段树)

    题目链接 \(Description\) 有一片n亩的土地,要在这上面种草. 在每一亩土地上都种植了一种独一无二的草,其中,第\(i\)亩土地的草每天会长高\(a[i]\)厘米. 一共会进行\(m\) ...

  2. git 分支合并冲突

    准备新的feature1分支,继续我们的新分支开发 [root@node1 git]# git checkout -b feature1 D git/LICENSE.txt Switched to a ...

  3. javascript中new Date()的浏览器兼容性问题

    正确的做法: var time1 = (timestart+' 00:00:00').toString(); var time2 = (timeend+' 23:59:59').toString(); ...

  4. Android典型界面设计(4)——使用ActionBar+Fragment实现tab切换

    一.问题描述 之前我们使用ViewPager+Fragment区域内头部导航,在Android 3.0之后Google增加了新的ActionBar,可方便的实现屏幕Head部区域的 设计如返回键.标题 ...

  5. eclipse-在编译项目时js特别慢的问题

    eclipse在编译项目时,当项目中导入了很多第三方js库时,eclipse在验证js时会消耗大量的时间,而我们却完全不用考虑那些js是否有错误 步骤: 去除eclipse的JS验证: 1.将wind ...

  6. linux远程开启不挂起的服务

    解决Linux关闭终端(关闭SSH等)后运行的程序自动停止 λ nohup --help Usage: nohup COMMAND [ARG]... or: nohup OPTION Run COMM ...

  7. MySql之视图的使用

    一:视图是什么 视图相当于一个窗口,一个基于具体数据库表.定义了相关查询规则 的窗口. 建立视图,可以重用一些复杂的查询语句.    建立视图,相当于定义了一系列查询操作:从视图查询数据,相当于在调用 ...

  8. Redis集群搭建(转自一菲聪天的“Windows下搭建Redis集群”)

    配置Redis参考:http://blog.csdn.net/zsg88/article/details/73715947 使用Ruby配置集群参考:https://www.cnblogs.com/t ...

  9. 《Redis入门指南(第2版)》读后感

    今天刚刚将此书看完,现在还能记住一些内容,还有一些感慨感想,正好又想写点什么了就随便记录一下吧!也许灵感明天就消失了呢? 首先觉得作者非常的厉害,年纪轻轻的就写出了这么一本非常不错的书籍! 然后就是对 ...

  10. R语言手册

    在R的官方教程里是这么给R下注解的:一个数据分析和图形显示的程序设计环境(A system for data analysis and visualization which is built bas ...