从 SSH实例《在线考试系统》 看SSH系统分层模型
系统源代码 http://download.csdn.net/detail/yu422560654/4536270系统有严格的分层,主要分为表现层、MVC控制层、业务逻辑层、DAO层和数据持久层。不同的层封装不同的应用组件,各层的组建以松耦合的方式组织在一起,提供更好的可扩展性。表现层主要是JSP页面充当,负责收集用户的请求数据并提交到指定的控制器。当系统处理完用户的请求后,JSP页面还
系统源代码 http://download.csdn.net/detail/yu422560654/4536270
系统有严格的分层,主要分为表现层、MVC控制层、业务逻辑层、DAO层和数据持久层。不同的层封装不同的应用组件,各层的组建以松耦合的方式组织在一起,提供更好的可扩展性。
表现层主要是JSP页面充当,负责收集用户的请求数据并提交到指定的控制器。当系统处理完用户的请求后,JSP页面还负责将处理结果呈现给用户。(禁用JSP页面的Java脚本可以保证JSP页面作为表现层的纯洁性)
JSP的所有请求都想Struts的ActionServlet发送,通过这种方式,Struts成为系统的前端控制器,所有的请求都将由Struts来处理。ActionServlet拦截到用户请求后,将请求转发到用户定义的业务逻辑控制器。
将所有请求都使用ActionServlet拦截还有一个好处,将所有的JSP页面都放在WEB-INF/路径下,可以避免用户直接访问JSP页面,提供了系统安全性。
当ActionServlet转发用户请求时,并没有转发实际的Action处理类,而是转发给Spring提供的DelegatingActionProxy类,这个类负责将所有的请求转入Spring容器内,而Struts原有的业务逻辑控制器则由Spring容器负责管理。通过这种方式,可以实现Struts与Spring的整合。下图给出了从Struts转入Spring容器中的Bean顺序图。
一旦进入了Spring IoC容器的内部,IoC容器负责创建系统所需的控制器,每次用户请求到达时,IoC容器都会重新创建一个新的控制器组件。
控制器组件依赖系统的业务逻辑组件,这种依赖也无须控制器组件主动去寻找,由Spring容器将业务逻辑组件注入到控制器组件。业务逻辑组件包含了系统的全部业务逻辑方法,本系统的业务逻辑方法放在业务逻辑中实现,而不是在Domain Object中实现。
事务采用Spring的声明式事务框架。通过声明式事务,无须将事务策略以硬编码的方式与代码耦合在一起,而是放在配置文件中声明。业务逻辑组件可以更专注业务的实现,从而简化了开发。同时,声明事务降低了不同事务策略的切换代价。
注:声明式事务是基于Spring的AOP实现,实际上,AOP并不是仅仅提供声明式事务管理,还可以管理基于AOP的权限管理等功能。
DAO层主要包含了系列的DAO组件,将系统中的给中数据库访问都封装在DAO方法里,为上一层业务逻辑方法的实现提供支持。DAO对象基于Spring的HibernateDaoSupport类实现,继承HibernateDaoSupport的DAO对象很简单,程序员无须管理Hibernate的SessionFactory、Session等对象。程序开发者通过Spring提供的HibernateTemplate完成数据库操作。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)