最近看了下配置文件(Deployment Descriptor:简称DD),又称部署描述文件,下面详细介绍下该文件的组成和作用:

一、<web-app>有四个属性:

1、xmlns:申明了web.xml文件的名称空间的xml方案文档的位置;

2、xmls:xsi:指定了命名空间的案例;

3、xsi:schemeLocation:指定了发方案的位置;

4、version:制定方案的版本;

二、DD文件定义:(下面为<web-app>完整的DTD定义)

<!ELEMENT web-app (icon?, display-name?, description?,distributable?, context-param*, filter*, filter-mapping*,listener*, servlet*, servlet-mapping*, session-config?,mime-mapping*, welcome-file-list?,error-page*, taglib*, resource-env-ref*, resource-ref*,security-constraint*, login-config?, security-role*,env-entry*,ejb-ref*, ejb-local-ref*)>

在DTD中,带?的元素可以出现0次或者一次,带*元素可出现0次或多次,带+元素可出现一次或多次,不带则只出现一次。

对其中比较常用的元素描述下:

description:对应用程序的简短描述;

displey-name:应用程序的显示名称;

context-param:应用程序的初始参数;

servlet:定义servlet;

servlet-mapping:servlet的映射;

welcome-file-list:应用程序的欢迎文件;

session-config:会话时间;

listener:定义监听器类;

filter:定义过滤器类;

filter-mapping:过滤器映射;

error-page:错误处理页面;

security-constraint:web应用程序的安全约束;

mime-mapping:常用文件扩展名的MIME类型;

三、<Servlet>元素

1、<servlet-name>元素:必须选,定义servlet名称,在DD文件中应该唯一,可通过servletConfig的getServletName()方法检索;

2、<servlet-class>元素:制定servlet完整名称,需带包

WEB-INF目录中的classes目录和lib目录中JAR文件会被自动添加到容器的类路径中,不需设置类路径

3、<init-param>元素:向servlet传递初始化参数,每个<int-param>有仅有一组<param-name>和<param-value>子元素,可通过ServletConfig接口的getInitParameter()方法检索初始化参数;

4、<load-on-startup>元素:一般的servlet是在被请求时由容器装入内存,这只一个正数则在启动时载入该servlet,值小的优先装入,负数或者没有指定,容器将根据需要决定何时装入servlet

四、<servlet-mapping>元素:指定那个URl模式被该servlet处理

1、URL组成:

http://www.myserver.com/myapp/helloServlet/hello/abc.jsp?user=zhuwangbiluo

第一部分:协议与主机名第二部分:上下文路径第三部分:servlet路径第四部分:路径信息第五部分:查询串

可通过请求对象的getContextPath()、getServletPath()、getPathInfo()方法获得上下文路径、servlet路径、路径信息

2、<url-pattren>三种形式

1)、目录匹配:以“/”开头,以"/*"结尾形式,如:

/helloServlet/hello/*

任何在Servlet路径中以/helloServlet/hello/开头的URL都匹配

2)、扩展名匹配:以“*”开头,后接一个扩展名(如:“*.do”或者“*.pdf”等)如:*.do

映射把所有以.do结尾的请求发送给该servlet

3)、精确匹配:所有其他字符串都作为精确匹配,如:

/report

只有http://www....../myapp/report才符合要求

3、容器如何匹配URL:

1)、容器收到URL,解析,取出第一部分作为上下文路径,这里是/myapp,在tomcat中查找是否有名为myapp的应用程序;

2)、若没有,则上下文路径为零,发送到默认应用程序(ROOT);

3)、有的话,继续解析,尝试将servlet路径与servlet映射匹配,找到匹配,则完整的URL请求(除上下文路径)就是servlet路径,该情况下路径信息为null;

4)、容器沿着请求URL路径树向下,每次一层目录,使用/作为路径分隔符,反复尝试最长路径,看是否与一个servlet匹配,有的话,改URL的匹配就是servlet路径,剩余为路径信息;

5)、找不到,发送404错误消息到客户端。

五、<welcome-file-list>元素:在对应URL目录首先查找有无对应servlet,没有则依次看有无index.html,index.jsp,找到则显示该文件。再无,若找到list元素中的文件,将其返回客户端,否则报404错误。

出处:http://blog.csdn.net/cl05300629/article/details/9339205 作者:伫望碧落

Servlet部署描述文件(web.xml)的更多相关文章

  1. 利用eclipse新建的java web项目没有部署描述符web.xml文件怎么办?

    原文转自:http://blog.csdn.net/suyu_yuan/article/details/50947007 利用eclipse新建的Java Web项目没有部署描述符web.xml文件, ...

  2. 部署描述符web.xml

    部署描述符应用场景 需要传递初始参数给ServletContext 有多个过滤器,并要指定调用顺序 需要更改会话超时设置 要限制资源的访问,并配置用户身份验证方式 xsi:schemaLocation ...

  3. 部署描述符 web.xml

    google的部署描述符详解: https://cloud.google.com/appengine/docs/flexible/java/configuring-the-web-xml-deploy ...

  4. 关于Java Web应用中的配置部署描述符web.xml

    一.web.xml概述 位于每个Web应用的WEB-INF路径下的web.xml文件被称为配置描述符,这个 web.xml文件对于Java Web应用十分重要,每个Java Web应用都必须包含一个w ...

  5. Servlet部署描述符

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6512237744641540612/ <Servlet简单实现开发部署过程>中的过程,可以概括为以下模 ...

  6. Servlet开发技术,创建,以及Servlet的配置,web.xml的配置

    直接上图,不废话!!! 第一:首先在Eclipse的包资源管理器中,单机鼠标右键,在弹出的快捷键菜单中选择“新建”/Servlet命令,在弹出的对话框中输入新建的Servlet所在的包和类名,然后单击 ...

  7. eclipse : java项目中的web.xml( Deployment Descriptor 部署描述文件 )配置说明

    context-param.listener.filter.servlet  首先可以肯定的是,加载顺序与它们在 web.xml 配置文件中的先后顺序无关.即不会因为 filter 写在 listen ...

  8. Servlet容器Tomcat中web.xml中url-pattern的配置详解[附带源码分析]

    目录 前言 现象 源码分析 实战例子 总结 参考资料 前言 今天研究了一下tomcat上web.xml配置文件中url-pattern的问题. 这个问题其实毕业前就困扰着我,当时忙于找工作. 找到工作 ...

  9. servlet为什么要配置web.xml

    (1).为Servlet命名:  <servlet>  <servlet-name>servlet1</servlet-name> <- 这是用于,在serv ...

随机推荐

  1. js 正则之 判断密码类型

    原文:js 正则之 判断密码类型 今天没啥写的,就分享个思路吧.之前在群里讨论的时候,谢亮兄弟说判断密码是否是纯数字,纯字母之类的.如果用 , 条判断,那就老长一大段了.这个思路是我之前看 jQuer ...

  2. 汤姆大叔 深入理解JavaScript系列(20):《你真懂JavaScript吗?》答案详解 后六道题答案

    原题目地址:http://www.cnblogs.com/TomXu/archive/2012/02/10/2342098.html 答案丰富多彩.我只是记录下自己思考了半天全部的答案. 题目一:找出 ...

  3. JS自动化测试 单元测试之Qunit

    前言 因为公司开发了一套javascript SDK需要测试,在网上找了很久,找到了JQuery团队开发的QUnit,和基于JUnit的JsUnit,还有一些还没有看,先讲讲QUnit吧 下载 登录J ...

  4. PhotoShop CC安装抠图插件KnockOut 2

    1.KnockOut 2只有32位版本,因此需要给32位的PhotoShop CC安装. 2.下载地址:http://www.cr173.com/soft/28207.html 3.安装KnockOu ...

  5. Sql Server 自定义数据类型

    SQLServer 提供了 25 种基本数据类型: ·Binary [(n)]  二进制数据 既可以是固定长度的(Binary),也可以是变长度的.其中,n 的取值范围是从 1 到 8000.其存储窨 ...

  6. HDU 2064 汉诺塔III

    汉诺塔III Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  7. CSS移动

    #hand { width: 170px; height: 236px; position: absolute; top: 178px; left: 390px; background: url('h ...

  8. LinQ—扩展方法

    概述 本节主要解说扩展方法,涉及LinQ的详细知识不多. 扩展方法的描写叙述 .net framework为编程人员提供了非常多的类,非常多的方法,可是,不论.net framework在类中为我们提 ...

  9. .NET简单企业应用

    <.NET简单企业应用>项目开发环境 项目开始,开发团队需要构建一套开发环境,主要包含:开发工具.代码管理/版本控制系统.任务和Bug管理系统和持续集成(CI)系统.本文主要列举项目开发中 ...

  10. [翻译]初识SQL Server 2005 Reporting Services Part 3

    原文:[翻译]初识SQL Server 2005 Reporting Services Part 3 这是关于SSRS文章中四部分的第三部分.Part 1提供了一个创建基本报表的递阶教程.Part 2 ...