Tomcat基础教程(四)
一、将Web应用部署到Tomcat中
为什么要部署?将Web应用部署到Tomcat中,那么Tomcat就能找到相应的Web应用,当Tomcat启动时就会加载和初始化Web应用,而在Tomcat启动后,客户端就看可以使用相应的URL通过Tomcat访问到Web应用了。
部署的方式有两种:1)直接将Web应用结构目录添加到Tomcat的webapps目录 2)使用Context元素
1. 接将Web应用结构目录添加到Tomcat的webapps目录
在Tomcat目录结构中,有一个叫做webapps的文件夹,由之前所讲,它会存放Web应用,一个文件夹代表一个Web应用。而在Tomcat启动时,它会默认加载webapps文件夹下面的所有Web应用。
2. 使用Context元素
根据教程(二)中的Tomcat服务器架构图知道,Context表示Host中的一个Web应用,每个Web应用可以是一个war(Web Application Archive)文件或者文件系统中的一个文件夹。一个Host可以有多个web应用,且他们必须要有唯一的上下文路径来区分。如果某个Web应用的上下文路径字符串是空串,则该Web应用就成为其所在虚拟主机的默认Web应用,所有请求URL没有与Host中其他任何一个Web应用上下文路径匹配的客户请求都会被分发到该Web应用。
Context元素属性列表如下:
元素 | 属性 | Mandatory | Description |
Context | docBase | Y | 表示Web应用的根路径。若为war文件,属性值为该文件的路劲,若为目录,则为Web应用根目录路径 |
path | N | Web应用的上下文路径 | |
reloadable | N | true/false(Default)。表示是否允许Tomcat服务器监视Web应用中/WEB-INF/classes和/WEB-INF/lib目录的变化 | |
workDir | N | 指定一个目录路径来作为该Web应用的临时工作目录。若未指定该属性,则会使用Tomcat下的work目录 | |
unpackWAR | N |
true/false,如果设置成true则Tomcat在运行压缩的Web应用(war文件)会先将它解压缩 |
举例:<Context docBase="D:\\webAppBase\application" path ="/app1" workDir="D:\\WebAppBase\application\work">
将Context元素配置到Tomcat服务器中有如下方法:
1)在server.xml中添加Context元素 - 添加到Host节点内部,作为Host的元素。优点:简单直观;缺点:如果有很多Web应用,要配置很多Context元素,这样会使server.xml很难阅读和维护
2)添加到${TOMCAT_HOME}\conf\context.xml文件中 - 该文件是用于配置所有Web应用的Context元素。优点:将Context元素从server.xml中独立出来;缺点:当应用多了则不易维护
3)为每个虚拟主机的所有Web应用使用一个独立的配置文件 - ${CATATINA_HOME}/conf/[enginename]/[hostname]/context.xml.default - 即在虚拟主机中建立该文件,然后添加Context元素
4)为每个Web应用使用独立的配置文件 - 在${CATATINA_HOME}/conf/[enginename]/[hostname]目录中可以通过使用xml文件来为每个Web应用定义Context,文件名为Web应用的上下文路径
二、配置Web应用
每个Web应用都有一个对Web应用进行配置的web.xml(特有部署描述符),存在WEB-INF的文件夹中;而在Tomcat的conf文件夹中也有web.xml(通用部署描述符),用来设置通用的配置。当通用部署描述符和特有部署描述符有冲突时,特有部署描述符的配置项优先。
Web应用部署描述符
根元素web-app,其可以包含若干个子元素,而每个子元素都对应于Web应用某个方面的配置,且他们的顺序是任意的。
web-app根元素有如下属性:version, id, metadata-complete。比较常用的是version,表明Web描述文件兼容的最好版本。
web-app根元素下最常用的子元素:
- welcome-file-list: 定义一个welcome文件列表
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
welcome-file-list会定义目录的默认访问文件,当客户端请求的URL指向一个目录而非文件时,则就会访问默认访问文件,而这个list中定义的文件是有访问顺序的,按照显示顺序优先返回,若前面的文件不存在,则依次访问后面的文件。
- servlet和servlet-mapping: 这两个元素主要用于在Web应用中添加Servlet。servlet元素用于定义Servlet的名称,实现类等属性,servlet-mapping用于定义servlet的路径映射方式。
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<!-- can have multiple init-param -->
<load-on-startup>3</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
在上面的servlet元素中,其名字是jsp,所使用的java类为org.apache.jasper.servlet.JspServlet,其中的<init-param>元素为java类所要用到的参数;而<load-on-startup>元素中定义一个整数值,如果值为0或正整数,则表明该Servlet会在Tomcat服务器启动时必须被加载和初始化,若为负整数或该配置项不存在时Tomcat可以选择不在启动时加载和初始化Servlet。
在<servlet-mapping>元素中定义servlet名字为jsp的路径映射方式 -- <url-pattern>,该元素定义了一个请求URL模板,请求URI与该模板匹配时请求将被分配到对于的Servlet。在该段xml代码中,定义了访问*.jsp和*.jspx的文件都将被分配到名字为jsp的Servlet进行处理。
- filter和filter-mapping: 这两个元素主要用于在Web应用中添加过滤器。filter元素用于定义过滤器的名称,实现类等属性,filter-mapping用于定义filter的路径映射方式。
- mime-mapping: 该元素定义在Web应用中如何根据文件名后缀映射出文件的mime类型
<mime-mapping>
<extension>htm</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
Note: MIME是Multipurpose Internet Mail Extensions(多用途Internet邮件扩展)的简称,其被用于判断二进制文件的内容和打开方式。
- session-config: 用于配置session的一些参数,例如session的超时时间
<session-config>
<session-timeout>30</session-timeout>
</session-config>
总结: Tomcat中可以部署多个Web应用,而其通过应用的上下文路径来区分各个Web应用。部署Web应用可以通过添加Context元素。我们可以通过配置Tomcat中的web.xml或者Web应用自身的web.xml来对Web应用进行配置。
Tomcat基础教程(四)的更多相关文章
- Qt零基础教程(四) QWidget详解篇
在博客园里面转载我自己写的关于Qt的基础教程,没次写一篇我会在这里更新一下目录: Qt零基础教程(四) QWidget详解(1):创建一个窗口 Qt零基础教程(四) QWidget详解(2):QWid ...
- Qt零基础教程(四)QWidget详解(3):QWidget的几何结构
Qt零基础教程(四) QWidget详解(3):QWidget的几何结构 这篇文章里面分析了QWidget中常用的几种几何结构 下图是Qt提供的分析QWidget几何结构的一幅图,在帮助的 Wind ...
- Tomcat基础教程(二)
上一篇说到了Tomcat的介绍,下载及安装,这一篇我会详述Tomcat服务器结构 一.Tomcat服务器结构图: Tomcat服务器中可以配置多个Service,每个Service可以包含多个Conn ...
- SpringCloud2.0 Ribbon 服务发现 基础教程(四)
1.启动[服务中心]集群,即 Eureka Server 参考 SpringCloud2.0 Eureka Server 服务中心 基础教程(二) 2.启动[服务提供者]集群,即 Eureka Cli ...
- js基础教程四之无缝滚动
前面学习了相关js的一些基础知识,这节主要针对定时器作综合运用: 无缝滚动-基础 效果演示: *物体运动基础 *让div移动起来 *offsetLeft的作用 *用定时器让物体连续移动 <sty ...
- Tomcat基础教程(三)
Tomcat中的Web应用 Web应用就是具有特定目录结构的目录和文件. 基于JAVA技术开发的Web应用中通常会包含以下的web对象: 静态文件对象:HTML页面,图片,普通文件 Servlet: ...
- Tomcat基础教程(一)
Tomcat, 是Servlet和JSP容器,其是实现了JSP规范的servlet容器.它在servlet生命周期内包容,装载,运行,和停止servlet容器. Servlet容器的三种工作模式: 1 ...
- mysql基础教程(四)-----事务、视图、存储过程和函数、流程控制
事务 概念 事务由单独单元的一个或多个SQL语句组成,在这 个单元中,每个MySQL语句是相互依赖的.而整个单独单 元作为一个不可分割的整体,如果单元中某条SQL语句一 旦执行失败或产生错误,整个单元 ...
- <<Bootstrap基础教程>> 新书出手,有心栽花花不开,无心插柳柳成荫
并非闲的蛋疼,做技术也经常喜欢蛋疼,纠结于各种技术,各种需求变更,还有一个很苦恼的就是UI总是那么不尽人意.前不久自己开源了自己做了多年的仓储项目(开源地址:https://github.com/he ...
随机推荐
- 标准I/O库之标准I/O的效率
程序清单5-1 用getc和putc将标准输入复制到标准输出 #include "apue.h" int main( void ) { int c; while(( c = get ...
- 标准I/O库之打开和关闭流
下列三个函数打开一个标准I/O流. #include <stdio.h> FILE *fopen( const char *restrict pathname, const char *r ...
- 多态VI的创建
比较适合使用多态VI的场合:一个算法会应用到几种不同的数据类型上.比如读写 INI 文件的 VI,它 们既可以读写数值型的数据,也可以读写字符串.布尔等数据类型. 实现多态 VI 之前,一般先实现它的 ...
- 【转】获取Sprite的实际Rect
判断点击是否点击在了一个精灵上, 其实就是判断一个点是否在一个矩形内. cocos2d-x的2.0.2版本可以使用CCRect的函数 bool CCRect::containsPoint(const ...
- 常用数据库的驱动类/URL/默认端口
常用数据库的驱动类/URL/默认端口 1.Oracle: 格式: 驱动:oracle.jdbc.driver.OracleDriver URL:jdbc:oracle:thin ...
- cglib源码分析(三):Class生成策略
cglib中生成类的工作是由AbstractClassGenerator的create方法使用相应的生成策略完成,具体代码如下: private GeneratorStrategy strategy ...
- Winedt10 添加自定义宏
Winedt10 添加自定义功能,并在toolbar上添加快捷命令 功能描述: 用宏实现latex+bib参考文献的一键编译. Remark: The toolbar is the most visi ...
- PAT L1-009. N个数求和
本题的要求很简单,就是求N个数字的和.麻烦的是,这些数字是以有理数“分子/分母”的形式给出的,你输出的和也必须是有理数的形式. 输入格式: 输入第一行给出一个正整数N(<=100).随后一行按格 ...
- Web开发必备资源汇总[转]
导读:原文来自< Best “must know” open sources to build the new Web>,译文由酷壳网陈皓整理编译< 开源中最好的Web开发的资源 & ...
- VC中动态添加控件
VC中动态添加控件 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个 ...