Web Application目录结构及web.xml

 

通常一个网络应用是由很多资源组成的,如servlet,JSP文件,class文件,第三方JAR文件,HTML文件,图片等等。

对于这些文件的组织JAVA servlet规范中已经做出定义,也就是说会以一种规范的目录结构去实现。

一个网络应用下包含的是多个子应用对应的文件夹,而对于一个子应用一般会按照资源的扩展名分成几个下级文件夹,如html,images,jsp等。但是至少要有一个WEB-INF文件夹。

这个WEB-INF文件夹下包含了该子应用最重要的部分。一般包括三个部分。

1.classes文件夹:本应用中编译生成的所有class文件集中此处。

2.lib文件夹:以JAR/zip形式表现的库文件和所有需要用到的第三方库文件存放此处。如果,这种库文件没打包成JAR/zip,则要放到classes目录中。

3.web.xml文件:此应用的初始化配置文件。非常重要。

注意:WEB-INF文件夹所包含的是服务器端使用的资源(而非客户端)。所以,任何客户端要调用的资源不应该放在此文件夹中,即使象某些JAR(包含的是applet)文件。

在开发和部署时,如果需要将整个应用进行转移位置,通常采取的一种做法是将整个应用打包成为war文件(区别与jar)。当我们将一个WAR文件放在Tomcat的网络应用文件夹下时,Tomcat会自动将其解压缩,形成一个和WAR文件名相同的文件夹。形成了部署,移植自动化。

如何打包war文件?

1.开DOS窗口,进入网络应用根目录。如:c: omcat4webapps>。

2.用jar命令压缩。c: omcat4webapps>jar -cvf helloapp.war helloapp。(具体参数看jar帮助)。

这样在webapps目录下就有了一个helloapp.war文件。

在webapps目录下我们通常会看到一个ROOT目录。这个目录被称之为缺省目录。当我们在浏览器地址栏敲入http://localhost:8080/index.jsp时,访问的就是ROOT目录下的index.jsp文件。

因此,webapps目录下除了一些目录外没有别的任何文件(放了也不会被访问到)。

web.xml结构

这个文件已经在java servlet规范中进行了标准化。

1.为开头。

2.做版本声明。

3.为开头对应用的定义。

4.其下是对所有具体内容的定义。

5.为整个文档的结束。

下面看两个和servlet相关的元素。和

在servlet下可以定义的元素有icon, servlet-name, servlet-class|jsp-file, display-name, description, init-param, load-on-startup, security-role-ref。

servlet-name:指定该sevlet的名字。客户端就是用这个名字访问该servlet。

servlet-class:指定该servlet具体关联的class文件名。且只能跟在servlet-name后面。

init-param:定义该servlet的初始化参数。具体参数名由param-name元素指定,值由param-value元素指定。

注意:一个param-name只能指定一个参数。如需多个参数,就用多个param-name。而param-vlaue却可以为一个参数名指定多个值,形成阵列(值间以逗号分割)。

另:参数是和servlet名相关,而非class文件。如此,可以用一个class文件加不同名字,不同参数形成多个版本。

其下可以定义的元素有servlet-name, url-pattern。

目的是以你指定的任何url形式去关联(访问)servlet。

我们可以为同一个servlet指定多个不同的url。

四种不同的url形式:

1.以/开始/*结束的形式。按纯目录形式关联servlet。

2.以*.postfix形式。按具体文件类型关联servlet。

3.单个字符串形式。精确匹配关联servlet。

4.单个/形式。缺省servlet(所有没精确指定资源的url都由该servlet处理)。

通常由servlet容器来解析一个指向servlet的URL。这种解析分两步,1.标识网络应用;2.定位具体的servlet。

上述两个步骤都会对URL中的URI(除去主机名以外的)部分进行分段处理,形成三个部分,Context Path, Servlet Path, Path Info。

示例:http://www.myserver.com/mywebapp/helloservlet/hello

1.Context Path

用以标识网络应用。以/开头,如此部分为空,则由缺省网络应用响应。上例中为/mywebapp。

2.Servlet Path

用以标识servlet。以/开头,如此部分为空,则由缺省servlet响应。上例中为/helloservlet。

3.Path Inof

除前两部分外,剩下的就是路径信息。本部分也可为空。上例为/hello。

HttpServletRequest提供了三个方法-getContextPath(),getServletPath()和getPathInfo()。分别提取不同段内容。

servlet容器在标识出context path后,会按照一个顺序计算URI的剩余部分。这个顺序是固定的,而且条件一旦满足,将不再继续。

1.servlet容器先将整个URI(除去context path之后的)和servlet mapping进行匹配。如果匹配成功,则除context path以为的剩余部分都是servlet path。因此,path info部分为空。

2.以/为分界符到着往前去和servlet mapping匹配。如匹配成功,匹配的部分就是servlet path,剩余部分是path info。

3.如果URI最后是某种文件扩展名,则servlet容器去和servlet mapping匹配。如成功,则将整个URI(除去context path之后的)视为servlet path,而path info为空。

4.如果始终没找到相匹配的servlet mapping,则将请求发往默认servlet。如果不存在默认servlet,则servlet容器发送错误消息,指示servlet没找到。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值