SSH的理解及其应用实践
1.SSH是什么 ................................................................................................................................... 3 2 Spring 介绍理解: ................................................................................................................ 3
2.1简单介绍 ............................................................................................................................. 3 2.2各种特性 .......................................................................................................................... 3
2.2.1轻量 .......................................................................................................................... 3 2.2.2控制反转 .................................................................................................................. 4 2.2.3面向切面 .................................................................................................................. 4 2 .2.4容器 ......................................................................................................................... 4 2.2.5框架 .......................................................................................................................... 4 2.3总结 ..................................................................................................................................... 4 3.Hibernate介绍理解: ................................................................................................................... 4
3.1简单介绍 ............................................................................................................................. 4 3.2核心接口 ............................................................................................................................. 5
·3.2.1 Session接口 ........................................................................................................... 5 3.2.2 ·SessionFactory接口 ............................................................................................... 5 3.2.3·Configuration接口 .................................................................................................. 5 3.2.4·Transaction接口 ...................................................................................................... 5 3.2.5 Query和Criteria接口 ............................................................................................. 5
4. Struts ............................................................................................................................................. 6
4.1什么是Struts框架 ............................................................................................................. 6 4.2 Struts 概览 ......................................................................................................................... 6
4.2.1Client browser(客户浏览器) ............................................................................... 6 4.4 Struts中的Controller(控制器) 命令设计模式的实现 ......................................... 7 4.5 在Struts框架中控制器组件的三个构成部分 ................................................................. 7 4.7 Struts中的Model(模型) ............................................................................................... 8 5.SSH整合步骤 ............................................................................................................................... 8
5.1安装所需软件环境: ......................................................................................................... 8 5.1.1、首先安装JDK,配置Java环境变量 ......................................................................... 8 5.1.2安装MyEelipse ............................................................................................................... 8 5.1.3 数据库 ............................................................................................................................. 9 5.1.4、....................................................................................................................................... 9 5.2环境配置好了就可以做SSH整合的项目 ........................................................................ 9 6.搭建框架并简单应用 .................................................................................................................. 11
6.1准备工作 ........................................................................................................................... 11 6.2(建立项目,包结构,导入所需jar文件) ....................................................................... 12 6.3撰写资源文件 ................................................................................................................... 15 6.4在com.ssh.util.comm 包下添加下列文件 ...................................................................... 19 6.5添加hibernate DAO 模板 ............................................................................................... 20 6.6以上的工作还不够,我们还需要进行WEB方面的配置 ............................................ 20 7.测试:.......................................................................................................................................... 23
7.1.com.ssh.model 包下建立 User.java .............................................................................. 23 7.2 com.ssh.service 包下建立 UserService.java .................................................................. 24 7.3com.ssh.test 下建立 Test.java ........................................................................................ 25 7.4结果 ................................................................................................................................... 26 8.结束语.......................................................................................................................................... 26
1.SSH是什么
新的MVC软件开发模式, SSH(Struts,Spring,Hibernate) Struts进行流程控制,Spring进行业务流转,Hibernate进行数据库操作的封装,这种新的开发模式让我们的开发更加方便、快捷、思路清晰!
2 Spring 介绍理解:
2.1简单介绍
Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
2.2各种特性 2.2.1轻量
从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。
2.2.2控制反转
Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
2.2.3面向切面
Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
2 .2.4容器
Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。
2.2.5框架
Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。
2.3总结
所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。
3.Hibernate介绍理解:
3.1简单介绍
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
3.2核心接口
Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。
·3.2.1 Session接口
Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。
3.2.2 ·SessionFactory接口
SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
3.2.3·Configuration接口
Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。
3.2.4·Transaction接口
Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。
3.2.5 Query和Criteria接口
Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。
4. Struts
4.1什么是Struts框架
Struts 是一组相互协作的类、servlet 和 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.3 业务逻辑
业务逻辑更新模型的状态,并帮助控制应用程序的流程。 就 Struts 而言,这是通过作为实际业务逻辑“瘦”包装的 Action 类完成的。
4.3.4 Model(模型)的状态
模型表示应用程序的状态。业务对象更新应用程序的状态。ActionForm bean 在会话级或请求级表示模型的状态,而不是在持久级 JSP 文件使用 JSP 标记读取来ActionForm bean 的信息。
4.3. 5 View(视图)
视图就是一个 JSP 文件。其中没有流程逻辑,没有业务逻辑,也没有模型信息 -- 只有标记。 标记是使 Struts 有别于其他框架(如 Velocity)的因素之一。
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,消息控制模块;用户所有的提交请求都发往消息控制模块,在由消息总线模块根据视图映射模块找到消息处理模块来执行处理逻辑。消息控制模块接收所有用户的请求,并根据请求视图找到处理。Strtus中通过ActionServlet和RequestProcessor类来完成。
2,消息处理模块:该模块执行该消息的逻辑处理,因此通常由用户扩展实现。Struts中通过Action类来实现。
3,视图映射模块; 控制器逻辑和视图逻辑之间的结合是通过配置模块和配置文件建立其的链接。Struts中配置模块通过ModuleConfig类来完成,而配置文件由struts-config.xml文件提供。
4.6 Struts中的View(视图)视图组件通过JSP组件的实现机制。
Struts框架对视图组件进行了扩展和封装。 Struts对视图的扩展提供了一组扩展服务器标签用来提供视图显示以及传递数据到处理缓冲,而处理缓冲由ActionForm的扩展类来实现。 Struts框架利用ActionForm Bean来实现视图与控制器之间的数据的交互,
维持会话级或请求级的模型的状态。服务器标签主要包括: Html视图标签; Logic逻辑流程控制标签; Bean数据缓冲读取标签;
4.7 Struts中的Model(模型)
1,Struts框架中并没有定义特定的模型组件,而是希望由用户自己决定选择合理的模型组件。J2EE中可用的模型组件包括: JavaBean 用户定义组件; EJB 组件,由EJB容器实现组件; JDO 未来J2EE数据访问模型;一些扩展框架如:Hibernate;
2,模型中状态的级别 会话级或请求级:ActionForm bean来维持 ; 持久级:模型组件来维持;
5.SSH整合步骤
5.1安装所需软件环境:
5.1.1、首先安装JDK,配置Java环境变量
右键我的电脑->属性->高级->环境变量
【JAVA_HOME】“F:\\Java\\jdk1.6.0_12”jdk1.6.0_12是我装的版本,你看你自己的版本然后改下名字;
【Path】“%JAVA_HOME%\\bin;”注意,这个要添加到系统原来的PATH前面,要像有些人说的加后面可能会不能编译。
【Classpath】“.;%JAVA_HOME%\\lib\ools.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 数据库
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中先创建数据库 3、在struts—config.xml中配置
这样就把Struts中的ActionSevlet加到Spring中了。 4、写带有Form表单的页面
5、写对应的ActionForm,并在struts-config.xml中注册 \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\"> 内容格式为: 然后将其在applicationContext.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中,而且有属性的一定要配置属性,然后在Struts-config.xml中写 : input=\"/addEmp.jsp\" type=\"org.springframework.web.struts.DelegatingActionProxy\">//代理 11、在applicationContext中配置事物: 12、若使用验证框架,则需先在sturts-config.xml中配置插件: 13、在/WEB-INF下建立validation.xml,其头部为: \"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN\" \"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd\">注:tomcat的lib包里要包含objdbc14.jar的jar包。 6.搭建框架并简单应用(搭建过程是在网上找的,我照着流程自己 也做了,但是可能是版本的问题有些地方还是有问题,但大体框架搭建好了) 6.1准备工作 MyEclipse 6.5 Tomcat5.5 所需jar文件:(所有jar文件已整理ssh_jars文件夹)注意:ssh_test项目中采用的是MySql 数据库。 而本文档中配置的是Oracle数据库,注意其中配置的不同之处哦(在相应的地方有注明) 6.2(建立项目,包结构,导入所需jar文件) 新建一个web project: 建立包结构如下: 各包功能说明: com.ssh.config : 配置文件(*.properties),如数据库配置信息 com.ssh.resource : 资源文件 com.ssh.util.comm : 公共工具(util)包 com.ssh.util.orm.hibernate : hibernate DAO 模板 com.ssh.model : 各实体类文件 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文件中是为了方便更改. 在com.ssh.resource包中新建下列文件: 各文件详细内容及说明如下: ----------------------------------------------------------------------------------------------------------------------------------------- applicationContext.xml: xmlns:context=\"http://www.springframework.org/schema/context\" xsi:schemaLocation=\"http://www.springframework.org/schema/beans xmlns:tx=\"http://www.springframework.org/schema/tx\" http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd\" default-lazy-init=\"true\"> class=\"org.springframework.jdbc.datasource.DriverManagerDataSource\"> value=\"${jdbc.driverClassName}\" /> key=\"hibernate.cache.provider_class\">org.hibernate.cache.EhCacheProvider WebLogicJtaTransactionManager\"/> --> class=\"org.springframework.orm.hibernate3.HibernateTransactionManager class=\"org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor\" /> ----------------------------------------------------------------------------------------------------------------------------------------- applicationContext-security.xml: http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.xsd\" default-autowire=\"byType\" default-lazy-init=\"true\"> 此文件用于AOP的安全验证,也可不添加 ----------------------------------------------------------------------------------------------------------------------------------------- applicationContext-service.xml class=\"com.ssh.service.UserService\"> Service(业务逻辑类)的注入 ----------------------------------------------------------------------------------------------------------------------------------------- ehcache-hibernate.xml: eternal=\"false\" overflowToDisk=\"true\" timeToIdleSeconds=\"600\" /> overflowToDisk=\"true\" /> Hibernate 缓存的配置(可以不做配置,如果需要才使用缓存才做配置,建议配置上) ----------------------------------------------------------------------------------------------------------------------------------------- 6.4在com.ssh.util.comm 包下添加下列文件 此包为hibernate DAO模板中用到的各种工具类,各文件可以在打包的ssh_test项目中找到. 6.5添加hibernate DAO 模板 此包为hibernate DAO模板,SimpleHibernateTemplate.java 中包含了对各实体(增,删,改,查,分页查等)的泛形方法。各文件可以在打包的ssh_test项目中找到.。 6.6以上的工作还不够,我们还需要进行WEB方面的配置 配置web.xml , struts-config.xml , action-servlet.xml 各文件内容如下: ----------------------------------------------------------------------------------------------------------------------------------------- xmlns:web=\"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\" xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee id=\"WebApp_ID\" version=\"2.5\"> org.springframework.web.context.ContextLoaderListener http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\" classpath:com/ssh/resource/applicationContext*.xml org.apache.struts.action.ActionServlet ----------------------------------------------------------------------------------------------------------------------------------------- struts-config.xml: \"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN\" \"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd\"> /> /> value=\"org.springframework.web.struts.DelegatingRequestProcessor\" ----------------------------------------------------------------------------------------------------------------------------------------- action-servlet.xml: 注意:此文件struts 1.x 必须配置,而struts 2.x 不需要配置 xmlns:context=\"http://www.springframework.org/schema/context\" xsi:schemaLocation=\"http://www.springframework.org/schema/beans xmlns:tx=\"http://www.springframework.org/schema/tx\" http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd\" default-autowire=\"byName\" default-lazy-init=\"true\"> ----------------------------------------------------------------------------------------------------------------------------------------- 至此,我们的Spring+Struts+Hibernate集成工作完成! 7.测试: 7.1.com.ssh.model 包下建立 User.java package com.ssh.model; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Entity; @Entity @Table(name = \"user\") public class User { private Integer id; private String username; private String password; public User() { } @Id @GeneratedValue(strategy=GenerationType.IDENTITY) public Integer getId() { } public void setId(Integer id) { } public String getUsername() { } public void setUsername(String username) { } public String getPassword() { this.username = username; return username; this.id = id; return id; super(); } } return password; public void setPassword(String password) { } this.password = password; 7.2 com.ssh.service 包下建立 UserService.java package com.ssh.service; import java.util.List; import com.ssh.model.User; import com.ssh.util.orm.hibernate.Page; import com.ssh.util.orm.hibernate.SimpleHibernateTemplate; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Required; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; /* *@author onlyflag */ @Transactional public class UserService { private SimpleHibernateTemplate public void setSessionFactory(SessionFactory sessionFactory) { } @Transactional(readOnly=true) public User getUser(Long id) { } @Transactional(readOnly=true) public Page return userDao.findAll(page); return userDao.get(id); userDao = new SimpleHibernateTemplate @Transactional(readOnly=true) public User getUserByLoginName(String loginName) { } public void saveUser(User user) { } public void deleteUser(Long id) { } public List public User findUniqueByProperty(String propertyName,String value) { } @Transactional public boolean isLoginNameUnique(String loginName,String { } public SimpleHibernateTemplate return userDao; return userDao.isUnique(\"loginName\return userDao.findUniqueByProperty(propertyName, value); return userDao.findByProperty(propertyName, value); User user = userDao.get(id); userDao.delete(user); userDao.save(user); return userDao.findUniqueByProperty(\"loginName\ orgLoginName) } 7.3com.ssh.test 下建立 Test.java //有了:User 和 UserService 我们就可写一个测试类来进行User 类的各种操作: package com.ssh.test; import com.ssh.model.User; import com.ssh.service.UserService; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { public static void main(String[] args){ ApplicationContext ctx=new ClassPathXmlApplicationContext(\"com.ssh /resource/applicationContext*.xml\"); } } UserService us=(UserService) ctx.getBean(\"userService\"); User user=new User(); user.setPassword(\"123\"); user.setUsername(\"onlyflag\"); us.saveUser(user); 7.4结果 运行Test.java 我们将成功的在数据库里插入一条数据 8.结束语 通过这次作业认识到了自己的不足,而学习是个积累的过程。要想学好这样的框架就必须先了解Struts,Spring,Hibernate各个的运行机制流程。在熟悉各个框架的基础上在进行整合才能达到好的效果。而且学习也不是一天两天就能成功的,就像给我们讲课的同学一样,凭着自己的兴趣学习了一年才能有很好的成绩。 由于现在能力不够所以做的还不够好,上面的例子自己照着流程也做了一下,可是由于对框架的了解并不是十分的透彻,以及各个版本的融合问题,例子中还有些问题。但是整个开发搭建的流程自己走了一遍,也对SSH有了更多的一些了解。我相信,以后只要能坚持下去,也能像我的同学一样对这些有更深刻的理解。
\">
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- baoquwan.com 版权所有 湘ICP备2024080961号-7
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务