Struts2、Spring、Hibernate 高效开发的最佳实践
上图中,系统只有一个 action 配置。每个业务操作,不再对应一个 ActionSupport 子类,而是对应一个 ActionSupport 子类的类方法,利用 Struts2 的动态方法特性,使得业务方法摆脱了繁琐的配置,方便的增加和删除。全面的 result 配置,解决了各种页面跳转的问题。Action 方法的起名,遵守了权限与业务模型规约,让模型选择与权限控制交给框架来实现,同时访问的操作名就是【方法名】 .action。下面,将一一对框架的各部分进行讲解。
清单 1 定义了很多规则。首先,该配置使用了动态方法调用技术,这可以使得许多的 Action 方法可以声明到一个类里,不用重复定义 Action 类,同时对业务的增加和删除可以简约到对 Action 类里方法增加和删除,增加的 Action 方法不需进行其他配置,如果业务被删除,则只需要将方法注释或者删除,非常方便。第二,配置的 package 继承于 json-default,也就是说这个包里的 action 是支持 Ajax 调用的,默认的,如果返回 ERROR、SUCCESS,则会将 Action 序列化为 JSON 返回到客户端。我们定义了各种的跳转类型,包括重定向到页面(具体的页面由 Action 里的 url 指定)、重定向到 Action、重定向到错误页面、流类型的返回等等,这为我们动态的选择返回结果数据提供了方便。那么使用上述的配置,对我们开发有什么好处呢?假设有一个新的业务,我们只需要在 Action 添加新的方法,如清单 2 所示。
清单 2. 添加新业务方法
具体的配置内容,读者可以搜索 Struts2 的 validation 框架教程。
利用 JEE Eclipse 生成 Hibernate 的 JPA 模型
IBM 提供了 JEE 版的 Eclipse,专门用于开发 Java EE 的应用,它提供了从数据库中生成符合 JPA 规范的数据模型的能力。Hibernate3 以后,支持了 JPA 规范(不是完全支持,但是已经较为全面),利用 JEE Eclipse 的生成能力,就可以避免繁琐的 hbm 文件的配置。同时,JPA 的规范里,还可以提供 NamedQuery、OrderBy 等注解,对于复杂的数据库,该规范可以减少开发时间。
UI 重用
Struts2 的 action 标签,用于调用某个 action。这个标签笔者认为非常有用,尤其体现在 UI 重用中,比如用户管理中,在很多个界面里,都允许用户信息修改和用户删除,那么我们就可以将用户信息修改和用户删除的页面代码以及 JavaScript 放在一个 JSP 里,同时定义一个 Action 方法 ( 名为 A),为这个 JSP 执行初始化。接下来在允许进行用户修改和删除的界面,都用 s:action 标签调用这个 A 方法,设置 executeResult 为 true,将用户修改和删除的代码包含在页面里。这样就实现了 Action 的重用。如果重用的界面不需要服务器的初始化,这直接使用 jsp:include 或 s:include 引用重用的 JSP。
?
小结
本文通过一系列的讲解,讲述了如何搭建一个通用的 SSH 开发框架,陈述了其中的设计思想,由于篇幅限制,文章只介绍了框架中的重要部分和重要思想,希望读者可以从中获益。由于笔者水平有限,如有错误,请联系我批评指正。
<!-- CMA ID: 752714 --><!-- Site ID: 10 --><!-- XSLT stylesheet used to transform this file: dw-document-html-6.0.xsl -->
参考资料
学习
参考“Struts2 官方网站 ”,了解 Struts2 的最新动态。了解 “Struts2 的拦截器 ”,学习 Struts2 的拦截器,活学活用。
查看“基于角色 - 功能 - 资源的权限控制模型的设计与实现 ”文章,了解权限控制的基本原理和实现方法。
查看“spring 五个事务隔离级别和七个事务传播行为 ”,了解 Spring 的事务隔离级别和事务传播行为。
查看“JPA 规范 ”,了解 JPA 规范,学习如何使用 JPA 规范配置 Hibernate 模型。
查看“Java 反射机制 ”,了解 Java 反射机制,这是很多框架的设计基础。
查看“Java 注解 ”,了解 Java 注解技术,它是基于反射技术的,JPA 的规范可以基于注解配置等。
developerWorks Java 技术专区 :这里有数百篇关于 Java 编程各个方面的文章。
讨论
加入 developerWorks 中文社区 。查看开发人员推动的博客、论坛、组和维基,并与其他 developerWorks 用户交流。作者简介
杨硕,东北大学信息学院研究生,热爱 Eclipse 以及 Web 技术,熟悉 Web2.0 相关技术。她的邮箱是 weiqiang.john@gmail.com。
魏强,东北大学软件学院硕士研究生,现在主要从事 Eclipse 插件的开发,同时热爱着 Web 技术,尤其对 Java Web 相关技术,更是情有独钟。他的邮箱是:neuswc20063500@gmail.com。
刘强,就职于中科院沈阳计算所,擅长并专注于数据库设计,对网络安全方面感兴趣。
?