WEB-INF下新建两个文件夹:classes和lib,这两个文件夹的作用完全相同:都是用于保存Web应用所需要的Java类文件,区别是classes保存单个*.class文件;而lib保存打包后的JAR文件。
对于Java Web应用而言,WEB-INF是一个特殊的文件夹,Web容器会包含该文件夹下的内容,客户端浏览器无法访问WEB-INF路径下的任何内容。
在Servlet2.5规范之前,Java Web应用的绝大部分组件都通过web.xml文件来配置管理,从Servlet3.0开始,也可通过注解来配置管理Web组件,因此,web.xml文件变得更加简洁,这也是Servlet3.0的重要简化。
每个web容器都会提供一个系统的web.xml文件,用于描述所有Web应用共同的配置属性。
一个好的、清晰的目录结构可以方便日后的维护,可以帮助维护人员快速的定位到代码文件;
1.WEB程序结构
1)一个 web 应用程序是由一组 Servlet、HTML 页面、类、以及其它的资源组成的运行在 web 服务器上的完整的应用程序,以一种结构化的有层次的目录形式存在;
2)组成 web 应用程序的这些文件要部署在相应的目录层次中,根目录代表整个 web 应用程序的”根”;
3)通常将 web 应用程序的目录放在 webapps 目录下,在 webapps 目录下的每一个子目录都是一个独立的 web 应用程序,子目录的名字就是 web 应用程序的名字,也就是 web 应用程序的“根”。用户通过 web 应用程序的”根”来访问 web 应用程序中的资源.
4)一个例子:servlet规范定义的 web应用程序的目录层次
说明:① WEB-INF目录下的classes和lib目录都可以存放Java的类文件,在Servlet容器运行时,Web应用程序的类加载器将首先加载classes目录下的,其次才是lib目录下的类。如果这两个目录下存在同名的类,起作用的将是classes目录下的类
②WEB-INF 是一个特殊的目录(所有字母都要大写)。这个目录并不属于Web应用程序可以访问的上下文路径的一部分,对客户端来说,这个目录是不可见的。但该目录下的内容对于Servlet代码是可见的
标准的javaee规范要求,webapp必须有一个命名为WEB-INF的目录,在该目录之外的资源,用户是可以通过浏览器进行直接访问的,位于该目录下的所有资源,用户通过浏览器是无法访问的,但内部servlet是可以进行调用的。所以很多mvc框架(如:springmvc)提倡,将jsp文件放在WEB-INF目录下进行保护,所有的jsp访问都通过servlet进行跳转。