`
zwchen
  • 浏览: 799461 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

一种快速开发的Java Web架构设计和实现(代码篇)

阅读更多
这篇文章写得太粗糙,不想浪费大家时间(原帖删),还是看我后来的改进版吧:
http://www.iteye.com/topic/47085
虽然它有很大的局限性,但还是值得参考,批判去看它吧。
本文的评论还是值得一读。
  • cottonBusiness.rar (91 KB)
  • 描述: 整个demo的所有代码,除了没有jar外
  • 下载次数: 528
  • 大小: 14.6 KB
  • 大小: 6.9 KB
分享到:
评论
6 楼 zzname 2006-12-13  
认真看了一些代码。要实现当前功能代码还是比较干净。但是如果要在这个基础上实现更负责的功能,就不好处理了,或者处理好,但代码结构很别扭。在实际应用中,都会有以下几点功能:
1,事务处理。在对多表操作时中没有看到事务处理的代码。我没有认真看过spring,如果要加上事务,怎么办。
2,条件查询,排序。就是在查询出来的列表中,添加条件查询。按照这种结构思路,如果要增加条件查询,只能有两种选择:
   第一,在sql1.properties增加固定条件,在页面获得查询值,把这些查询参数作为参数设置。这种做法只能固定一些字典查询,不能实现动态条件查询。
  第二,组织条件sql,比如:where field1=** and field2 = **。编写这个过程的代码是很复杂很费时间的。
3,排序。和第二差不多。
4,页面转跳。这是最麻烦的事情。前面一些问题可以在你代码结构的基础上找技巧可以解决,但这个问题在你代码中没有看到任何解决方案。比如你根据条件(field1=v1 and field2 = v2)获得一个列表,点击其中一个记录的修改按钮,然后在修改页面点击保存按钮,然后回到列表页面,怎样保证那些条件的设置值还保存?在实际系统中,到处是这样的转跳,不复杂,但很麻烦。如果在实现过程中,没有快速开发的解决方案,算不上是快速开发架构。顺便说一下,AJAX的最初出现的原因就是为了解决这种问题。如果不使用AJAX解决,又不解决这个问题,实际是用2年前的思路在开发

另外在代码中,我第一眼发现的是使用Map来代替了VO来保存对象。虽然Map在存取上的时间都达到常量,但总觉得不雅观。即使性能上不考虑,在开发中,获取一个对象的时候,肯定经常要copy字段放入get()中。如果是100多个字段表,开发过程中,其中一个字段对不上,要找出来,够受的。用Map的其它弊端,看看其它人怎么说。
5 楼 zwchen 2006-12-13  
together 写道
嗯,怎么说呢,有这种精神不错。很多人缺乏的就是探索和思考的精神。
在hibernate出现以前,很多人也是自己实现了类似作者所说的一套自有ORM组件的。一般也都是要用map和list。

随便看了一下楼主的二个util类,其它的没细看,挑点刺:
DateTimeUtils里定义ONE_YEAR = ONE_DAY * 365;润年366天呢?日期的操作,还是应该使用GregorianCalendar来操作的。

RequestParamUtils里:这个方法
String[] getStrings(HttpServletRequest request, String key)
如果传过来的不是一个数组,而只是一项数据,你就会取不到了。比如在用户列表中,可以选择多项用户进行处理。在列表中记录大于1的时候,使用getParameterValues是可以取到数据的。但如果列表中记录正好只有一条,使用这个方法就取不到数据,但数据确实给你传递过来了,怎么办?所以需要再判断处理一下才对。


呵呵,这些你就别较真了,而且写这些基础工具类很简单,你说的那个应该调用getString方法就ok了吧?需要时间,我那个应用架子整个才用了两天时间。我现在不是做产品啊。
请一定理解我发帖子的本意:我只是想演示用Map、List这些容器,而不用JavaBean(POJO)或是Java的OO怎么解决问题,而是Data Oriented,所以最好有PowerDesigner或ERwin来建模。 
4 楼 zwchen 2006-12-13  
Lucas Lee 写道
我看了超过5分钟,没看出来是什么逻辑。
解释一下,比如新加入一个简单的表,如客户类型,只有两三个字段的,需要配置哪些东西,写那些代码?

如果你新加一个简单表,需要的简单流程:
1、在db里面创建该表
2、在sql1.properties里面定义一条sql语句,如client_type_insert=insert into.....,并且在db的sql编辑器下测试通过
3、写ClientTypeService类的CRUD操作,继承于BaseService,请对照UserService。对于一般的操作调用,之用调用pm(PersistenceManager)和qm(QueryManager)进行操作就ok了,不过其它的,如存储过程,需要扩充那两个类,因为现在它们还不完整。
4、写ClientTypeService的单元测试代码,如ClientTypeServiceTypeTest。
5、写ClientTypeAction类,继承于BaseAction,参考UserAction
6、用dreamweaver写jsp页面,不过建议,95%的情况只需要将jsp当作模块语言,如freemaker。

整个过程熟练后,写代码很快,不知道大家是否以前有asp和php的开发经历?有就更好了。因为只有对比才理解深刻。

本应用的缺点:
1、当操作的table字段太多时候,在service层里给参数赋值确实有些烦琐,虽然很简单,hibernate为我们自动做了,但对于新手,配置那些1:1,n:1,n:n的关联,lazy loading,以及cascade和inverse很花时间,当然高手就另当别论了。
2、从jsp页面字段、到db操作字段的对照关系,这些都必须清楚,也就是说数据的key是层间约束的。其实用asp和php时这些都是默认规则。

另外,系统肯定有一些不完善的地方,因为那个demo应用的整个开发,包括基础类,我只花了两天左右的时间。






3 楼 together 2006-12-13  
嗯,怎么说呢,有这种精神不错。很多人缺乏的就是探索和思考的精神。
在hibernate出现以前,很多人也是自己实现了类似作者所说的一套自有ORM组件的。一般也都是要用map和list。

随便看了一下楼主的二个util类,其它的没细看,挑点刺:
DateTimeUtils里定义ONE_YEAR = ONE_DAY * 365;润年366天呢?日期的操作,还是应该使用GregorianCalendar来操作的。

RequestParamUtils里:这个方法
String[] getStrings(HttpServletRequest request, String key)
如果传过来的不是一个数组,而只是一项数据,你就会取不到了。比如在用户列表中,可以选择多项用户进行处理。在列表中记录大于1的时候,使用getParameterValues是可以取到数据的。但如果列表中记录正好只有一条,使用这个方法就取不到数据,但数据确实给你传递过来了,怎么办?所以需要再判断处理一下才对。
2 楼 LucasLee 2006-12-13  
我看了超过5分钟,没看出来是什么逻辑。
解释一下,比如新加入一个简单的表,如客户类型,只有两三个字段的,需要配置哪些东西,写那些代码?
1 楼 zwchen 2006-12-12  
欢迎大家提出批评,小弟不才!



相关推荐

    Java Web 整合开发 完全自学手册 源代码

    1. **Servlet与JSP**:Java Web开发中的两大基石,Servlet是服务器端的Java应用程序,用于处理HTTP请求,而JSP则是一种动态网页技术,将HTML和Java代码相结合,实现视图层的构建。学习Servlet和JSP的生命周期、请求...

    java web 2.0架构开发与项目实战 源代码01

    在本资源中,"java web 2.0架构开发与项目实战 源代码01",我们聚焦于Java Web应用程序的开发,特别是在Web 2.0时代的技术和实践。Web 2.0是一个概念,它强调互联网作为交互式平台,用户参与度更高,社交网络和富...

    Java Web开发实践教程——从设计到实现(第2版)源代码

    《Java Web开发实践教程——从设计到实现(第2版)》是一本深入浅出的教程,旨在帮助读者掌握Java Web应用的开发技术。源代码是学习编程书籍的重要辅助资源,它提供了书中示例的直观展示,使得理论与实践相结合,...

    Tomcat与Java Web开发技术详解源代码.rar

    4. **MVC设计模式**:讲解Model-View-Controller模式在Java Web中的应用,以及如何通过Servlet和JSP实现简单的MVC架构。 5. **JSTL和EL表达式**:介绍JSP标准标签库(JSTL)和表达式语言(EL),如何简化JSP页面的...

    Java Web程序设计任务教程源码(黑马程序员)

    《Java Web程序设计任务教程》是一本专注于Java Web开发实践的书籍,由中国工信出版社出版,由传智播客旗下的高端教育品牌“黑马程序员”精心编著。这本书旨在帮助读者掌握Java Web开发的核心技术和实践方法,通过一...

    Java Web应用程序设计PPT及源代码

    首先,Servlet是Java Web开发的基础,它是一种Java类,用于扩展服务器的功能。Servlet可以处理HTTP请求,生成响应,并与数据库交互。在PPT中,可能会详细介绍Servlet的生命周期、doGet和doPost方法,以及如何通过web...

    JAVA WEB项目开发案例精粹(源代码)

    JSP(Java Server Pages)则是一种视图技术,用于创建动态网页。在这些案例中,你可以看到如何编写Servlet来处理用户请求,以及如何在JSP中嵌入Java代码来展示数据。 2. **MVC框架应用** MVC(Model-View-...

    java web 开发软件

    Spring MVC是Java中实现MVC架构的流行框架,它提供了一种组织代码和处理HTTP请求的有效方式。 3. **JDBC与ORM**: JDBC(Java Database Connectivity)是Java中与数据库交互的标准API。ORM(Object-Relational ...

    java web开发教程全部代码

    总的来说,这个"java web开发教程全部代码"压缩包是一份全面的教育资源,涵盖了Java Web开发的多个重要方面,包括Servlet、JSP、MVC架构、数据库操作、实时通信以及安全控制。通过深入研究这些代码,开发者不仅能...

    基于MVC的Java Web设计与开发源代码(后面的)

    在Java Web开发中,Model-View-Controller(MVC)是一种广泛应用的设计模式,它将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。这种分离使得开发更加模块化,有助于提高代码的可...

    Java Web程序设计教程.pdf

    - Struts2框架技术应用:Struts2是用于简化Java EE Web应用开发的框架,提供了一种模型-视图-控制器(MVC)的架构模式,本书从Struts2的基础概念入手,逐步引导读者了解其高级应用和框架整合。 - Hibernate框架...

    Java Web开发详解随书源代码下载

    在Java Web开发中,Model-View-Controller(MVC)设计模式是非常常见的架构。模型负责业务逻辑,视图负责用户界面展示,控制器负责接收请求并调用模型进行处理,最后更新视图。Spring MVC是Java Web中广泛应用的一个...

    Java Web轻量级开发全体验11代码

    1. **Servlet**:Servlet是Java Web开发的基础,它是一种服务器端的Java API,用于生成动态web内容。在轻量级开发中,Servlet可以作为控制器处理HTTP请求,并调用业务逻辑。 2. **JSP(JavaServer Pages)与JSTL...

    java web开发详解源代码

    这是一种常见的Java Web应用架构,它将业务逻辑(Model)、用户界面(View)和控制逻辑(Controller)分离,提高了代码的可维护性和可扩展性。在源代码中,可能会看到Controller类用于处理请求,Model类用于封装数据...

    java设计模式和30种java架构图.zip

    1. MVC(Model-View-Controller):一种将数据模型、用户界面和控制逻辑分离的设计模式,广泛应用于Web开发。 2. 微服务架构:每个服务都是独立的,有自己的数据库,通过API Gateway进行通信,增强了系统的可伸缩性...

    Java Web开发(PDF版)

    学习Java Web开发不仅需要理解和掌握这些技术,还要通过实际项目来锻炼动手能力,比如构建一个简单的CRUD应用,或者实现用户注册、登录功能。同时,熟悉版本控制工具(如Git),了解持续集成/持续部署(CI/CD)流程...

    JAVA WEB程序开发范例宝典11-13章源代码

    在这一章,读者将接触MVC(Model-View-Controller)设计模式,这是Web应用中常用的一种架构模式。MVC帮助开发者分离业务逻辑、视图呈现和用户交互,使得代码更易于维护。可能会讲解如何使用Servlet和JSP实现简单的...

    从零开始学JAVA-WEB开发.

    Java Web开发是构建互联网应用程序的一种强大技术,它涵盖了多种技术和工具,使得开发者能够创建功能丰富的、交互式的网页应用。这个“从零开始学JAVA-WEB开发”教程显然是为初学者设计的,旨在帮助他们逐步掌握这门...

    java web接口开发demo

    RESTful API是一种设计Web服务的风格,强调资源和状态的管理,使用HTTP方法(GET、POST、PUT、DELETE等)来表示操作。在Java Web中,创建RESTful API通常使用Jersey、Spring Boot或Spark等库。这个demo可能展示了...

    Linux下基于MVC的java web开发源代码

    在Linux环境下进行基于MVC(Model-View-Controller)架构的Java Web开发,是一种常见的实践方式,特别是对于大型、复杂的Web应用程序。MVC模式能够有效地分离业务逻辑、数据处理和用户界面,使得代码更加模块化,...

Global site tag (gtag.js) - Google Analytics