一、直接将web项目文件件拷贝到webapps目录中

  这是最常用的方式,Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用。如果你想要修改这个默认目录,可以在conf下的server.xml文件里修改Host标签里的appBase值。

  这个方法实际上和在IDE开发环境里部署项目是一样的。

  用此方法的访问路径为http://localhost:8080/webname

二、修改Server.xml文件

  在conf下的server.xml文件里找到Host标签,在里面添加如下代码:

1 <Context path="/jfinal_demo" docBase="F:\work\jfinal_demo\WebRoot"  reloadable ="true" debug="0" privileged="true">
2 </Context>

  path:是访问时的根地址,表示访问的路径,可以自定义,如上述例子中,访问该应用程序地址如下:http://localhost:8080/jfinal_demo;

  docbase:表示应用程序的路径,docBase可以使用绝对路径,也可以使用相对路径,相对路径相对于webapps ;

  reloadable:表示可以在运行时在classes与lib文件夹下自动加载类包。这个属性在开发阶段通常都设为true,方便开发;在发布阶段应该设置为false,提高应用程序的访问速度 ;

  其他属性参见相关文档。

三、 在conf\Catalina\localhost 目录下添加xml配置文件

  新建名为jfinal_demo.xml文件,文件内容配置如下:

1 <Context path="/jfinal_demo" docBase="F:\work\jfinal_demo\WebRoot"  reloadable ="true" debug="0" privileged="true">
2 </Context>

  Catalina\localhost目录tomcat下载下来默认是没有的,首次启动会自动创建,也可以手动创建;

配置中可以去掉path属性,因为访问项目时的根路径只取决于XML文件的名称,如上述例子中,访问该应用程序地址如下:http://localhost:8080/jfinal_demo ;

推荐使用第三种方式,因为不需要修改tomcat默认配置,对Tomcat的侵入性最小,并且如果想取消部署,直接删除xml配置文件即可。

四、tomcat配置中的 autodeploy 和reloadable的区别是什么?

  1.替换WEB-INF/lib目录中的jar文件或WEB-INF/classes目录中的class文件时,reloadable="true"会让修改生效(但代价不小),该选项适合调试。

  2.在webapps目录中增加新的目录、war文件、修改WEB-INF/web.xmlautoDeploy="true"会新建或重新部署应用,该选项方便部署。

五、怎么去除应用名访问,以及server.xml文件中Context节点的path属性详解

  详解path之前讨论一下绝对路径:

  绝对路径在服务端和浏览器端区别:

  1) 服务端(jsp中java代码,servlet,jsp标签中的路径:因为jsp标签是在服务端解析的):绝对路径的根地址(及 / 开头代表的)是localhost:8080/webApp(应用部署名),转发是服务器端,所以绝对路径不用写应用名,绝对路径为:/ (开头) + 具体的路径;

  2) 浏览器端(jsp页面:引入css,js,图片等等,js中的绝对路径(例如ajax中的url也属于浏览器端)):绝对路径的根地址(及 / 开头代表的)是localhost:8080没有到应用名,所以浏览器端写绝对路径需要:/(开头)+应用名 + / +具体的路径,如果使用request.getContextPath()获得的应用名为:/+应用名,第一个斜杠就不用写了,从第二个 / 开始写;链接(a标签,图片img标签),表单提交,重定向都属于浏览器端,所以这些url的绝对路径为 (/  + 应用名)开始写,也就是request.getContextPath() + / +具体的路径;

springmvc中@RequestMapping注解中的url可以以 '/' 开头,则是绝对路径,也可以不要 '/' 则是相对路径,推荐使用绝对路径;

  下面讲解path属性:

  1)tomcat 不要应用名访问设置(server.xml修改<Host>中的子节点)

  <Context docBase="D:\tool\apache-tomcat-6.0.48\apache-tomcat-6.0.48\webapps\newWap" path="">
  path 设置为 “” 就不需要应用名可以访问,当然有应用名newWap也可以访问。
  如果path="newWeiXin",则既可以通过newWap访问,也可以通过newWeiXin访问。
  path相当于设置了另一个额外的应用名。
  每部署一个项目到tomcat中,就会自动增加一个context,但是只能一个context的path可以为空,默认不要应用名访问的项目唯一。context的path不能重复,不然启动tomcat会报错。
注意:设置了path为“”后,浏览器端(jsp页面:引入css,js,图片等等,js)中使用绝对路径必须的应用名就可以省略,因为path设置为“”后不要应用名一样可以访问资源。(已测试)
     
      在项目开发中,有时候从svn检出的别人开发的项目中的js、css文件的引入,jsp中图片,链接,ajax等浏览器端的url绝对路径都是没有写应用名,而是直接写 / + 具体路径,这个时候访问系统报错404,就需要修改path为空,才能正常访问;
  所以我们项目开发中不要这么做,要加上应用名访问资源,因为加上了应用名,即使别人部署项目后,改变了path的值,也可以访问的。
 
  项目中用到的request.getContextPath()获得的应用名就是tomcat这里设置的path的值。
  在项目部署之前,eclipse中右键项目,可以设置部署到tomcat后的context中的path,即额外应用名。 如下图所示:
  

六、为什么修改了tomcat的server.xml中的path值,多次重启后,path值又会被还原成原来的值呢?

  因为eclipse中配置tomcat服务器后,就有一个server项目,项目中也有一套tomcat的配置文件,每次启动tomcat,都会用这个server项目下的配置文件替换tomcat中的配置,所以自己在tomcat中修改的就被替换了;
  

如上图就是eclipse中的servers项目,所以如果想要修改tomcat中的配置文件,需要将这个servers项目中的配置文件一起修改,和tomcat中保持一致,这样每次重启tomcat后,servers中配置文件覆盖tomcat中的也不影响;

  
 

tomcat 三种部署方式以及server.xml文件的几个属性详解的更多相关文章

  1. Weblogic的三种部署方式

    Weblogic的三种部署方式     在weblogic中部署项目通常有三种方式:第一,在控制台中安装部署:第二,将部署包放在domain域中autodeploy目录下部署:第三,使用域中配置文件c ...

  2. NBIoT三种部署方式【转】

    转自:https://472880.kuaizhan.com/89/34/p441944286fccf2 本文作者:吴老司撩通信 本文来源:EETOP NB-IoT支持在频段内(In-Band).保护 ...

  3. .NET Core应用的三种部署方式

    .NET Core应用提供了三种部署方式: FDD FDD:Framework-dependent deployment,框架依赖部署.这种方式针对某个特定版本的.NET Core进行发布,只打包应用 ...

  4. 文件的三种打开方式及with管理文件上下文

    文件的三种打开方式及with管理文件上下文 一.文件的三种打开方式 1.1 只读 f = open(r'D:\pycharm\yjy\上海python学习\456.txt','r',encoding= ...

  5. 命令stat anaconda-ks.cfg会显示出文件的三种时间状态(已加粗):Access、Modify、Change。这三种时间的区别将在下面的touch命令中详细详解:

    7.stat命令 stat命令用于查看文件的具体存储信息和时间等信息,格式为"stat 文件名称". stat命令可以用于查看文件的存储信息和时间等信息,命令stat anacon ...

  6. Tomcat的三种部署方式

    Tomcat是目前web开发中非常流行的Web 服务器,也就是tomcat在部署项目的时候,必须要把应用程序中所用到的jar包放到tomcat的lib目录下,然后再一起部署到服务器上. 那么tomca ...

  7. Web应用三种部署方式的优缺点

    方式一:修改server.xml文件 优点: 配置速度快,只需要在server.xml文件中添加<Context>标签,在其中分别配置path虚拟路径和docBase真实路径然后启动Tom ...

  8. SAP Fiori应用的三种部署方式

    封面图片来自Google搜索,关键字: Fiori Deployment 方式1 On premise环境下以BSP应用作为Fiori应用部署和运行的载体 在SAP成都labs我曾经担任过CRM这几个 ...

  9. Apache与Tomcat三种连接方式JK、http_proxy、ajp_proxy

    为什么要让Apache与Tomcat之间进行连接?事实上Tomcat本身已经提供了HTTP服务,该服务默认的端口是8080,也可以改为80.既然Tomcat本身已经可以提供动态加静态web服务,为什么 ...

随机推荐

  1. vue v-if with v-for

    遍历和条件判断混合使用示例. <!DOCTYPE html> <html> <head lang="en"> <meta charset= ...

  2. Flume-NG启动过程源码分析(三)(原创)

    上一篇文章分析了Flume如何加载配置文件的,动态加载也只是重复运行getConfiguration(). 本篇分析加载配置文件后各个组件是如何运行的? 加载完配置文件订阅者Application类会 ...

  3. Flume-NG启动过程源码分析(一)(原创)

    从bin/flume 这个shell脚本可以看到Flume的起始于org.apache.flume.node.Application类,这是flume的main函数所在. main方法首先会先解析sh ...

  4. spring boot: 条件注解@Condition

    @Conditional根据满足某一个特定的条件创建一个特定的Bean(基于条件的Bean的创建,即使用@Conditional注解). 比方说,当一个jar包在一个类的路径下的时候,自动配置一个或多 ...

  5. 第一个DirectX程序include、lib设置问题

    1.fatal error LNK1104: cannot open file "d3d9.lib" 解决方案: (1)项目 -->属性 --> 配置属性 --> ...

  6. Express+Mongoose(MongoDB)+Vue2全栈微信商城项目全记录(二)

    用mogoose搭建restful测试接口 接着上一篇(Express+Mongoose(MongoDB)+Vue2全栈微信商城项目全记录(一))记录,今天单独搭建一个restful测试接口,和项目前 ...

  7. UVA - 11324 The Largest Clique (强连通缩点+dp)

    题目链接 题意:从有向图G中找到一个最大的点集,使得该点集中任意两个结点u,v满足u可达v或v可达u. 解法:先把同处于一个强连通分量中的结点合并(缩点),得到一张DAG图,在DAG上dp即可. 感觉 ...

  8. docker+jenkins 部署持续集成环境

    1.使用docker container的方式安装jenkins [root@hadoop default]# docker pull jenkin 创建一个目录用于后边映射 [root@hadoop ...

  9. redis的no-appendfsync-on-rewrite参数

    redis提供了两种持久化机制,rdb和aof. 关于aof的原理,类似于预写日志,不再解释.其中几个选项如下: appendfsync always:总是写入aof文件,并完成磁盘同步appendf ...

  10. PIX v2版本中Query 失败时, ERR段的构造

    在ITI-9中描述PIX query事务的几个TestCase场景.其中有些是对于Query失败的描述. ERR 段包含Error location, Error code, Error code t ...