ssh框架搭建教程

上传人:feng****heng 文档编号:187756951 上传时间:2023-02-16 格式:DOCX 页数:22 大小:507.84KB
收藏 版权申诉 举报 下载
ssh框架搭建教程_第1页
第1页 / 共22页
ssh框架搭建教程_第2页
第2页 / 共22页
ssh框架搭建教程_第3页
第3页 / 共22页
资源描述:

《ssh框架搭建教程》由会员分享,可在线阅读,更多相关《ssh框架搭建教程(22页珍藏版)》请在装配图网上搜索。

1、src-EB-ffi曲 tj:+ :“.:,:.“:;:.“:.,:.“第一步,创建WEB工程,添加struts支持第二步,分包白”於 58sshl com.alex.sshc om.alex.ssh.action 匚 om.alex.ssh.dao com.alex.ssh.entity c om. alex.ssh. form匚 om.alex.ssh.service第三步,添加 spring 支持第四步,添加 spring 配置文件第五步,在web.xml文件中配置初始化读取参数(spring的配置文件) contextConfigLocation /WEB-INF/applicatio

2、nContext.xml 第六步,配置 spring 监听器public class org.springframework.web.context ContextLoaderListener mplements javax.servlet.ServletContextListener org.springframework.web.context.ContextLoaderL istener第七步,在struts-config.xml文件中配置请求处理器,将struts请求委托给spring代理,达到 控制反转的目的public class org.springframework.web.s

3、truts DelegatingRequestProcessor extends org.apache.struts.action.Requestprocessor 第八步,添加 hibernate 支持I 护 New Hibernate Project凶Hibernate Support for MyEclipseEnable project for Hibernate developmentHibernate Specification:Hibernate 2 雷 Hibernate 3Hibernate 3.1选择springl. 2支持的hib3版本Select the librari

4、es to add to the ounapacnShow: 两 MyE匚lips亡 Libraries I- User LibrariesEl Hibernate 3.0 Core Libraries - ll Hibernate 3.0 Advanced Support Libraries - 回 Spring 1.2 ORM/DAO/Hibernate3 Libraries - 可以重复添加包ormHie网 and edit libraries,JAR Library InstallationAdd checked Libraries to project build-path(* Co

5、py cheeked Library Jars to project folder and add to build-patHLibrary folder: |/WebRoot/WEB-INF/libBrowse.申 New Hibernate ProjectHibernate ConfigurationDefine 5pring-Hibernate 匚onfigurationSpring configuration file to be used by PlyE匚lipse Hibernate Tools:厂 New Spring 匚onfiguration FileQ Existing S

6、pring configuration fik诜择现有的 aDDlicationCont ext. xmlSpring Config: |webRoot/WEEi-INF/applicationContext.xml 二|5pring-Hibemate Configuration Support* No Hibernate LocalSessionFactory found in the Spring configuration file defined above. *Enter the Spring LoealSessionFactciry Bean ID to be 匚rested an

7、d used by MyEdipse5pring-Hibemate Tools. Then press Next to specify the DataSource 匚onne匚ticin details:SessionFactory ID: |sFid|厂将 hi b 中 sessionF ac t cry 交给 spr i ng 管理 实质也是控制反转,在以后的DAO中可以通过被反转師ID获取 sessionF actory第九步,配置好 hibernate 以后,在 applicationContext.xml 文件中会自动生成“数据源” “ sessionFactory ”,代码如下:

8、 !-将hib中的sessionFactory封装一一bean id=sfidclass=org.springframework.orm.hibernate3.LocalSessionFactoryB ean!一一 引用实例化好的数据源 一一property name=dataSourcerefbean=dsid /property propertyname=hibernatePropertiesprops!一一 设置数据库方言 一一org.hibernate.dialect.SQLServerDialecttrue第十步,通过表,反向生成” 实体类”,” 配置文件”第十一步,当正确添加实体后

9、,在 appilcationContext.xml 文件中会自动添加实体类的映射!-将hib中的sessionFactory封装一一bean id=sfidclass=org.springframework.orm.hibernate3.LocalSessionFactoryBean/bean第十二步,修改DAO类的位置,修改配置文件属性值1 I 58springproject* 58sshl-酵 src+com.alex.ssh1 “田 com.alex.ssh.action- 占 com.alex.ssh.dao+ -ERoot58DAO.java-曲 com.alex.ssh.entit

10、y42 RootSSJava我j Root58.hbm.xmlffi com. alex.ssh. form ffi com.alex.ssh.servicebean id=Root58DAO class=com.alex.ssh.dao.Root58DAOproperty name=sessionFactoryref bean=sfid /property/bean第十三步,添加 service 类,反转 service Classbean id=rootService class=com.alex.ssh.service.RootService propertyname=dao r e f

11、 b e a n=R o o t58DAO/ /property/beanpublic void save(RootForm root) Root58 r = new Root58(); r.setUsername(root.getName(); r.setUsercity(root.getCity();this .getDao().save(r);第十四步,添加 struts 部分(添加 jsp,form ,action)第十五步,将 struts-config.xml 文件中 action 节点的 type 属性去掉第十六步,在 acpplicationContext.xml 文件中代理

12、action 类,也是一种控制反转的实现 第十七步,运行调试SSH 生命周期Struts,Hibernate,Spring 经典面试题收藏关键字: struts, hibernate, springHibernate 工作原理及为什么要用?原理:1. 读取并解析配置文件2.读取并解析映射信息,创建 SessionFactory3. 打开 Sesssion4. 创建事务 Transation5. 持久化操作6. 提交事务7. 关闭 Session8. 关闭 SesstionFactory为什么要用:1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。2. Hibern

13、ate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的 简化DAO层的编码工作3. hibernate 使用 Java 反射机制,而不是字节码增强程序来实现透明性。4. hibernate 的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系 数据库,从一对一到多对多的各种复杂关系。2 Hibernate 是如何延迟加载?1. Hibernate2延迟加载实现:a)实体对象b)集合(Collection)2. Hibernate3 提供了属性的延迟加载功能当 Hibernate 在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时, 对象

14、才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器 的性能。3Hibernate 中怎样实现类之间的关系?(如:一对多、多对多的关系)类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们 程序中把所有的表与类都映射在一起,它们通过配置文件中的 many-to-one、one-to-many、 many-to-many、4 说下 Hibernate 的缓存机制1. 内部缓存存在 Hibernate 中又叫一级缓存,属于应用事物级缓存2. 二级缓存:a) 应用及缓存b) 分布式缓存条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低

15、、同一数据被系统 频繁使用、非 关键数据c) 第三方缓存的实现5 Hibernate 的查询方式Sql、Criteria,object comptositionHql:1、 属性查询2、参数查询、命名参数查询3、关联查询4、分页查询5、统计函数6 如何优化 Hibernate?1.使用双向一对多关联,不使用单向一对多2. 灵活使用单向一对多关联3. 不用一对一,用多对一取代4. 配置对象缓存,不使用集合缓存5. 对多集合使用Bag,多对多集合使用Set6. 继承类使用显式多态7. 表字段要少,表关联不要怕多,有二级缓存撑腰7. Struts工作机制?为什么要使用Struts?工作机制:Stru

16、ts 的工作流程: 在web应用启动时就会加载初始化ActionServlet,ActionServlet从 struts-config.xml 文件中读取配置信息,把它们存放到各种配置对象 当ActionServlet接收到一个客户请求时,将执行如下流程.-检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;-(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到 ActionForm 对象中;-(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法; -

17、(4)如果 ActionForm 的validate。方法返回null或返回一个 不包含 ActionMessage的 ActuibErrors 对象, 就表示表单验证成功;-(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果 相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;-(6)Action的execute()方法返回一个ActionForward对象ActionServlet在把客户请求转发给 ActionForward 对象指向的 JSP 组件;-(7)ActionForwa

18、rd 对象指向 JSP 组件生成动态网页,返回给客户;为什么要用:JSP 、Servlet、JavaBean 技术的出现给我们构建强大的企业应用系统提供了可能。但用这些 技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来 的规则,这就是框架,Struts便应运而生。基于Struts开发的应用由3类组件构成:控制器组件、模型组件、视图组件8 Struts 的 validate 框架是如何验证的?在struts配置文件中配置具体的错误提示,再在FormBean中的validate()方法具体调用。9 说下 Struts 的设计模式MVC模式:web应用程序启动时就会加

19、载并初始化ActionServler。用户提交表单时,一个 配置好的 ActionForm 对象被创建, 并被填入表单相应的数据, ActionServler 根据 Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionForm的 Validate ()验证后选择将请求发送到哪个Action,如果Action不存在,ActionServlet会先 创建这个对象,然后调用Action的execute ()方法。Execute ()从ActionForm对象中获 取数据,完成业务逻辑,返回一个 ActionForward 对象, ActionServle

20、t 再把客户请求转发给 ActionForward 对象指定的 jsp 组件, ActionForward 对象指定的 jsp 生成动态的网页,返回 给客户。10 spring 工作机制及为什么要用?1. spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负 责对请求进行真正的处理工作。2. DispatcherServlet 查询一个或多个 HandlerMapping,找到处理请求的 Controller.3. DispatcherServlet 请请求提交到目标 Controller4. Controller进行业务逻辑处理后,会返

21、回一个ModelAndView5. Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视 图对象6. 视图对象负责渲染返回给客户端。为什么用:AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序 代码中。使用 AOP 后,公共服务 (比如日志、持久性、事务等)就可以分解成方面并应 用到域对象上,同时不会增加域对象的对象模型的复杂性。IOC 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如 单词倒置所表明的,IOC就像反过来的JNDI。没有使用一堆抽象工厂、服务定位器、 单元素(s

22、ingleton)和直接构造(straight construction),每一个对象都是用其协作对象构造 的。因此是由容器管理协作对象( collaborator)。Spring即使一个AOP框架,也是一 IOC容器。Spring最好的地方是它有助于您替换对象。 有了 Spring,只要用JavaBean属性和配置文件加入依赖性(协作对象)。然后可以很容易 地在需要时替换具有类似接口的协作对象。 Spring框架是一个分层架构,由7个定义良好的模块组成。Spring模块构建在核心容器之 上,核心容器定义了创建、配置和管理 bean 的方式,如图 1 所示。组成 Spring 框架的每个模块(

23、或组件)都可以单独存在,或者与其他一个或多个模块联合 实现。每个模块的功能如下: 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory, 它是工厂模式的实现。BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性 规范与实际的应用程序代码分开。 Spring上下文:Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring 上下文包括企业服务,例如JNDI、EJB、电子邮件、国际化、校验和调度功能。 Spring AOP:通过配置管理特性,Spring AOP模块直接将面向方面的编程功能集成到了 Spring

24、 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。 Spring AOP 模块为基于Spring的应用程序中的对象提供了事务管理服务。通过使用Spring AOP,不用 依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。 Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常 处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低 了需要编写的异常代码数量(例如打开和关闭连接)。 Spring DAO 的面向 JDBC 的异常遵 从通用的 DAO 异常层次结构。 Spring ORM:Spr

25、ing 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工 具,其中包括JDO、Hibernate和iBatis SQL Map。所有这些都遵从Spring的通用事务和 DAO 异常层次结构。 Spring Web模块:Web上下文模块建立在应用程序上下文模块之上,为基于Web的应 用程序提供了上下文。所以, Spring 框架支持与 Jakarta Struts 的集成。 Web 模块还简化了 处理多部分请求以及将请求参数绑定到域对象的工作。 Spring MVC 框架: MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通 过策略接口, MVC 框架变成为高度

26、可配置的, MVC 容纳了大量视图技术,其中包括 JSP、 Velocity、 Tiles、 iText 和 POI。Spring 框架的功能可以用在任何 J2EE 服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定 J2EE 服务的可重用业务和数据访问对象。毫无 疑问,这样的对象可以在不同J2EE环境(Web或EJB)、独立应用程序、测试环境之间 重用。IOC 和 AOP控制反转模式(也称作依赖性介入)的基本概念是:不创建对象,但是描述创建它们的方式。 在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器 (在 Spring

27、框架中是 IOC 容器) 负责将这些联系在一起。在典型的 IOC 场景中,容器创建了所有对象,并设置必要的属性将它们连接在一起,决定 什么时间调用方法。下表列出了 IOC 的一个实现模式。Spring 框架的 IOC 容器采用类型 2 和类型 3 实现。面向方面的编程面向方面的编程,即AOP,是一种编程技术,它允许程序员对横切关注点或横切典型的职 责分界线的行为(例如日志和事务管理)进行模块化。AOP的核心构造是方面,它将那些 影响多个类的行为封装到可重用的模块中。AOP 和 IOC 是补充性的技术,它们都运用模块化方式解决企业应用程序开发中的复杂问 题。在典型的面向对象开发方式中,可能要将日

28、志记录语句放在所有方法和 Java 类中才能 实现日志功能。在 AOP 方式中,可以反过来将日志服务模块化,并以声明的方式将它们应 用到需要日志的组件上。当然,优势就是 Java 类不需要知道日志服务的存在,也不需要考 虑相关的代码。所以,用Spring AOP编写的应用程序代码是松散耦合的。AOP 的功能完全集成到了 Spring 事务管理、日志和其他各种特性的上下文中。IOC 容器Spring 设计的核心是 org.springframework.beans 包,它的设计目标是与 JavaBean 组件一起 使用。这个包通常不是由用户直接使用,而是由服务器将其用作其他多数功能的底层中介。

29、下一个最高级抽象是 BeanFactory 接口,它是工厂设计模式的实现,允许通过名称创建和 检索对象。 BeanFactory 也可以管理对象之间的关系。BeanFactory 支持两个对象模型。单态 模型提供了具有特定名称的对象的共享实例,可以在查询时对其进行检索。Singleton 是默认的也是最常用的对象模型。对于无状态服务对象很理想。 原型 模型确保每次检索都会创建单独的对象。在每个用户都需要自己的对象时,原型模 型最适合。bean工厂的概念是Spring作为IOC容器的基础。IOC将处理事情的责任从应用程序代码 转移到框架。正如我将在下一个示例中演示的那样, Spring 框架使用

30、 JavaBean 属性和配置 数据来指出必须设置的依赖关系。BeanFactory 接口因为 org.springframework.beans.factory.BeanFactory 是 一个简单接口,所以可以针对各种底 层存储方法实现。最常用的BeanFactory定义是XmlBeanFactory,它根据XML文件中的 定义装入bean,如清单1所示。清单 1. XmlBeanFactoryBeanFactory factory = new XMLBeanFactory(new FileInputSteam(mybean.xml);在 XML 文件中定义的 Bean 是被消极加载的,这

31、意味在需要 bean 之前, bean 本身不会 被初始化。要从BeanFactory检索bean,只需调用getBean()方法,传入将要检索的bean 的名称即可,如清单 2 所示。清单 2. getBean()MyBean mybean = (MyBean) factory.getBean(mybean);每个 bean 的定义都可以是 POJO (用类名和 JavaBean 初始化属性定义) 或 FactoryBean。 FactoryBean 接口为使用 Spring 框架构建的应用程序添加了一个间接的级别。IOC 示例理解控制反转最简单的方式就是看它的实际应用。在对由三部分组成的

32、Spring 系列 的第 1 部分进行总结时,我使用了一个示例,演示了如何通过 Spring IOC 容器注入应用程序的 依赖关系(而不是将它们构建进来)。我用开启在线信用帐户的用例作为起点。对于该实现,开启信用帐户要求用户与以下服务进 行交互: 信用级别评定服务,查询用户的信用历史信息。 远程信息链接服务,插入客户信息,将客户信息与信用卡和银行信息连接起来,以进行 自动借记(如果需要的话)。 电子邮件服务,向用户发送有关信用卡状态的电子邮件。三个接口对于这个示例,我假设服务已经存在,理想的情况是用松散耦合的方式把它们集成在一起。 以下清单显示了三个服务的应用程序接口。清单 3. Credit

33、RatingInterface public interface CreditRatingInterface public boolean getUserCreditHistoryInformation(ICustomer iCustomer); 清单 3 所示的信用级别评定接口提供了 信用历史信 息。它需要 一个包含客 户信息的 Customer 对象。该接口的实现是由 CreditRating 类提供的。清单 4. CreditLinkingInterfacepublic interface CreditLinkingInterface public String getUrl();pub

34、lic void setUrl(String url);public void linkCreditBankAccount() throws Exception ;信用链接接口将信用历史信息与银行信息(如果需要的话)连接在一起,并插入用户的信用 卡信息。信用链接接口是一个远程服务,它的查询是通过 getUrl() 方法进行的。 URL 由 Spring 框架的 bean 配置机制设置,我稍后会讨论它。该接口的实现是由 CreditLinking 类 提供的。清单 5. EmailInterfacepublic interface EmailInterface public void sendE

35、mail(ICustomer iCustomer);public String getFromEmail();public void setFromEmail(String fromEmail) ;public String getPassword();public void setPassword(String password) ;public String getSmtpHost() ;public void setSmtpHost(String smtpHost);public String getUserId() ;public void setUserId(String userI

36、d);ssh框架的构成分析和代码构架小结最近在弄j2ee,发现还是学到了很多东西,心情happy啊!昨天看到了一个文章是关于ssh的,就弄 下来了,后面加点自己的东西,很感谢网上的各位前辈的总结。一个spring2.5+hibernate3.2+struts2.0 组合框架,使用spring的IoC来管理应用的所有bean,包括struts2的action,充分发挥了 spring轻 量级框架的优势。摘 要:针对当前Web应用程序开发面临的问题,结合目前比较流行的开源框架Spring、Struts和 Hibernate,提出了一种开发J2EE Web应用的轻量级解决方案,以帮助开发人员在短期内

37、搭建结构清晰、 可复用性好、维护方便的Web应用程序。并且,通过案例具体说明了如何将这一方案应用到实际项目中。 关键词:J2EE MVC Struts Spring Hibernate大型企业级Web应用系统的开发通常要求有一个良好的软件架构、便于协作开发和扩展升级,而传统 的开发模式不能很好地满足这些要求。本文针对当前Web应用程序开发面临的问题,结合目前比较流行的 开源框架SSH (Spring、Struts、Hibernate),提出一种开发J2EE企业级Web应用的轻量级解决方案,并 通过案例具体说明如何将这一方案应用到实际项目中。1框架技术著名的软件大师Ralph Johnson对框

38、架(Framework)进行了如下的定义:框架是整个系统或系统的一 部分的可重用设计,由一组抽象的类及其实例间的相互作用方式组成1。框架一般具有即插即用的可重用性、成熟的稳定性以及良好的团队协作性。J2EE复杂的多层结构决定 了大型的J2EE项目需要运用框架和设计模式来控制软件质量。目前,市场上出现了一些商业的、开源的基 于J2EE的应用框架,其中主流的框架技术有:基于MVC模式的Struts框架和基于IoC模式的Spring框架 以及对象/关系映射框架Hibernate等。1.1 表示层框架StrutsStruts是一个在JSP Model2基础上实现的MVC框架,主要分为模型(Model)

39、、视图(Viewer)和控制 器(Controller)三部分,其主要的设计理念是通过控制器将表现逻辑和业务逻辑解耦,以提高系统的可维 护性、可扩展性和可重用性2。Struts框架的体系结构如图1所示。下面就图1所示的体系结构图分析Struts框架中的MVC组件。(1) 视图:视图部分主要由JSP页面组成,其中没有流程逻辑、业务逻辑和模型信息,只有标记。Struts 自身包含了一组标记库(TagLib),这也是Struts的精华之一,灵活运用它们可以简化JSP页面的代码,提 高开发效率。(2) 控制器:Struts中的Controller主要是其自身提供的ActionServlet。Actio

40、nServlet接收所 有来自客户端的请求并根据配置文件(struts-config.xml)中的定义将控制转移到适当的Action对象。(3) 模型:Struts没有定义具体Model层的实现,Model层通常是和业务逻辑紧密相关的,有持续化 的要求。目前在商业领域和开源世界,都有一些优秀的工具可以为Model层的开发提供便利。1.2业务逻辑层框架SpringSpring是一个解决了许多J2EE开发中常见问题并能够替代EJB技术的强大的轻量级框架。这里所说 的轻量级指的是Spring框架本身,而不是指Spring只能用于轻量级的应用开发。Spring的轻盈体现在其 框架本身的基础结构以及对其

41、他应用工具的支持和装配能力。与EJB这种庞然大物相比,Spring可使程序 研发人员把各个技术层次之间的风险降低。Spring 框架的核心是控制翻转 IoC(Inversion of Control)/依赖注入 DI(Dependence Injection)机 制。IoC是指由容器中控制组件之间的关系(这里,容器是指为组件提供特定服务和技术支持的一个标准 化的运行时的环境)而非传统实现中由程序代码直接操控,这种将控制权由程序代码到外部容器的转移, 称为“翻转”讥DI是对IoC更形象的解释,即由容器在运行期间动态地将依赖关系(如构造参数、构造对 象或接口)注入到组件之中。Spring采用设值注

42、入(使用Setter方法实现依赖)和构造子注入(在构造方法 中实现依赖)的机制,通过配置文件管理组建的协作对象,创建可以构造组件的IoC容器。这样,不需要编 写工厂模式、单例模式或者其他构造的方法,就可以通过容器直接获取所需的业务组件。Spring框架的结 构如图2所示。Spring框架由七个定义明确的模块组成,且每个模块或组件都可以单独存在,或者与其他一个或多个 模块联合实现oSpring Core Container是一个用来管理业务组件的IoC容器,是Spring应用的核心;Spring DAO和Spring ORM不仅提供数据访问的抽象模块,还集成了对Hibernate、JDO和iBa

43、tis等流行的对象关 系映射框架的支持模块,并且提供了缓冲连接池、事务处理等重要的服务功能,保证了系统的性能和数据 的完整性;SprnigWeb模块提供了 Web应用的一些抽象圭寸装,可以将Struts、Webwork等Web框架与Spring 整合成为适用于自己的解决方案。Spring框架可以成为企业级应用程序一站式的解决方案,同时它也是模块化的框架,允许开发人员自 由地挑选适合自己应用的模块进行开发。Spring框架式是一个松耦合的框架,框架的部分耦合度被设计为 最小,在各个层次上具体选用哪个框架取决于开发者的需要。1.3数据持久层框架HibernateO/R mapping技术是为了解决

44、关系型数据库和面向对象的程序设计之间不匹配的矛盾而产生的。 Hibernate是目前最为流行的O/R mapping框架,它在关系型数据库和Java对象之间做了一个自动映射, 使得程序员可以以非常简单的方式实现对数据库的操作。Hibernate工作原理如图3所示。Hibernate通过对JDBC的封装,向程序员屏蔽了底层的数据库操作,使程序员专注于00程序的开发, 有助于提高开发效率。程序员访问数据库所需要做的就是为持久化对象编制xml映射文件超底层数据库的改变只需要简单地更改初始化配置文件(hibernate.cfg.xml或者 hibernate.properties)即可,不会对应用程序

45、产生影响。Hibernate有自己的面向对象的查询语言HQL,HQL功能强大,支持目前大部分主流的数据库,如 Oracle、DB2、MySQL、Microsoft SQL Server等,是目前应用最广泛的O/R映射工具。Hibernate为快速 开发应用程序提供了底层的支持。2基于SSH组合框架的Web应用模型设计与实现2.1集成SSH的新型J2EE框架前面分析了基于J2EE的三种框架技术,下面通过集成以上三种框架技术来对传统的J2EE Web开发模 型加以改进,以形成一种新的、轻量型的J2EE架构。集成SSH框架的系统框架图如图4所示,系统从职责上分为四层:表示层、业务逻辑层、数据持久层

46、和域模块层。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分, 利用Hibernate框架对持久层提供支持,业务层用Spring支持。具体做法是:用面向对象的分析方法根据 需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO接口,并给出Hibernate的 DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring 完成业务逻辑。系统的基本业务流程是:在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和 接收响应(Response),然后 Struts

47、根据配置文件(struts-config.xml)将 ActionServlet 接收到的 Request 委派给相应的Action处理。在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型 (Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件 以提升系统性能和保证数据的完整性。而在持久层中,则依赖于Hibernate的对象化映射和数据库交互, 处理DAO组件请求的数据,并返回处理结果。采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层 的分离。这样无论前端如何变化,模型层只需

48、很少的改动,并且数据库的变化也不会对前端有所影响,大 大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效 率。2.2基于SSH框架的Web应用系统的实现下面将通过一个实际的系统来展示如何进行基于SSH框架的Web应用开发。该系统是为某通信公司运 营部开发的一个问答式系统,功能类似于百度知道和新浪爱问。由于系统的模块较多,下面就以一个用户 管理模块为例来说明系统的开发实现过程,并将按照数据持久层、业务逻辑层、表示层的顺序说明系统构 建过程。(1) 数据持久层数据持久层由Java对象持久化类和数据访问对象(DAO)组成。每个数据库表都对应着一个持久化对象,

49、 这样就给予了开发者使用00思想设计和开发的便利,同时也屏蔽了具体的数据库和具体的数据表、字段, 消除了对数据库操作的硬编码在重用性上的弊端。用户信息表的部分结构如表1所示。Hibernate通过映射(Mapping)文件将对象(Object)与关系型数据(Relational)相关联,因此需要编写 和数据库表相对应的Java持久化类以及对应的映射文件。有了 Java持久化类后就可以在此基础上实现数 据访问类。在Spring框架中,数据访问类可以从辅助类HibernateDaoSupport继承,这极大地方便了Hibernate框架在Spring中的使用,相应的部分代码如下:public cl

50、ass UserDaoextends HibernateDaoSupport public int add(User user) return Integer.ParseInt(this.getHibernateTemplate().save(user).toString();public List findAll() return this.getHibernateTemplate().loadAll(User.class);具体的Hibernate数据源、session工厂、事务管理、缓冲连接池等功能都由业务层的Spring容器提 供。(2) 业务逻辑层业务逻辑层由Spring框架支持,提

51、供了处理业务逻辑的服务组件。开发者需要对业务对象建模,抽象 出业务模型并封装在Model组件中。由于数据持久层实现了 Java持久化类并且封装了数据访问对象(DAO), 因此可以在Model组件中方便地调用DAO组件来存取数据。Spring的IoC容器负责统一管理Model组件和 DAO组件以及Spring所提供的事务处理、缓冲连接池等服务组件。在用户管理模块中,通过业务建模创建了用户模型UserService类,封装了对用户的权限管理以及积 分管理等功能。UserService类通过调用数据访问类UserDao实现对用户数据的操作。这些组件的关系将 通过配置Spring框架的applicat

52、ionContext.xml联系起来,配置文件的主要内容如下:(3) 表示层表示层结合JSP和Struts的TagLib库处理显示功能,利用ActionServlet将请求(*.do)映射到相应 的Action,并由Action调用业务逻辑的服务组件,然后根据处理结果跳转到Forword对象指定的响应页 面。业务流程的部署由struts-config.xml完成。下面以一个显示所有用户信息的请求(ListUser.do)为 例来说明配置文件的使用。基于J2EE的Web应用以其层次性、平台无关性的优势已经逐渐成为了电子商务、电子政务主要的解决 方案。本文针对传统的J2EE Web应用开发的弊端,

53、提出了一种利用轻量级框架来快速搭建Web应用的解决 方案,并且通过其在实际项目中的应用,证明了采用此方案可以帮助开发人员在短时间内建立结构清晰、 可重用性好、维护扩展方便的Web应用程序。参考文献1 GAMMA E, HELM R, JOHNSON R, et al. Design patterns:Elements of reusable object-oriented softwareM. Addison Wesley, 1994.2 孙卫琴.精通Struts:基于MVC的Java Web设计与开发M.北京:电子工业出版社,2004.3 JOHNSON R, HOELLER J, AREN

54、DSEN A, et al. Java/J2EE application framework reference document.V1.1.2004.4 徐长盛,戴超.一种快速开发Web应用程序方法的研究J.计算机工程与设计,2004,(12):2237-2239.5 夏昕,曹晓钢,唐勇.深入浅出HibernateM.北京:电子工业出版社,2005.6 JOHNSON R.Expert one-on-one J2EE design and developmentM.魏海萍译.北京:电子工业出版 社,2003.在用ssh开发web应用时,需要对生成的各个类文件进行组织,下面就对一个可行的目录方

55、案进行介绍: 譬如应用中有一个用户管理模块,则在公共包下建立一个user包,如该公共包可以为com.simon.oa, 在user包下包括如下子包1、controler 包该包放置各种struts的action。2、 dao 包 该包放置各类dao (data access object),也就是放置对数据库访问的实现类,在用myeclipse中的“Hibernate Reverse Engineering”进行反向操作时在某一个目录中就会生成对应某个表的DAO,生成 后可将该DAO拖到dao包中。在某些应用中将DAO作为接口,在该接口中包括所有对数据库的操作方 法,然后在dao包建立一个hi

56、bernate包,在hibernate包中放置对DAO接口的实现,譬如:UserDAO 接口有一个实现类为UserDaoImpI,将该类放置到hibernate包中,实际的开发倾向于后一种方式,因 为对这个DAO接口可以实现spring的IoC操作。(不知道myeclipse对此是怎么考虑的,这个问题让我 纠缠了很久,误将DAO理解成一个能够进行实际操作的类,而不是一个接口,以后开发要注意)3、model 包该包中放置hibernate反向工程生成的bean和该bean对应的.hbm.xml文件。4、service 包该包放置业务操作类,譬如用户服务类,一般情况将该用户操作类提取一个接口,然后

57、在service包下生 成一个impl包,在impl包中才放置用户操作接口的实现类。该用户接口实现类中调用DAO接口对数据 库进行操作,而调用该实现类的方法在struts的action中。5、vo 包(value object)vo包中的中包括struts中使用的POJO及actionform等信息。VO: Value ObjectDTO: Data Tra nsfer Object个人理解VO和DTO是类似的东西,原则上VO和DTO只有Public Fields,主要用于进程之 间数据传递的问题,VO和DTO不会传递到表示层,在业务层就会被吸收。但看到很多人在建 立VO和DTO时,也含有Setter,Getter属性和一些其它的辅助方法,这也无可厚非,我自己 也不能确定这对不对。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!