打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
利用JSF、SpringFramework和Hibernate构建Web应用的实例讲述(4)
File upload
目前的JSF Sun参考实现中不支持file upload。Struts虽已具有非常不错的file upload能力,然而要想使用这一特性需要Struts-Faces整合库。在JCatalog中,一个图像与一个产品相关联,在一个用户创建了新的产品后,她必须将相应的图片上传,图片将保存在应用服务器的文件系统里,产品的ID就是图像名称。
范例应用中采用  、Servlet和Jakarta Common的file-upload API来实现简单的文件上传功能,该方法包含两个参数:图像路径和图像上传结果页面。它们将通过ApplicationBean来配置,详细内容请参看FileUploadServlet类。
Validation
JSF中发布的标准validator是非常基础的,无法满足现实的需要,但很容易开发出自己的JSF validator,在范例中,我开发了SelectedItemsRange validator,它用来验证UISelectMany组件中选择的数量:详细情况请参看范例。
定制错误信息
在JSF中,你可以为converters和validators创建resource bundle和定制错误信息,一个resource bundle可在faces-config.xml中创建:
catalog.view.bundle.Messages
并将错误信息的key-value对加到Message.properties文件中:
javax.faces.component.UIInput.CONVERSION=Input data is not in the correct type.
javax.faces.component.UIInput.REQUIRED=Required value is missing.
业务逻辑层和Spring Framework
业务对象和业务服务存在于业务逻辑层中,一个业务对象不仅包含数据,而且包含相应的逻辑,在范例应用中包含三个业务对象:Product、Category和User。
业务服务与业务对象交互并提供更高级的业务逻辑,需要首先定义一个正式的业务接口,它是直接与终端用户交互的服务接口。在JCatalog中,通过在 Spring Framework帮助下的POJO实现业务逻辑层,其中共有两个业务服务:CatalogService包含Catalog管理相关的业务逻辑, UserService中包含User管理逻辑。
Spring是基于IoC概念的框架,在范例应用中用到的Spring特性包括:
◆Bean management with application contexts:Spring可以有效地组织我们的中间层对象,它能够消除singleton的proliferation,并易于实现良好的面向对象编程方法,即“编程到接口”。
◆Declarative Transaction management: Spring利用AOP实现事务管理,而无需借助于EJB容器,利用这种方法,事务管理可以用于任何POJO中。Spring的事务管理不局限于JTA,而是可以采用不同的事务策略,在范例应用中,我们将使用declarative transaction management with Hibernate transaction。
◆Data-access exception hierarchy:Spring提供了非常好的异常来代替SQLException,为利用Spring的异常,必须在Spring的配置文件中定义以下异常转换:
在范例应用中,如果一个具有重复ID的新产品被插入,将会抛出DataIntegrityViolationException,这一异常将被catch并rethrown一个DuplicateProductIdException。这样,该异常就可以与其它的异常区别处理。
◆Hibernate integration:Spring与Hibernate这样的ORM框架整合的非常好,Spring提供了对Hibernate session的高效和安全的处理,它可通过application context配置Hibernate的SessionFactories和JDBC数据源,并使得应用易于测试。
Integration层和Hibernate
Hibernate是一个开源的ORM框架,它可以支持所有主流SQL数据库系统,Hibernate的查询语言为对象和关系架起了非常好的桥梁。Hibernate提供了强大的功能以实现:数据读取和更新、事务管理、数据连接池、查询和实体关系管理等。
Data Access Ojbect(DAO)
JCatalog中采用了Dao模式,该模式抽象和封装了所有对数据源的访问,该应用中包括两个DAO接口:CatalogDao和UserDao,它们相应的实现HibernateCatalogDaoImpl和HibernateUserDAoImpl包含了Hibernate特定的逻辑来实现数据的管理和持久化。
实现
现在我们来看看如何将上面讨论的这些东西包装在一起以实现JCatalog,你可以从这个地址下载源码:http://www.javaworld.com/javaworld/jw-07-2004/jsf/jw-0719-jsf.zip
数据库设计
我们为该范例应用创建了包含4个表的数据库,如图5所示:
类设计
图6显示了JCatalog的类图
“编程到接口”的思想贯穿了整个设计实现中,在表示层,共用到四个backing bean:ProductBean、roductListBean、UserBean和MessageBean;业务逻辑层包含两个业务服务 (CatalogService和UserService)和三个业务对象(Product、Category和User);Integration层有两个Dao接口和它们相应的Hibernate实现,Spring的application context用来管理绝大多数的业务逻辑层和integration层的对象;ServiceLocator将JSF和业务逻辑层整合在了一起。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Huihoo.com - 利用JSF、SpringFramework和Hibernate构建Web应用的实例讲述
JSF+Spring+Hibernate的实例讲解
一篇SSH框架的应用介绍
ssh框架的好处
使用struts+spring+hibernate 组装web应用
【SSH2框架(理论篇)】
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服