对一个Java FrameWork的分析(一)

博主分享项目中使用的Java FrameWork经验,该框架基于J2EE技术,核心是MVC。目前流行的Struts虽符合MVC思想,但在应用程序体系细节上较模糊,如Action包含过多业务逻辑。博主提出可将MVC三层细分为五层。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在做的一个项目,使用的一个Java FrameWork感觉上对于大型项目非常适用,现在就本人的一点使用经验和几个月来对这个FrameWork的了解,概括的向大家介绍一下这个FrameWork

整个FrameWork使用J2EE技术,其实核心思想还是MVC,目前来说使用MVC思想的FrameWork非常多,最流行的应该是Apache公司推出的Struts,但是Struts整体只分三层:ViewControllerModel,这是完全符合MVC思想的一个FrameWork。其实Struts使用到现在反映很好,许多大中型项目都在用它,譬如一些大型的ERP项目也在使用它,但是我个人觉得Struts对于整个应用程序体系来说还不是很清晰,也就是说虽然它使用MVC思想,也明确了MVC的一些体系结构,实现了ViewControllerModel这三层,但是在一些具体的细节上还是比较模糊的,就拿StrutsAction来说,Action里面包含了太多的业务逻辑,使得整个应用程序思路不是很清晰。那有没有更清晰的FrameWork能够弥补这个缺陷呢?

我们可以把ViewControllerModel这三层分的更细,分成五层,如下图:

1HP FrameWork的五层结构

1、  Presentation这一层主要是负责View这一层,也就是说这一层主要是和客户打交道,所有的Client管理都在这一层。(关于详细分析见后)

2、  Application这一层主要分成两层:HtmlActionEJBActionHtmlAction是简单的处理Client传递过来的数据,然后把处理后的数据通过一个Event包装传递给EJBActionEJBAction再调用ServiceBean的方法处理业务逻辑,然后把返回Client的数据再原路返回到Client。在这一层要抛出很多的Exception,保证传到ServiceBean里的数据是正确的。(关于详细分析见后)

3、  Services 这一层包含了整个应用程序的业务逻辑,也就是说所有的数据从EJBAction传递过来后,只是正确的数据,但是否是有效的数据,还得在ServiceBean里进行处理,ServiceBean对业务数据的处理后若要对数据库存储数据则要调用EntityBean,若只是查询数据则调用DAO方法。(关于详细分析见后)

4、  Domain这一层主要是EntityBean。(关于详细分析见后)

5、  Persistence 这一层是主要与数据库进行交互的一层,所有的数据增删改或存储过程都在这一层实现。(关于详细分析见后)

1.1 Presentation

   这一层是view层,主要使用了JSTLJavaScriptHtml等技术,其实对于B/S结构的应用程序开发,Client开发使用这三种语言就绰绰有余了,足以应付所有的需求。

  JSTLSun公司开发的标签库,比起在JSP页面中使用Java语言,JSTL使得程序简单可读性增强,这对应用程序的维护提供了方便性。

Jar包库里必须引入jstl.jar

在程序中我们只要引入上面那两条标签库就可以使JSP支持JSTL标签库了。

在程序中WEB模块的目录结构如图所示:

所有的JSP页面按模块放好,所有的web模块所需要的东西都在docroot目录下:

很多的XML配置文件都放在docroot/web-inf目录下,对于客户端的一个JSP页面就是一个Screen,必须在screendefinitions_en_US.xml文件中,所有的*.do跳转都必须定义在Mapping.xml文件里具体的定义见下图。

这是定义的Screen文件:

定义的*.do文件:

所有的WEB层的需要的东西,如上所说,下面分析Application层。

框架说白了就是JAVA工作者多年以来总结出的些开发标准。让我们可以以成功的经验模式来开发我们自已的系统,般使用框架的好处是 ·在好的框架下,开发者只需要写些必须的代码;他们不需要直接接触底层的API。 这点很重要。 ·经过良好设计的框架可以为程序提供清晰的结构并且提高程序的内聚性。好清晰的结构使得其他人可以更容易加入项目。 ·一个容易使用的框架可以通过些例子和文档为用户提供最佳实践。 ·采用成功的框架的代码比自己的代码容易测试 J2EE本身提供了些框架。比如, Enterprise Java-Beans (EJB) container或者 Servlet engine 而这些框架般在中小工程中我们都不会使用,会让我们把大量的时间浪费在开发框架上。 而现在比较流行开源框架,主要是struts,hibernate,spring等 比如struts是在原有mvc基础上实现在代码分离等功能,非常好用。 而hibernate可以把我们的关系型数据库转换成我们在JAVA中的面像对像来使用。从而让我们在开发时不需要直接写SQL语句,比如database.getName();就可以直接把数据库中的用户名取出来。 Spring J2EE框架被大规模地运用到项目中,而项目总要负责这些框架以及自己业务代码的连接,使之真正融合到起。Spring就是专注于这个问题的,它和Hibernate融合的很好。 这三种框架在起并不冲突,所以现在最常用的框架就是 struts+hibernate+spring就像我们盖房子样,先把框架搭好,我们在在上面写代码就很规范。 Struts框架介绍 : Struts只是一个MVC框架(Framework),用于快速开发Java Web应用。Struts实现的重点在C(Controller),包括ActionServlet/RequestProcessor和我们定制的 Action,也为V(View)提供了系列定制标签(Custom Tag)。但Struts几乎没有涉及M(Model),所以Struts可以采用JAVA实现的任何形式的商业逻辑。 Spring是一个轻型容器(light-weight container),其核心是Bean工厂(Bean Factory),用以构造我们所需要的M(Model)。在此基础之上,Spring提供了AOP(Aspect-Oriented Programming, 面向层面的编程)的实现,用它来提供非管理环境下申明方式的事务、安全等服务;对Bean工厂的扩展ApplicationContext更加方便我们实 现J2EE的应用;DAO/ORM的实现方便我们进行数据库的开发;Web MVC和Spring Web提供了Java Web应用的框架或与其他流行的Web框架进行集成。 就是说可将两者起使用,达到将两者自身的特点进行互补。 spring 框架介绍 : 它关注的领域是其他许多流行的Framework未曾关注的。Spring要提供的是种管理你的业务对象的方法。 Spring既是全面的又是模块化的。Spring有分层的体系结构,这意味着你能选择仅仅使用它任何一个独立的部分,而它的架构又是内部致。 因此你能从你的学习中,得到最大的价值。例如,你可能选择仅仅使用Spring来简单化JDBC的使用,或用来管理所有的业务对象。 它的设计从开始就是要帮助你编写易于测试的代码。Spring是使用测试驱动开发的工程的理想框架。 Spring不会给你的工程添加对其他的框架依赖。Spring也许称得上是个站式解决方案,提供了一个典型应用所需要的大部分基础架构。它还涉及到了其他framework没有考虑到的内容。 尽管它仅仅是一个从2003年2月才开始的开源项目,但Spring有深厚的历史根基。 Spring架构上的好处 在我们进入细节之前,让我们来看看Spring能够给工程带来的种种好处: Spring能有效地组织你的中间层对象,不管你是否选择使用了EJB。如果你仅仅使用了Struts或其他为J2EE的 API特制的framework,Spring致力于解决剩下的问题。 Spring能消除在许多工程中常见的对Singleton的过多使用。根据我的经验,这是一个很大的问题,它降低了系统的可测试性和面向对象的程度。 通过种在不同应用程序和项目间致的方法来处理配置文件,Spring能消除各种各样自定义格式的属性文件的需要。曾经对某个类要寻找的是哪个 魔法般的属性项或系统属性感到不解,为此不得不去读Javadoc甚至源编码?有了Spring,你仅仅需要看看类的JavaBean属性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值