1、目录1.SSH是什么32 Spring 介绍理解:32.1简单介绍322各种特性32.2.1轻量32.2.2控制反转32.2.3面向切面42 .2.4容器42.2.5框架42.3总结43.Hibernate介绍理解:43.1简单介绍43.2核心接口53.2.1 Session接口53.2.2 SessionFactory接口53.2.3Configuration接口53.2.4Transaction接口53.2.5 Query和Criteria接口54. Struts64.1什么是Struts框架64.2 Struts 概览64.2.1Client browser(客户浏览器)64.4 Str
2、uts中的Controller(控制器) 命令设计模式的实现74.5 在Struts框架中控制器组件的三个构成部分74.7 Struts中的Model(模型)85.SSH整合步骤85.1安装所需软件环境:85.1.1、首先安装JDK,配置Java环境变量85.1.2安装MyEelipse85.1.3 数据库95.1.4、95.2环境配置好了就可以做SSH整合的项目96.搭建框架并简单应用116.1准备工作116.2(建立项目,包结构,导入所需jar文件)126.3撰写资源文件156.4在m 包下添加下列文件196.5添加hibernate DAO 模板206.6以上的工作还不够,我们还需要进行
3、WEB方面的配置207.测试:23.ssh.model 包下建立 User.java237.2 com.ssh.service 包下建立 UserService.java247.3com.ssh.test 下建立 Test.java257.4结果268.结束语261.SSH是什么新的MVC软件开发模式, SSH(Struts,Spring,Hibernate) Struts进行流程控制,Spring进行业务流转,Hibernate进行数据库操作的封装,这种新的开发模式让我们的开发更加方便、快捷、思路清晰!2 Spring 介绍理解: 2.1简单介绍 Spring是一个开源框架,它由Rod Jo
4、hnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 22各种特性2.2.1轻量从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对
5、象不依赖于Spring的特定类。 2.2.2控制反转Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 2.2.3面向切面Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的完成业务逻辑仅此而已。它们并不负责(甚至是意识)其它的系统
6、级关注点,例如日志或事务支持。 2 .2.4容器Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。 2.2.5框架Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑
7、的开发留给了你。 2.3总结 所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。 3.Hibernate介绍理解: 3.1简单介绍Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任
8、。 3.2核心接口 Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。 3.2.1 Session接口Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这
9、里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。 3.2.2 SessionFactory接口SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。 3.2.3Configuration接口Configuration接口
10、负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。 3.2.4Transaction接口Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。 3.2.5 Query和Criteria接口Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。4. Struts 4.1什么是Struts框架 Struts 是一组相互协作的类、servl
11、et 和 JSP 标记组成的一个可重用的 MVC 2 设计。 这个定义表示 Struts 是一个框架,而不是一个库,但 Struts 也包含了丰富的标记库和独立于该框架工作的实用程序类。4.2 Struts 概览4.2.1Client browser(客户浏览器) 来自客户浏览器的每个 HTTP 请求创建一个事件。Web 容器将用一个 HTTP 响应作出响应。4.2.2 Controller(控制器) 控制器接收来自浏览器的请求,并决定将这个请求发往何处。就 Struts 而言,控制器是以 servlet 实现的一个命令设计模式。 struts-config.xml 文件配置控制器命令。4.3
12、.3 业务逻辑 业务逻辑更新模型的状态,并帮助控制应用程序的流程。 就 Struts 而言,这是通过作为实际业务逻辑“瘦”包装的 Action 类完成的。 4.3.4 Model(模型)的状态 模型表示应用程序的状态。业务对象更新应用程序的状态。ActionForm bean 在会话级或请求级表示模型的状态,而不是在持久级 JSP 文件使用 JSP 标记读取来ActionForm bean 的信息。4.3. 5 View(视图) 视图就是一个 JSP 文件。其中没有流程逻辑,没有业务逻辑,也没有模型信息 - 只有标记。 标记是使 Struts 有别于其他框架(如 Velocity)的因素之一。
13、4.4 Struts中的Controller(控制器) 命令设计模式的实现Struts 的控制器将事件(事件通常是 HTTP post)映射到类的一个 servlet.ActionServlet (Command) 创建并使用 Action 、 ActionForm 和ActionForward . 通过struts-config.xml 文件配置该 Command.从而扩展 Action 和 ActionForm 来解决特定的问题。 可以通过扩展 ActionServlet 来添加 Command 功能。 4.5 在Struts框架中控制器组件的三个构成部分 1,消息控制模块;用户所有的提交
14、请求都发往消息控制模块,在由消息总线模块根据视图映射模块找到消息处理模块来执行处理逻辑。消息控制模块接收所有用户的请求,并根据请求视图找到处理。Strtus中通过ActionServlet和RequestProcessor类来完成。 2,消息处理模块:该模块执行该消息的逻辑处理,因此通常由用户扩展实现。Struts中通过Action类来实现。 3,视图映射模块; 控制器逻辑和视图逻辑之间的结合是通过配置模块和配置文件建立其的链接。Struts中配置模块通过ModuleConfig类来完成,而配置文件由struts-config.xml文件提供。4.6 Struts中的View(视图)视图组件通
15、过JSP组件的实现机制。Struts框架对视图组件进行了扩展和封装。 Struts对视图的扩展提供了一组扩展服务器标签用来提供视图显示以及传递数据到处理缓冲,而处理缓冲由ActionForm的扩展类来实现。 Struts框架利用ActionForm Bean来实现视图与控制器之间的数据的交互,维持会话级或请求级的模型的状态。服务器标签主要包括:Html视图标签; Logic逻辑流程控制标签;Bean数据缓冲读取标签; 4.7 Struts中的Model(模型) 1,Struts框架中并没有定义特定的模型组件,而是希望由用户自己决定选择合理的模型组件。J2EE中可用的模型组件包括: JavaBe
16、an 用户定义组件; EJB 组件,由EJB容器实现组件; JDO 未来J2EE数据访问模型;一些扩展框架如:Hibernate; 2,模型中状态的级别 会话级或请求级:ActionForm bean来维持 ; 持久级:模型组件来维持;5.SSH整合步骤5.1安装所需软件环境:5.1.1、首先安装JDK,配置Java环境变量右键我的电脑-属性-高级-环境变量 【JAVA_HOME】“F:Javajdk1.6.0_12”jdk1.6.0_12是我装的版本,你看你自己的版本然后改下名字; 【Path】“%JAVA_HOME%bin;”注意,这个要添加到系统原来的PATH前面,要像有些人说的加后面可
17、能会不能编译。 【Classpath】“.;%JAVA_HOME%libtools.jar” 然后就是试下看是否配置成功了 关于设置JAVA HOME的必要性:你若装TOMCAT或ORACLE等都会改变你的环境设置,总是改path,classpath容易出错也不方便,所以JAVA HOME就有了统一指向性,方便不易出错 开始-运行-CMD然后“javac”会出现很多操作说明,也可以“java -version”查看版本信息。再就是自己编个简单的JAVA文件试下了 5.1.2安装MyEelipse 。注:修改Content Assist为Ctrl+Enter,可以修改提示快捷键5.1.3 数据库
18、5.1.4、安装tomcat,并将tomcat加载到MyElipse中的服务器中。具体步骤为:Window Preferences MyEclipse Enterprise Workbench Servers Tomcat Tomat6X选择Enable,下面三个空指向tomcat的安装路径,如:D:Tomcat 6.0。5.2环境配置好了就可以做SSH整合的项目1、先引入Struts,然后是Spring,最后是Hibernate(AOP Librarian,Core Libraries,JDBC LIbrarian,WebS Librarian)。2、在Database Driver中先创建
19、数据库3、在strutsconfig.xml中配置 这样就把Struts中的ActionSevlet加到Spring中了。4、写带有Form表单的页面5、写对应的ActionForm,并在struts-config.xml中注册。6、写对应于数据库的持久化类,如emp.hbm.xml,注其头部为:!DOCTYPE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 3.0/EN 内容格式为: /注:name为与数据库表字段相对应的类 /说明主键类型 然后将其在applicationContext.xml中配置: xml/User
20、.hbm.xml 7、写DAO层的接口,并写实现该接口的类,该类还要继承HibernateDaoSupport,且bean注入时要记得属性sessionFactory的注入。8、写Service层的接口,并写实现该接口的类,在该类中要定义一个EmpDAO 类型的属性,并写其get和set方法。在此类的方法中调用DAO层中的方法。9、写Action类,继承Action,在该类中定义一个EmpService类型的属性,并写其set方法,然后在execute方法中进行操作。10、将DAO、Service中所有的类和Action类注入到applicationContext.xml的Bean中,而且有属
21、性的一定要配置属性,然后在Struts-config.xml中写 : /代理 11、在applicationContext中配置事物: PROPAGATION_REQUIRED 12、若使用验证框架,则需先在sturts-config.xml中配置插件: 13、在/WEB-INF下建立validation.xml,其头部为:注:tomcat的lib包里要包含objdbc14.jar的jar包。6.搭建框架并简单应用(搭建过程是在网上找的,我照着流程自己也做了,但是可能是版本的问题有些地方还是有问题,但大体框架搭建好了)6.1准备工作MyEclipse 6.5Tomcat5.5所需jar文件:(
22、所有jar文件已整理ssh_jars文件夹)注意:ssh_test项目中采用的是MySql 数据库。而本文档中配置的是Oracle数据库,注意其中配置的不同之处哦(在相应的地方有注明)6.2(建立项目,包结构,导入所需jar文件)新建一个web project: 建立包结构如下:各包功能说明:com.ssh.config : 配置文件(*.properties),如数据库配置信息 com.ssh.resource : 资源文件 m : 公共工具(util)包 com.ssh.util.orm.hibernate : hibernate DAO 模板 com.ssh.model : 各实体类文件
23、com.ssh.service : 业务逻辑包 相当于biz com.ssh.test : 测试包 com.ssh.action : struts Action 包结构可以根据自己需要自行划分 导入jar文件: 新建一个User Library: sshJars添加jar文件: 将新建的User Library: sshJars加入到项目中:6.3撰写资源文件jdbc.properties在jdbc.properties 里写上连接数据库的配置信息,此文件的配置信息用于在spring的配置文件中使用,数据库的配置信息也可以写到Spring 的配置文件中,这在一个jdbc.properties文
24、件中是为了方便更改.在com.ssh.resource包中新建下列文件:各文件详细内容及说明如下:-applicationContext.xml:Spring公共配置文件classpath*:com/ssh/config/jdbc.properties!- -org.hibernate.dialect.Oracle9Dialecttruetrueorg.hibernate.cache.EhCacheProvider/ehcache-hibernate.xml com.ssh.model.User!此处hibernate 的映射采用的是.xml 配置同则应设置具体配置文件名(*.hbm.xml)-!-JTA环境的事务配置 -applicationContext-security.xml:此文件用于AOP的安全验证,也可不添加-applicationContext-service.xmlService(业务逻辑类)的注入-