Java 教程:J2EE 的最佳实践
1.
始终使用 MVC 框架。
将业务逻辑(Java Bean
和 EJB 组件)从控制器逻辑(Servlet/Struts 操作)和表示逻
辑(JSP、XML/XSLT)中清晰地分离出来。良好的分层可以带来许多好处。
这项实践非常重要,以致没有其他最佳实践可以与其相提并论。对于良好的 Java EE
应用程序设计而言,模型-视图-
控制器 (MVC) 是至关重要的。它将程序的任务简单地分
为下面几个部分:
负责业务逻辑的部分(
模型,通常使用 Enterprise JavaBeans™
或传统 Java 对象
来实现)。
负责用户接口表示的部分(视图)。
负责应用程序导航的部分(
控制器,通常使用 Java Servlet
或类 Struts 控制器这样
相关的类来实现)。
对于 Java EE,有许多关于这个主题的优秀评论,我们特别推荐感兴趣的读者可以
参考 [Fowler]
或者 [Brown]的评论,以便全面和深入地了解相关内容。
如果不遵循基本的 MVC 体系结构,在开发过程中就会出现许多的问题。最常见的问
题是,将过多的任务放到该体系结构的视图部分中。可能存在使用 JSP 标记来执行数据库
访问,或者在 JSP 中进行应用程序的流程控制,这在小规模的应用程序中是比较常见的 ,
但是,随着后期的开发,这样做将会带来问题,因为 JSP 逐步变得越来越难以维护和调
试。
类似地,我们也经常看到将视图层构建到业务逻辑的情况。例如,一个常见的问题就
是将在构建视图时使用的 XML 解析技术直接应用到业务层。业务层应该对业务对象进行
操作,而不是对与视图相关的特定数据表示进行操作。
然而,仅仅使用适当的组件无法实现应用程序的正确分层。我们常常见到一些应用程
序包含 Servlet、JSP
和 EJB
组件所有这三项,然而,其主要的业务逻辑却是在 Servlet
层实现的,或者应用程序导航是在 JSP 中处理的。您必须对代码进行严格的检查和重构,
以确保仅在模型层中处理业务逻辑,在控制器层中进行应用程序导航,而视图应该只关
心如何将模型对象呈现为合适的 HTML
和 Javascript™。
本文中这项建议的涵义应该比原始版本中的更加清楚。用户接口技术不断地发生着变
化,将业务逻辑关联于用户接口,会使得对接口的更改影响到现有的系统。几年之前 ,
Web
应用程序用户接口开发人员可能从 Servlet
和 JSP、Struts
和 XML/XSL 转换中进
行选择。在那以后,Tiles
和 Faces 非常流行,而现在,AJAX 大行其道。如果每当首选的
用户接口技术发生了更改就要重新开发应用程序的核心业务逻辑,那么就糟透了。
2. 不要做重复的工作。
使用常见的、经过证实的框架,如 Apache Struts、JavaServer Faces
和 Eclipse
RCP。使用经过证实的模式。
回到我们开始帮助客户使用刚出现的 Java EE 标准的时候,我们发现(和许多其他人
一样)
,通过直接使用基础的 Servlet
和 JSP
规范构建 UI 应用程序来开发用户接口开发
框架,可以极大地提高开发人员工作效率。因此,许多公司开发了他们自己的 UI 框架,