tomcat 三种部署方式以及server.xml文件的几个属性详解
一、直接将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.xml,autoDeploy="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>中的子节点)
六、为什么修改了tomcat的server.xml中的path值,多次重启后,path值又会被还原成原来的值呢?
如上图就是eclipse中的servers项目,所以如果想要修改tomcat中的配置文件,需要将这个servers项目中的配置文件一起修改,和tomcat中保持一致,这样每次重启tomcat后,servers中配置文件覆盖tomcat中的也不影响;
tomcat 三种部署方式以及server.xml文件的几个属性详解的更多相关文章
- Weblogic的三种部署方式
Weblogic的三种部署方式 在weblogic中部署项目通常有三种方式:第一,在控制台中安装部署:第二,将部署包放在domain域中autodeploy目录下部署:第三,使用域中配置文件c ...
- NBIoT三种部署方式【转】
转自:https://472880.kuaizhan.com/89/34/p441944286fccf2 本文作者:吴老司撩通信 本文来源:EETOP NB-IoT支持在频段内(In-Band).保护 ...
- .NET Core应用的三种部署方式
.NET Core应用提供了三种部署方式: FDD FDD:Framework-dependent deployment,框架依赖部署.这种方式针对某个特定版本的.NET Core进行发布,只打包应用 ...
- 文件的三种打开方式及with管理文件上下文
文件的三种打开方式及with管理文件上下文 一.文件的三种打开方式 1.1 只读 f = open(r'D:\pycharm\yjy\上海python学习\456.txt','r',encoding= ...
- 命令stat anaconda-ks.cfg会显示出文件的三种时间状态(已加粗):Access、Modify、Change。这三种时间的区别将在下面的touch命令中详细详解:
7.stat命令 stat命令用于查看文件的具体存储信息和时间等信息,格式为"stat 文件名称". stat命令可以用于查看文件的存储信息和时间等信息,命令stat anacon ...
- Tomcat的三种部署方式
Tomcat是目前web开发中非常流行的Web 服务器,也就是tomcat在部署项目的时候,必须要把应用程序中所用到的jar包放到tomcat的lib目录下,然后再一起部署到服务器上. 那么tomca ...
- Web应用三种部署方式的优缺点
方式一:修改server.xml文件 优点: 配置速度快,只需要在server.xml文件中添加<Context>标签,在其中分别配置path虚拟路径和docBase真实路径然后启动Tom ...
- SAP Fiori应用的三种部署方式
封面图片来自Google搜索,关键字: Fiori Deployment 方式1 On premise环境下以BSP应用作为Fiori应用部署和运行的载体 在SAP成都labs我曾经担任过CRM这几个 ...
- Apache与Tomcat三种连接方式JK、http_proxy、ajp_proxy
为什么要让Apache与Tomcat之间进行连接?事实上Tomcat本身已经提供了HTTP服务,该服务默认的端口是8080,也可以改为80.既然Tomcat本身已经可以提供动态加静态web服务,为什么 ...
随机推荐
- PAT1022. Digital Library (30)
两个坑. 一个是一直用的malloc不行了.因为malloc分配的是固定大小,之前做的题没遇到过是因为一般string都不长(malloc分配string为24个Byte),这次直接报段错误,呢们了半 ...
- HDU3047 Zjnu Stadium
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- iphone动态下拉菜单
介绍:实现带动画效果的下拉菜单.用户按下菜单按钮,出现下拉按钮,用户松开菜单按钮,下拉按钮收回. 测试环境:Xcode 4.3, iOS 5.0. 效果图: jQuery特效:http://www.h ...
- WebAPI序列化后的时间中含有“T”的解决方法
问题: { "name": "abc", "time": "2015-02-10T15:18:21.7046433+08:00&q ...
- 延时并自动关闭MessageBox
信息提示框(MessageBox)是微软NET自带的一个用于弹出警告.错误或者讯息一类的“模式”对话框.此类对话框一旦开启,则后台窗体无法再被激活(除非当前的MessageBox被点击或者关闭取消). ...
- github提交代码时遇到”Everything up-to-date“问题的解决方式
需要创建一个新分支,将最新代码加入新分支, 再将新分支合并到主分支,然后提交主分支代码到github网站. ---------------------------------------------- ...
- 3.16 draw 3.17 更新函数
3.16 draw virtual void draw(); void HelloWorld::draw() { CCSize size = CCDirector::sharedDirector()- ...
- UVA 11605 Lights inside a 3d Grid
#include <iostream> #include <stdio.h> #include <cstring> #include <math.h> ...
- vector的内存分配机制分析
该程序初步演示了我对vector在分配内存的时候的理解.可能有误差,随着理解的改变,改代码可以被修改. /* 功能说明: vector的内存分配机制分析. 代码说明: vector所管理的内存地址是连 ...
- HDU2065"红色病毒"问题【指数型母函数】
Problem Description 医学界发现的新病毒因其蔓延速度和Internet上传播的"红色病毒"不相上下,被称为"红色病毒",经研究发现,该病毒及其 ...