JavaEE项目的目录结构

一个好的、清晰的目录结构可以方便日后的维护,可以帮助维护人员快速的定位到代码文件;

JavaEE的项目中(大多数都是web项目),有一些在业界中耳熟能详的术语,比如:

dao(数据访问对象):持久层,主要负责与数据库打交道,从模式的角度来说,dao中不应该有业务逻辑;

dto(数据传输对象):层间传递参数的对象;早期,方法的参数都是直接填写的,如:void method(int i,int j);

这种直接填写的参数有一些不方便之处,就是参数的顺序要一一对应,两三个参数倒是能应付,要是10个,8个的话,谁都得蒙圈;所以后来提出了DTO,一个基于javabean规范的对象,用于封装参数。另外也可以考虑使用Map来封装参数,但用Map封装参数的话,需要明确key的定义;

service(BO) -  服务层,又叫业务层,我个人觉得业务层比较贴切;早期有一帮人把这一层成为BO(业务对象).

该层主要是放置业务逻辑的,涉及到的数据库操作就调用dao。有些小型系统,我个人建议可以将这层去掉,直接将业务逻辑编写在dao层中,少一层是一层啊;

controller(action) : 这货是mvc中的‘c’,属于web前端,位于view与service层之间。

ok,写到这,与java相关的都介绍完了。下边是一些与web相关的内容:

编写web,主要包括:html,css,javascript,images等,还有就是jsp,或者模版文件了;

有了上边的内容,那么建立一个合理清晰的项目目录就不难了;

下边是我推荐的一个目录结构:

JavaEE项目的目录结构

这是一个标准的eclipse工程;其中自定义的目录有:

doc - 主要存放与该项目相关的文档,比如er图、用例文档、设计文档、用户使用手册等等。恺哥的建议是,尽量将项目相关的东西放在一起,一并加到版本控制库进行管理,省着到时候张三一份,李四一份,都搞不清谁的是最新版本了,更有甚的是,费了九牛二虎之力写的文档最后找不到了。

src - 这是存放java以及配置文件的主要目录,其中有:

dao / dto / test

此处的包命名规则,我个人建议是这样:

用dao包举例:

dao的前缀,是签名;如:net.oschina.dao。其中net.oschina就是签名前缀;

dao的后缀,是模块名称;如:net.oschina.dao.blog。其中blog就是模块名称

对于dto下边是否还需要按照模块进行拆包,取决于系统的规模,如果规模很大,一个模块就有很多dto的话,那还是建议与dao的模块名称规则一致,比如:net.oschina.dto.blog

为什么没有service层?我个人的观点是能少一层就少一层,越简单越好,所以我提倡将业务逻辑与数据访问做到一起,这样也方便维护代码的时候,用ctrl跳来跳去。

test 目录是存放一些测试文件

web层的目录结构:

标准的javaee规范要求,webapp必须有一个命名为WEB-INF的目录,在该目录之外的资源,用户是可以通过浏览器进行直接访问的,位于该目录下的所有资源,用户通过浏览器是无法访问的,但内部servlet是可以进行调用的。所以很多mvc框架(如:springmvc)提倡,将jsp文件放在WEB-INF目录下进行保护,所有的jsp访问都通过servlet进行跳转。

其实web层目录结构没啥好解释的,已经一目了然了。

以上是根据我个人经验写的一边小文章,欢迎交流、指正。希望对你能有一些帮助。


转载于:https://my.oschina.net/kzhou/blog/108971