Java EE 中的 Web项目结构

按照 Java EE 规范的规定,一个典型的 Web 应用程序有四个部分: 

1.  公开目录 ;
2. WEB-INF/web.xml 文件,发布描述符(必选) ;
3. WEB-INF/classes 目录,编译后的 Java类文件(可选) ;
4. WEB-INF/lib 目录,Java类库文件(*.jar) (可选) ;
 
公开目录存放所有可以被用户的访问的资源, 包括  .html, .jsp, .gif, .jpg, .css, .js, .swf 等等。 

WEB-INF 目录是一个专用区域, 容器不能把此目录中的内容提供给用户。  这个目录下的文件只供容器使用,里面包含不应该由客户直接下载的资源,例如: Servlet(这些组件包括应用程序逻辑以及对其他资源如数据库的可能访问), Web应用程序中servlet可直接访问的其他任何文件,在服务器方运行或者使用的资源(如 Java类文件和供 servlet 使用的 JAR文件),由您的应用程序生成的临时文件,,发布描述符以及其它任何配置文件。 这些资源是专用的, 因此只能由它们自己的 Web应用程序及容器访问。 特别地,JSP/Servlet   程序文件也能通过 ServletContext 访问到这个目录下的文件,例如 JSP 中可以通过application.getRealPath(“/WEB-INF/web.xml”) 访问到发布描述符文件的路径。 Web容器要求在你的应用程序中必须有 WEB-INF 目录。 
注意: 如果你的 Web 应用程序中没有包含这个目录, 它可能将无法工作

WEB-INF 中包含着发布描述符, 一个 classes 目录和一个 lib目录, 以及其它内容。  

发布描述符(deployment descriptors)是 J2EE Web 应用程序不可分割的一部分(也就是说是它的最小部分, 必不可缺的一部分)。 它们在应用程序发布之后帮助管理 Web 应用程序的配置。  对于Web 容器而言, 发布描述符是一个名为 web.xml 的 XML 文件, 存储在 Web 应用程序的 /WEB-INF目录下。  
发布描述符有多种用途:
•  为 Servlet 和 Web 应用程序提供初始化参数  这使我们的Web应用程序中的硬性编写的代码的初始化值更少。 例如常见的 <param-name>, <param-value>标记, 就可以为
Servlet 提供参数, 这个参数可以在 init() 方法中加载。 Struts 的 ActionServlet 也是通过这种方式来找到它们需要的配置文件 struts-config.xml 的位置, 从而加载并分析它, 
来初始化 Struts 框架用到的各种 FromBean, Action, Forward等。 
•  Servlet/JSP 定义 可以为 Web 应用程序中的每个 Servlet 或者预编译的 JSP 网页提供定义。 包括Servlet/JSP的名字, Servlet/JSP 的类以及一个可选的描述。 
•  Servlet/JSP 映射  Web容器使用这些信息把进入请求映射到 servlet 和 JSP 网页。 
•  MIME类型  由于每个 Web 应用程序可以包含多种内容类型, 因此我们可以在发布描述符中为每一种类型指定 MIME 类型。 
•  安全性   我们可以使用发布描述符来管理应用程序的访问控制。 例如, 可以指定我们的Web应用程序是否需要登录, 如果需要的话, 应该使用什么登录页面, 以及用户
会作为何种角色。 
发布描述符还可以用来自定义其他元素, 包括欢迎网页, 出错网页, 会话配置等等。 

classes 目录用于存储编译过的 servlet 及其它程序类, 例如 JavaBean。 如果一个程序有打包的 JAR 文件(例如一个第三方 API 打包成了一个 JAR 文件, 如 Struts 框架的类库struts.jar, MySQL 的数据库 JDBC 驱动程序文件 mysql-connector-java-3.1.11-bin.jar 等), 那么它们可以被复制到lib目录中(如果解压缩这些压缩包的话, 请将它们复制到classes目录中)。 Web 容器使用这两个目录来查找 servlet 及其他相关类, 也就是说, 容器的类装入器会自动查看 classes 目录, 以及 lib目录下的 JAR文件。  这就意味着你不需要明确的把这些类和 JAR文件添加到 CLASSPATH中。  Web容器自动将这两个目录中的文件加入 Web应用的类路径中。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java EE 项目的目录结构可以根据具体的需求进行灵活设计,但一般情况下,推荐使用以下的标准目录结构: ``` project ├── src │ ├── main │ │ ├── java │ │ │ └── com │ │ │ └── example │ │ │ ├── controller │ │ │ ├── dao │ │ │ ├── entity │ │ │ ├── service │ │ │ └── util │ │ ├── resources │ │ │ ├── mapper │ │ │ └── db.properties │ │ └── webapp │ │ ├── WEB-INF │ │ │ ├── classes │ │ │ ├── lib │ │ │ └── web.xml │ │ ├── css │ │ ├── js │ │ ├── images │ │ └── index.jsp │ └── test │ ├── java │ └── resources ├── target ├── pom.xml └── README.md ``` 其,各个目录的作用如下: - `src/main/java`:存放项目Java 源代码,按照包名分层,一般包括 `controller`、`dao`、`entity`、`service` 和 `util` 等包; - `src/main/resources`:存放项目的配置文件和资源文件,一般包括数据库连接配置文件 `db.properties`、MyBatis 的 mapper 文件等; - `src/main/webapp`:存放 Web 应用的 Web 资源,包括 JSP 页面、CSS 样式表、JavaScript 脚本等; - `src/test/java`:存放项目的测试代码; - `src/test/resources`:存放测试代码所需要的资源文件; - `target`:存放编译后的 .class 文件、打包后的 .war 文件等; - `pom.xml`:Maven 项目管理工具的配置文件; - `README.md`:项目说明文件。 以上是一种常见的 Java EE 项目目录结构,但并不是唯一的标准。在实际开发,可以根据项目的具体需求进行合理的调整和修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值