一、将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基础教程(四)的更多相关文章

  1. Qt零基础教程(四) QWidget详解篇

    在博客园里面转载我自己写的关于Qt的基础教程,没次写一篇我会在这里更新一下目录: Qt零基础教程(四) QWidget详解(1):创建一个窗口 Qt零基础教程(四) QWidget详解(2):QWid ...

  2. Qt零基础教程(四)QWidget详解(3):QWidget的几何结构

    Qt零基础教程(四)  QWidget详解(3):QWidget的几何结构 这篇文章里面分析了QWidget中常用的几种几何结构 下图是Qt提供的分析QWidget几何结构的一幅图,在帮助的 Wind ...

  3. Tomcat基础教程(二)

    上一篇说到了Tomcat的介绍,下载及安装,这一篇我会详述Tomcat服务器结构 一.Tomcat服务器结构图: Tomcat服务器中可以配置多个Service,每个Service可以包含多个Conn ...

  4. SpringCloud2.0 Ribbon 服务发现 基础教程(四)

    1.启动[服务中心]集群,即 Eureka Server 参考 SpringCloud2.0 Eureka Server 服务中心 基础教程(二) 2.启动[服务提供者]集群,即 Eureka Cli ...

  5. js基础教程四之无缝滚动

    前面学习了相关js的一些基础知识,这节主要针对定时器作综合运用: 无缝滚动-基础 效果演示: *物体运动基础 *让div移动起来 *offsetLeft的作用 *用定时器让物体连续移动 <sty ...

  6. Tomcat基础教程(三)

    Tomcat中的Web应用 Web应用就是具有特定目录结构的目录和文件. 基于JAVA技术开发的Web应用中通常会包含以下的web对象: 静态文件对象:HTML页面,图片,普通文件 Servlet: ...

  7. Tomcat基础教程(一)

    Tomcat, 是Servlet和JSP容器,其是实现了JSP规范的servlet容器.它在servlet生命周期内包容,装载,运行,和停止servlet容器. Servlet容器的三种工作模式: 1 ...

  8. mysql基础教程(四)-----事务、视图、存储过程和函数、流程控制

    事务 概念 事务由单独单元的一个或多个SQL语句组成,在这 个单元中,每个MySQL语句是相互依赖的.而整个单独单 元作为一个不可分割的整体,如果单元中某条SQL语句一 旦执行失败或产生错误,整个单元 ...

  9. <<Bootstrap基础教程>> 新书出手,有心栽花花不开,无心插柳柳成荫

    并非闲的蛋疼,做技术也经常喜欢蛋疼,纠结于各种技术,各种需求变更,还有一个很苦恼的就是UI总是那么不尽人意.前不久自己开源了自己做了多年的仓储项目(开源地址:https://github.com/he ...

随机推荐

  1. 谋哥:App排行榜的秘密

    App在改变世界,改变人们的生活.       如今购物大家都用淘宝.京东,吃饭你会用饭否,看天气预报你用墨迹天气,看视频用优酷.K歌你用唱吧,聊天联系你用微信,看新闻你用今日头条等等.你的生活由你自 ...

  2. 摄像机(CCCamera)

  3. [置顶] Android开发之serviceManager分析

    Android 开发之serviceManager分析 在Android系统中用到最多的通信机制就是Binder,Binder主要由Client.Server.ServiceManager和Binde ...

  4. Memcached启动、关闭参数(摘录)

    启动参数注释如下: -p <num>  指定服务TCP端口,默认为11211 -U <num>   指定服务UDP端口  默认11211表示打开,设置0表示关闭 -s < ...

  5. 多版本uboot命令行分析

    1.1.6 经典版本: 1.uboot第二阶段第一个函数void start_armboot (void),一路gd参数设置.设备初始化.控制台初始化.端口初始化,最后到main_loop ()命令行 ...

  6. C++学习(五)

    一.拷贝构造函数和拷贝赋值运算符1.拷贝构造:用一个已有的对象,构造和它同类型的副本对象——克隆.2.形如class X {  X (const X& that) { ... }};的构造函数 ...

  7. CDOJ-10(栈的应用)

    In Galgame We Trust Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Othe ...

  8. Apache 配置多端口 多虚拟主机 局域网访问

    \wamp\bin\apache\Apache2.4.4\conf\extra\httpd-vhosts.conf 修改如下 NameVirtualHost *:80          Documen ...

  9. java Spring bean作用域

    1. Singleton作用域 当一个bean的作用域为singleton, 那么Spring IoC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则 ...

  10. 关于安卓应用(APK文件)的二次打包

    http://blog.csdn.net/baiyuliang2013/article/details/40426681 很多开发者,不管是个人或是公司都不太注重自己开发的应用的安全性,即是 否会被不 ...