JSP+MYSQL拍卖网站SSH——C2C网站.rar
2.3界面的设计
Ⅰ.登陆模块,用于登录拥有各种权限类型的用户,是系统唯一的入口,界面选项中有详细的说明。
Ⅱ.用户模块,用户对物品的基本信息、物品种类、个人等信息的管理和维护,包括如下几个部分:
l 物品管理,增加、查看和竞价。
l 查看个人基本信息。
l 物品种类查看和添加,只有管理员权限有效。
l 赢取物品查看。
l 流拍物品查看
l 查看正在拍卖中的物品和详细信息。
Ⅲ.注册模块
Ⅳ.所有的页面通过SiteMesh装饰器来过滤装饰页面。
2.4系统架构设计
本系统采用的java EE的3层结构,分为表现层,业务逻辑层和数据服务层。3层体系结构将业务规则,数据访问等工作放到中间层处理,客户端不直接与数据库交互,而是通过控制器与中间层建立连接,再有中间层与数据库交互。
表现层禁止JSP内嵌java脚本,JSP页面使用Struts2标签显示数据,生成页面显示效果,这彻底的使表现层和中间层(控制层+业务逻辑层)分离。利于系统的维护和开发。
中间层采用Struts2+Spring+Hibernate,为了分离控制层与业务逻辑层:他们可分为:
l Web层,就是MVC模式的C,负责表现层与业务逻辑层的交互。调用业务逻辑层,并将业务数据返回给表现层来显示。MVC框架采用流行的开源Struts2.
l Service层(业务逻辑层),负责实现业务逻辑,对DAO对象进行正面模式的封装。
l DAO层(数据访问对象层),DAO层全部的底层数据库操作用Hibernate进行封装处理,封装了数据的增,删,查,改原子操作。这些操作都对接口进行了编程,降低了系统各个模块之间(业务逻辑层和数据访问对象层)的耦合度。
l PO层(持久化对象层),通过实体/关系映射工具将关系型数据库的数据映射成对象,实现以面向对象的方式操作数据库,本系统采用了Hibernate作为O/R Mapping框架。
通过Struts2,提供了良好的MVC模式,所有的用户请求都由Struts2的Action负责拦截,然后通过Spring提供的自动装配功能,定位Spring容器的业务逻辑组件,调用业务逻辑组件方法来处理客户的请求.
本系统还使用了SiteMesh页面装饰器,从而提供了更统一的整站效果。
数据服务层使用MySQL数据库存放数据。
系统的总体架构图2.0
2.5相关技术介绍
本系统的IoC容器使用Spring框架,Spring容器负责管理系统中所有组件,是系统最大的工厂。数据的持久化使用Hibernate完成,表现层的MVC框架使用Struts2,页面装饰使用SiteMesh框架。这些框架都是目前最流行的轻量级java EE,其中Struts2与SiteMesh的无缝整合,为本系统的大规模应用场景提供了保证。
a) Jsp技术
本系统使用JSP技术作为表现层技术,它负责收集用户的请求数据,并将用户请求数据提交到指定的控制器。当系统处理完用户请求后,jsp页面还负责处理结果呈现也用户。本系统的JSP页面禁用了java脚本,保证了JSP页面只作为系统表现层使用,避免将业务逻辑混杂在表现层中。通过使用Struts2的页面标签,可以保证JSP页面中不再出现任何小脚本,从而保证了JSP页面只有表现逻辑。
b) SiteMesh技术
SiteMesh通过PageFilter来过滤用户request和服务器response,并对服务响应增加了一定的页面装饰,然后把装饰后的页面返回给客户端。对于被封装的页面而言。完全无需关系页面被装饰器装饰(装饰器被配置在配置文件中,由装饰器配置文件来控制那个装饰器装饰那些页面)。通过这种方式可以最大限度的实现页面代码复用,并提供优秀的解耦。
c) Struts2技术
用户所有请求都由Struts2的FilterDispatcher过滤,通过这种方式,将系统的所有的请求都转入Struts2系统内,从而保证了所有的请求都交给了Struts2的Action处理。Action可以把处理结果转发任何页面,也可以不是JSP,HTML的表现层,可以使FreeMarker为表现层的技术显示。如果转发的又是一个Action,那些系统就涉及Action链,即需要修改Action转发的类型(type)为chain,
将所有的请求都使用FilterDispatcher拦截还有可以提高系统的安全性,就是帮所有的页面放入WEB-INF路径下。
本系统采用了Struts2和Spring的整合策略,当Struts2和Spring整合时,使用了Struts2提高的Spring插件,该插件将Struts2的objectFactory设置成Spring,这就意味着Struts2的Action实例也是由Spring容器负责生产,然后通过指定的Spring的自动装载策略从而让Struts2的Action定位Spring容器中的业务逻辑组件。图3.0为Struts2和Spring整合策略的协作图。
图4.0
因为Struts2的objectFactory直接改为了Spring容器,从而让Struts2的Action直接由Spring容器来产生,进而让用户请求进入Spring容器内部,一旦进入了Spring IoC容器内部,IoC容器就负责管理都有的业务逻辑组件,DAO组件,从而将系统所有的组件串联起来。
d) Spring框架
借助于Spring IoC容器的支持,容器中各个组件一松耦合的方式组合在一起,组件与逐渐之间的依赖通过Spring的依赖注入进行管理。系统中各个组件之间面向接口编程,降低了系统的异构的代价。
DAO对象的创建使用了Spring的HibernateDAOSupport作为基类,继承HibernateDaoSupport的DAO对象实现更加简单,无需管理Hibernate的SessionFactory,Session等对象。通过Spring提供的HibernateTemplate完成数据库操作。
事务采用Spring的声明式事务框架。通过声明式事务,无需将事务策略一硬编码的方式与代码耦合在一起,而是放在配置文件中声明,业务逻辑组件可以更加专注于业务的实现,从而简化开发,同时声明式事务降低了不同事务策略的切换代价。
Spring的邮件抽象层为系统的邮件通知提供了支持,Spring的邮件抽象层简化了邮件的发送。
Spring的任务调度为系统的后台任务调度提供了支持,系统周期性执行的任务判断拍卖物品是否已到最后期限,从而修改物品的状态,让最高的竞价者赢取物品。
e) Hibernate框架
Hibernate作为O/R Mapping框架使用,Hibernate提供了O/R Mapping功能简化了数据库的访问,Hibernate在JDBC层上提供了更好的封装,以面向对象的方式操作数据库,更加符合面向对象程序设计的思路。
Hibernate自己提供了一套HSQL语言来操作数据库,无需编写繁琐的SQL语句,执行冗长的多表查询,而通过对象与对象之间的关联操作数据库。它为底层的DAO提高了支持。
3.系统的实现
3.1实现Hibernate PO
Hibernate PO由两个部分组成:持久化类和映射文件,其中映射文件负责吧持久化类映射到数据库的表,并把持久化类的属性映射大到数据列。通过这种映射,就可以以面向对象的方式操作Hibernate 的PO,而Hibernate负责把这种操作转换成底层的JDBC数据库的访问。
由于篇幅有限下面将对系统中物品PO类代码进行分析:
从上面的PO类中可以知道,PO类采用的Set类型保存该实体一对多的关联实体,这也是Hibernate的关联映射策略。
当PO类中采用了Set属性来保存所有关联实体后,就可以才映射文件中使用<set../>元素来映射这种关联实体。
下面是实体映射文件代码:
上面的映射文件将item PO类映射到item数据表,并使用了系列<set../>元素来映射该实体对应关联实体。
上面配置文件中存在大量的多对一的关联映射,表示每个many-to-one子元素映射一个多对一的关联实体,增加了lazy=”false”属性,该属性表示该关联实体关闭延迟加载。每个class元素用于映射一个持久化类。
实现了系统的PO后,程序就可以通过PO的创建,修改和删除等操作,转换成底层数据库记录的新增,修改和删除等操作。
3.2管理SessionFactory
Hibernate持久化操作需要SessionFactory的基础上,系统将使用Spring的来管理Hibernate的SessionFactory。SessionFactory是数据库连接的封装。
Spring的IoC容器是一个功能强大的工厂,不仅可以管理系统中的业务逻辑组件,还可以管理系统数据源。我们将SessionFactory配置成一个普通Bean,当Spring容器启动时,系统将自动创建SessionFactory Bean。
因为Spring的Ioc容器将SessionFactory纳入了容器管理之中,而且系统的DAO组件也在容器的管理之中。因此,Spring的IoC容器还可将SessionFactory实例注入到每个需要持久化操作的组件中,从而以松耦合方式来管理Hibernate的SessionFactory,避免了直接在DAO组件中主动获取SessionFactory实例。
在Spring容器中配置SessionFactory的配置段如下:
3.3实现DAO层
系统将所有的持久层访问都封装在系统的DAO层,所有的持久化访问都通过系统的DAO组件来实现,避免业务逻辑组件与持久化访问耦合。每个DAO组件包含了数据库的访问逻辑,每个DAO组件可对一个数据表完成基本的CRUD操作。
DAO模式的实现需要以下3个部分:
l DAO工厂类。
l DAO接口。
l DAO接口实现类。
对于不同的持久层技术,Spring的DAO支持基本一致:提供一个DAO模板,将通用的操作放在模板里完成,而对于特定的操作,通过回调接口完成。使用IoC容器避免了实现自己的DAO工厂。
Spring为Hibernate提供的DAO支持类是:HibernateDaphneSupport,该支持类为实现DAO组件提供了两个便捷的方法:
l setSessionFactory(SessionFactory sf):该方法可用于依赖注入SessionFactory实例。
l getHibernateTemplate():该方法可以方便的获取HibernateTemplate实例。
获取Spring的HibernateTemlate实例后,大部分持久操作都可以通过HibernateTemlate实例的一行代码来完成。
3.3.1实现系统DAO组件
本系统包含5个实体,这5个实体对应系统的5个DAO组件,这5个DAO组件分别用于操作5个实体,并且向上支持AuctionManager业务逻辑组件的实现。
下面是系统DAO组件和业务逻辑组件得到依赖关系图4.0:
以上内容只是毕业设计作品的部分资料介绍,如果了解更多详情请联系客服QQ:57510459
购买帮助>>
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论