JavaWeb工程 目录结构

今天为此事纠结了一段时间。

以下是mavaen推荐的项目目录.

├── pom.xml
└── src
     ├── main
     │   ├── java
     │   │   └── mygroup
     │   │       ├── controller
     │   │       │   ├── HomeController.java
     │   │       │   └── PersonController.java
     │   │       ├── dao
     │   │       │   └── PersonDao.java
     │   │       └── model
     │   │           └── Person.java
     │   ├── resources
     │   │   ├── db.properties
     │   │   ├── log4j.xml
     │   │   └── META-INF
     │   │       └── persistence.xml
     │   └── webapp
     │       ├── index.html
     │       ├── META-INF
     │       │   ├── context.xml
     │       │   └── MANIFEST.MF
     │       ├── resources
     │       │   └── css
     │       │       └── screen.css
     │       └── WEB-INF
     │           ├── spring
     │           │   ├── app
     │           │   │   ├── controllers.xml
     │           │   │   └── servlet-context.xml
     │           │   ├── db.xml
     │           │   └── root-context.xml
     │           ├── views
     │           │   ├── edit.jsp
     │           │   ├── home.jsp
     │           │   └── list.jsp
     │           └── web.xml
     └── test
         ├── java
         │   └── mygroup
         │       ├── controller
         │       │   ├── DataInitializer.java
         │       │   ├── HomeControllerTest.java
         │       │   └── PersonControllerTest.java
         │       └── dao
         │           └── PersonDaoTest.java
         └── resources
             ├── db.properties
             ├── log4j.xml
             ├── test-context.xml
             └── test-db.xml
==========================================================================================================
tomcat 推荐的目录结构 http://tomcat.apache.org/tomcat-5.5-doc/appdev/source.html
===========================================================================================================

Java web工程下的webapp或WebContent就是工程的发布文件夹,发布时会把该文件夹发布到tomcat的webapps里。

开发时classes文件存放路径:

buildpath:在eclipse中项目的右键Java build path-source中指定工程中class文件的编译路径,一般为:test/build/classes。(test是工程名)

发布时classes文件存放路径:

发布到tomcat时(在eclipse里启动tomcat),src文件夹里的java文件经过编译后,会把.class文件放在WEB-INF文件夹里的classes文件夹中。

有一些配置文件需要放到WEB-INF的classes文件夹下,所以,通常的做法是手动在工程的WEB-INF文件夹下建立classes文件夹。如果不在工程的WEB-INF下手动建立classes,发布到tomcat时tomcat里的WEB-INF中也会有classes文件夹。

关于jar

【Web App Libraries】 一般是指向web工程的 WEB-INF/lib下的包(可以将包copy到此目录下 然后刷新工程 加入的包一般可以自动找到 如果找不到 右键|Properties |Java Build Path|Libraries |Add JARs 可以加入)

build path中add jar可以引用工程文件夹以外的jar,如果引用了工程以外的jar,在.classpath文件中会添加(如java的jar包jre和tomcat的jar包):
    <classpathentry kind="lib" path="D:/workspace/ojdbc14.jar"/>
web-info/lib中的jar不会往.classpath文件中会添加, 其余两者没有区别,编译的时候先找classpath中的jar如果没有则找web-info/lib中的jar。

web工程参照了很多文件,因此发布的时候要打成war包,使其变成单独的个体,放到web容器里。
开发环境中eclise会将工程打包放到tomcat下,进行关联。

1.工程目录:

http://img.my.csdn.net/uploads/201207/12/1342072579_4671.JPG


2.发布后的tomcat目录:

http://img.my.csdn.net/uploads/201207/12/1342072617_4762.JPG

### Java Web 应用的三层架构 Java Web 应用程序通常采用分层架构设计来提高模块化程度和可维护性。典型的三层架构由表示层、业务逻辑层以及数据访问层组成。 #### 表示层 (Presentation Layer) 这是应用程序的第一层,负责处理用户的输入并展示信息给用户。对于基于Web的应用来说,这一部分主要通过浏览器呈现HTML页面,并可能涉及JavaScript框架或库用于增强用户体验。在某些情况下,前端可以部署在一个独立的服务上,比如Windows Azure Web Sites这样的平台[^1]。 ```html <!-- Example HTML snippet --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Application UI</title> </head> <body> <!-- User interface components here --> </body> </html> ``` #### 业务逻辑层 (Business Logic Layer) 该层包含了应用程序的核心功能和服务实现。它接收来自客户端请求的数据,在执行必要的验证和其他操作之后调用适当的方法去更新数据库或其他持久存储中的状态变化。此层次结构允许开发者利用诸如Spring MVC之类的框架所提供的特性,这些框架不仅能够管理HTTP请求到控制器之间的映射关系,还提供了依赖注入等功能的支持[^2]。 ```java // Business logic example using Spring service component @Service public class UserService { @Autowired private UserRepository userRepository; public void registerUser(User user){ // Perform business validation... // Save new user into repository/database. userRepository.save(user); } } ``` #### 数据访问层 (Data Access Layer) 最后一层专注于与底层数据库交互的任务。这包括创建SQL查询语句以检索、插入、修改记录等动作;同时也涉及到连接池管理和异常处理等方面的工作。一个具体的例子可能是编写JDBC模板类来进行CRUD(Create, Read, Update, Delete)操作[^4]。 ```java @Repository public class JdbcUserRepository implements UserRepository { @Override public List<User> findAll() { String sql = "SELECT * FROM users"; return jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(User.class)); } // Other CRUD methods... } ``` 这种分离式的开发模式有助于简化复杂系统的构建过程,并使得各个组件更容易测试和维护。此外,遵循良好的软件工程实践,如定义清晰的设计模式,可以帮助团队成员更高效地协作解决问题[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值