【转】

一个最简单的Web应用的目录结构如下所示:

Web应用的结构定义在Servlet的规范中,目前最新版本为3.1。

下载地址:https://jcp.org/aboutJava/communityprocess/final/jsr340/index.html

JSR340即Servlet3.1的规范中描述:Context path of an application determines the URL namespace of the contents of the Web application.

如果只是静态文件,都可以不需要WEB-INF以及web.xml,SimpleWebProject下只有一个index.jsp是可以直接访问到的。

WEB_INF目录

应用比较特殊的是WEB-INF目录,此路径不可以由外部直接访问到,因此对于class、jar、配置文件等需要受保护的资源,都应该放到此目录下。

但对于jar包中/META-INF/resource又是一种特殊情况,这里的资源被认为是静态资源,又可以直接被外部访问(其实这么用的场景很少,不用过多关注)。

 META_INF目录

META-INF目录也比较特殊,外部不能直接访问。

如果发布程序使用war包,打包程序会把一些应用相关的信息写入到MANIFEST.MF文件中。

如果使用maven进行依赖管理,还会把maven的目录,内部是pom相关内容。

类加载器classloader

在WEB-INF目录的classes及lib子目录下,都可以存放Java类文件

应用的Class Loader是容器的Class Loader的一个子类。

应用的Class Loader需要能够加载class、lib以及各种资源,并且class的优先级高于lib。也就是类加载器必须先从WEB-INF/classes目录下加载类,然后从WEB-INF/lib目录下的JAR库中加载

所有的Class Loader都不能覆盖Java SE platform class,比如java.*和javax.*命名空间的资源等。

部署描述符(web.xml)

主要用于定义ServletContext、Session、Servlet、Servlet-Mapping、Listener、Filter,其它像Welcome File list等用的并不多。

Servlet容器根据web.xml就建立了外部请求到部署应用的Servlet的映射关系了。

2.2 web工程的目录结构的更多相关文章

  1. Eclipse中一个Maven工程的目录结构

    在之前的javaSE开发中,没有很关注Eclipse工程目录下的环境,总是看见一个src就点进去新建一个包再写一个class.以后的日子中也没有机会注意到一个工程到底是怎么组织的这种问题,跟不要说自己 ...

  2. Eclipse中一个Maven工程的目录结构 (MacOS)

    1. 为什么写这篇文章 在之前的javaSE开发中,没有很关注Eclipse工程目录下的环境,总是看见一个src就点进去新建一个包再写一个class.以后的日子中也没有机会注意到一个工程到底是怎么组织 ...

  3. javaee web项目的目录结构

    一般web系统的目录结构如下,其中src下的包结构和webroot下(除meta-inf和web-inf)的文件夹可以根据自己的项目实际调整,但是javaee规范的大目录结构不会变: META-INF ...

  4. 使用Maven构建Web项目的目录结构

    1.Web项目的目录结构     基于Java的Web项目,标准的打包方式是WAR.与JAR比较,包含更多的内容,比如JSP文件.Servlet.Java类.web.xml配置文件.依赖JAR包.静态 ...

  5. Web应用的目录结构

    Web应用的目录结构 |- WebRoot :   web应用的根目录 |- 静态资源(html+css+js+image+vedio)|- WEB-INF :固定写法. |-classes: (可选 ...

  6. 第一个Maven工程的目录结构和文件内容及联网问题

    [第一个Maven工程] ①目录结构 Hello |---src |---|---main |---|---|---java |---|---|---resources |---|---test |- ...

  7. 【Tomcat】Web应用的目录结构

    创建时间:6.14 Web应用的目录结构 .xml文件不用自己写,抄头抄尾就可以 (别人的) (抄头抄尾) *注意:WEB-INF目录是受保护的,外界不能直接访问 如果访问WEB-INF目录下的htm ...

  8. 新建标准mavenWeb工程以及Maven的web应用标准目录结构建议

    到现在为止,使用Maven结构的Web工程越来越多,因此在此介绍一下通过Maven来构建项目的相关知识.     文档主要分为两部分:       1.如何通过maven来构建多模块的web项目    ...

  9. eclipse中Maven web项目的目录结构浅析

    刚开始接触maven web项目的时候,相信很多人都会被它的目录结构迷惑. 为了避免初学者遇到像我一样的困扰,我就从一个纯初学者的视角,来分析一下这个东西. 1,比如说,我们拿一个常见的目录结构来看, ...

随机推荐

  1. Tomcat 启动内存修改

    内存修改文件 Windows 文件 /bin/catalina.bat Linux 文件 /bin/catalina.sh 方法一 # 设置参数 JAVA_OPTS='-Xms[初始化内存大小] -X ...

  2. php操作redis cluster集群成功实例

    java操作redis cluster集群可使用jredis php要操作redis cluster集群有两种方式: 1.使用phpredis扩展,这是个c扩展,性能更高,但是phpredis2.x扩 ...

  3. 华为S5700系列交换机配置通过流策略实现VLAN间三层隔离

    组网图形 图1 配置通过流策略实现VLAN间三层隔离组网图 组网需求 如图一所示,为了通信的安全性,某公司将访客.员工.服务器分别划分到VLAN10.VLAN20.VLAN30中.公司希望: 员工.服 ...

  4. fabric生产环境代码包发布管理

  5. tomcat深入学习—权限篇

    如果想给一个应用程序配置权限,可能需要的代码量很多,但你知道吗,仅通过配置tomcat,就能有同样的效果(为一个web应用添加了权限) 效果:打开http://localhost:8080/searc ...

  6. 网易编程题——Fibonacci数列

    题目描述 Fibonacci数列是这样定义的: F[0] = 0 F[1] = 1 for each i ≥ 2: F[i] = F[i-1] + F[i-2] 因此,Fibonacci数列就形如:0 ...

  7. spring通知的注解

    1.代理类接口Person.java package com.xiaostudy; /** * @desc 被代理类接口 * * @author xiaostudy * */ public inter ...

  8. 导出成可运行jar包时所遇问题的解决办法 - 转载

    Could not find main method from given launch configuration 当我把我的Java工程导出为可运行的jar包时,遇到了“Could not fin ...

  9. Flume-NG源码阅读之SourceRunner,及选择器selector和拦截器interceptor的执行

    在AbstractConfigurationProvider类中loadSources方法会将所有的source进行封装成SourceRunner放到了Map<String, SourceRun ...

  10. Button之常用事件

    Button之常用事件 一.简介 1.button介绍 本文介绍了Buttonn的点击事件,触摸事件,获得焦点事件 接口分别为:OnClickListener,OnTouchListener,OnFo ...