SSH框架整合(二)
- 格式:pdf
- 大小:1.41 MB
- 文档页数:31
SSH框架整合步骤详解SSH框架 2009-04-09 10:47:00 阅读611 评论0 字号:大中小订阅更系统地学习Struts1.x/Struts2.x+Hibernate+Spring,请学习该开源项目Appfuse终于,终于将SSH整合成功了,弄了几个小时,可以休息了(有的朋友弄了半个月,甚至重装了系统也没弄好,哎,庆幸啊)。
碰到问题千万不要放弃,要相信没有解决不了的问题!项目结构图:jsp部分为:index.jsp;success.jsp;fail.jspUserDAO.java,User.hbm.xml自动生成,HibernateSessionFactory 是多余的。
相关的配置文件、类文件详细信息,请参看Struts+Spring+Hibernate/SSH整合开发详细二以前是整过这三个框架的,可是工作期间都不曾用过,不知不觉之中,学的东西全忘了。
这次又要开始找工作了,看着招聘启事上都写着:要求熟练掌握Struts,Hibernate或Spring框架……,没得办法,重新学呗。
Spring in Action中文版下载地址(ftp协议)ftp://222.214.218.61/book5/20080228/cf8b35cc-5bcd-497 3-b6b7-37ae3ec78391.rar如果无法下载,可以在里重新搜索首先开始搭建项目环境,步骤如下:使用平台:MyEclipse 6.0框架版本:Struts 1.2 Hibernate 3.0 Spring 2.01>添加过程:<1> 新建项目。
Package Explorer视图下,右键单击 New -> Web Project;<2> 添加Struts框架。
菜单栏MyEclipse -> Capabilities,或者右键单击新建的项目名,选择快捷菜单中的"MyEclipse"下的二级菜单;设置相关的包名后,请写一个Struts的小例子,用来测试Struts是否可用;<3> 添加Spring。
SSH2框架的搭建及与SSH1的差别介绍SSH2框架搭建版本:struts2.1.6 spring2.5.6hibernate3.3.1SSH2与SSH1之简要比较SSH框架的优势开发效率高适应客户的需求随机变化SSH1框架的劣势繁琐的配置文件编写struts1.X Action线程安全,仅允许一个实例去处理所有请求Forward过于繁琐对Servlet依赖过强SSH2与SSH1之简要比较SSH2优势大量简化配置文件编写。
更大程度解耦合Struts不再依赖Servlet通配符配置注解使用struts2使用struts2借鉴webwork的成功之处,兼容struts1,集合两者优点,更易于整合spring及hibernate框架。
所需jar包:struts2相关配置web.xml文件配置与struts1不同,struts2采用Filter进行配置filter-namestruts/filter-namefilter-class //.uts2.//.ter.StrutsPrepareAndExecuteFilter/filter-classfilter-mappingfilter-namestruts/filter-nameurl-pattern*.do/url-pattern/filter-ma ppingstruts2相关配置struts.xml文件配置在项目src目录下添加struts.xml配置文件。
其基本配置如下:?xml version"1.0" encoding"UTF-8" ?!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "////.package name"default" extends"struts-default"namespace""struts2相关配置struts.xml常用配置为简化配置文件编写,struts2提供通配符支持,如下:action name“*” class“com.demo.1Action”method“show”同时,struts2还支持*/*的配置模式,在配置文件中节点下配置如下:constantname"//.shesInActionNames"value"true"则以上配置可改写为:action name“*/*” class “com.demo.1Action”method“2”struts2相关配置struts.xml常用配置struts2默认访问后缀为.action,不符合访问习惯,且过于繁琐,可在标签下配置如下:constantname"//.ension"value"do"则可使用习惯的.do方式访问整合spring框架添加spring核心包及struts2-spring-plugin-2.1.6.jar。
spring+hibernate出错小结:(1)ng.NoClassDefFoundError: org/hibernate/context/CurrentSessionContext原因:出现这错误时,请更改hibernate的包,更新至最新或3.1以上(2)ng.NoClassDefFoundError: javax/transaction/TransactionManager原因:缺少jta.jar 或者是找不到hbm.xml文件导致sessionfactory出错,检查hbm文件路径是否正确,文件是否存在(3) 错误:Exception in thread "main" org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update或者org.springframework.jdbc.BadSqlGrammarException: Hibernate operation: could not insert: [com.yourcompany.model.Login]; bad SQL grammar [insert into mysql__login (name,password) values (?,?)]; nested exception is java.sql.SQLException: Table'mysql.mysql__login' doesn't exist java.sql.SQLException: Table 'mysql.mysql__login' doesn't exist原因与解决:因为Hibernate Tools(或者Eclipse本身的Database Explorer)生成*.hbn.xml 工具中包含有catalog="***"(*表示数据库名称)这样的属性,将该属性删除就可以了(4)org.springframework.orm.hibernate3.HibernateQueryException: undefined alias原因:在spring配置文件中,可能你设置了<prop key="hibernate.query.factory_class"> org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>,指定了HQL的解释器,请删除或更改另一个解释器org.hibernate.hql.ast.ASTQueryTranslatorFactory,如果没有设置,请确认是否有写错了HQL语句,是否与POJO里的属性一样。
竭诚为您提供优质文档/双击可除ssh2,协议详解篇一:ssh协议详解1、概念ssh的英文全称为secureshell,是ietF (internetengineeringtaskForce)的networkworkinggroup所制定的一族协议,其目的是要在非安全网络上提供安全的远程登录和其他安全网络服务。
2、基本框架ssh协议框架中最主要的部分是三个协议:传输层协议、用户认证协议和连接协议。
同时ssh协议框架中还为许多高层的网络安全应用协议提供扩展的支持。
它们之间的层次关系可以用如下图1来表示:图1ssh协议的层次结构示意图在ssh的协议框架中,传输层协议(thetransportlayerprotocol)提供服务器认证,数据机密性,信息完整性等的支持;用户认证协议(theuserauthenticationprotocol)则为服务器提供客户端的身份鉴别;连接协议(theconnectionprotocol)将加密的信息隧道复用成若干个逻辑通道,提供给更高层的应用协议使用;各种高层应用协议可以相对地独立于ssh基本体系之外,并依靠这个基本框架,通过连接协议使用ssh的安全机制。
3、主机密钥机制对于ssh这样以提供安全通讯为目标的协议,其中必不可少的就是一套完备的密钥机制。
由于ssh协议是面向互联网网络中主机之间的互访与信息交换,所以主机密钥成为基本的密钥机制。
也就是说,ssh协议要求每一个使用本协议的主机都必须至少有一个自己的主机密钥对,服务方通过对客户方主机密钥的认证之后,才能允许其连接请求。
一个主机可以使用多个密钥,针对不同的密钥算法而拥有不同的密钥,但是至少有一种是必备的,即通过dss算法产生的密钥。
关于dss算法,请参考[Fips-186]。
ssh协议关于主机密钥认证的管理方案有两种,如下图2所示:图2ssh主机密钥管理认证方案示意图每一个主机都必须有自己的主机密钥,密钥可以有多对,每一对主机密钥对包括公开密钥和私有密钥。
ssh框架原理及流程SSH框架原理及流程。
SSH框架是指Struts、Spring、Hibernate三大开源框架的整合,它们分别解决了Web层、业务逻辑层和数据访问层的开发问题。
SSH框架的整合,旨在充分发挥各自框架的优势,实现高效、灵活、可维护的Web应用程序开发。
在本文中,我们将深入探讨SSH框架的原理及流程。
首先,我们来了解一下SSH框架各个组成部分的原理。
Struts作为Web层框架,它采用MVC(Model-View-Controller)设计模式,将应用程序分为模型、视图和控制器三层,实现了数据、展示和控制的分离,提高了代码的复用性和可维护性。
Spring作为业务逻辑层框架,它提供了IoC(控制反转)和AOP(面向切面编程)等功能,通过IoC容器管理对象之间的依赖关系,实现了松耦合,降低了组件之间的耦合度。
Hibernate作为数据访问层框架,它提供了ORM(对象关系映射)功能,将Java对象和数据库表之间建立映射关系,实现了面向对象的数据访问,简化了数据库操作。
接下来,我们来了解SSH框架的整合流程。
首先,我们需要在项目中引入Struts、Spring、Hibernate的相关jar包,并配置它们的配置文件。
在web.xml中配置DispatcherServlet,用于拦截所有的请求,然后将请求分发给对应的Controller处理。
在Spring的配置文件中配置业务逻辑层和数据访问层的Bean,以及事务管理器等。
在Hibernate的配置文件中配置数据源、SessionFactory等。
然后,我们需要编写业务逻辑层和数据访问层的代码,并在Controller中调用业务逻辑层的方法,最终将数据返回给视图层进行展示。
在SSH框架中,我们可以充分利用Struts的表单验证、Spring的事务管理、Hibernate的持久化操作等功能,实现了Web应用程序的快速开发。
同时,SSH框架也提供了良好的扩展性,我们可以根据项目的需要,灵活地替换其中的某个框架,而不影响整体架构。
ssh三⼤框架整合Hibernate框架 1 hibernate核⼼配置⽂件 (0)orm思想 - 对象关系映射 (1)数据库信息 (2)hibernate信息 (3)映射配置 (4)hibernate核⼼配置⽂件 - 如果单纯使⽤hibernate框架,核⼼配置⽂件名称 hibernate.cfg.xml和位置 src下⾯固定的 - hibernate和spring整合时候,hibernate核⼼配置⽂件名称和位置没有固定要求的 2 hibernate映射配置⽂件 (1)实体类和数据库表映射关系—使⽤orm思想 3 hibernate操作的步骤 (1)在spring框架对hibernate框架进⾏封装,使⽤hibernateTemplateStruts2框架 1 Action操作 (1)action创建三种⽅式 - 继承类 ActionSupport (2)配置action访问路径 - 创建struts.xml配置⽂件,这个⽂件名称和位置固定 src下⾯的 (3)配置访问action的多个⽅法 - 使⽤通配符⽅式配置 (4)在action获取表单提交数据 - 获取request对象 ** 使⽤ServletActionContext类获取 - 属性封装 - 模型驱动(重点) - 表达式封装 (5)在action操作域对象 - 使⽤ServletActionContext获取域对象 (6)配置struts2的过滤器 2 值栈 (1)向值栈放数据 - set⽅法 - push⽅法 - 定义变量,⽣成get⽅法 (2)从值栈获取数据 - 在jsp中使⽤struts2标签+ognl获取 - <s:property> - <s:iterator> 3 拦截器 (1)aop和责任链模式 (2)⾃定义拦截器 - 继承MethodFilterInterceptor - 重写类⾥⾯的⽅法 - 配置拦截器和action关联Spring框架 1 spring核⼼配置⽂件 (1)名称和位置没有固定要求 (2)在spring核⼼配置⽂件中引⼊schema约束 2 创建对象 (1)xml配置⽅式:<bean id=”” class=”” scope=””/> (2)注解⽅式:四个注解 3 注⼊属性(对象类型属性) (1)xml配置⽅式: (2)注解⽅式:两个注解 - autowired - resource 3 使⽤ServletContext对象和监听器实现 (1)在服务器启动时候,加载spring配置⽂件,创建对象 (2)配置spring的监听器 (3)指定spring配置⽂件位置 4 jdbcTemplate 5 spring事务配置 (1)xml⽅式 (2)注解⽅式SSH框架整合思想 1 三⼤框架应⽤在javaee三层结构 2 struts2框架和spring整合 (1)struts2的action在spring配置 3 spring框架和hibernate框架整合 (1)hibernate的sessionFactory交给spring配置 (2)把hibernate数据库配置交给spring配置整合struts2和spring框架 1 把struts2的action交给spring管理 2 实现过程 第⼀步导⼊struts2的jar包 (1)导⼊⽤于整合的jar包 (log4j.properties为log4j的⽇志输出格式,放⼊src下⾯) (2)Spring为了整合Struts还需要额外再导⼊⼀个jar包:(该包在struts的lib⽬录下) (3)导⼊Struts2的jar包(struts2版本为2.3.24): (4)创建Actionpublic class UserAction extends ActionSupport {public String execute() throws Exception {System.out.println("Success....");return NONE;}} (5)创建Strut2的核⼼配置⽂件<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""/dtds/struts-2.3.dtd"><struts><package name="demo" extends="struts-default" namespace="/"><action name="userAction" class="erAction"></action></package></struts> (6)在web.xml中配置struts2的过滤器<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping> (7)导⼊Spring整合Web项⽬的jar包,也就是监控项⽬启动的监听器所在的jar包 (8)创建Spring的核⼼配置⽂件并在其中引⼊约束<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/context/schema/context/spring-context.xsd/schema/aop/schema/aop/spring-aop.xsd/schema/tx/schema/tx/spring-tx.xsd"></beans> (9)把action交给Spring进⾏配置1 <!-- 配置action的对象 -->2 <!-- 注意action是多实例的,因此我们这⾥把scope配置为prototype的 -->3 <bean id="userAction" class="erAction" scope="prototype"></bean> ①在spring配置action对象,在struts.xml中也配置action对象 ②解决: 只需要在spring⾥⾯配置action对象,不要在struts.xml中配置<struts><package name="demo1" extends="struts-default" namespace="/"><!-- class属性⾥⾯不写action全路径了,因为写,action对象创建两次写spring配置的action的bean的id值--><action name="userAction" class="userAction"></action></package></struts> 可以这样写的原因是我们导⼊了⼀个Spring整合Struts2的jar包:struts2-spring-plugin-2.3.24.jar (10)web.xml中Spring监听器的配置<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:bean.xml</param-value></context-param> (11)测试准备 ①所需的为Struts2的核⼼配置⽂件:struts.xml ②Spring的配置⽂件:bean.xml ③项⽬的配置⽂件:web.xml ④Struts2的UserAction类 ⑤在UserAction中对UserService的调⽤ ⑥UserService中对UserDao的调⽤ ⑦UserDao类的编写struts.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""/dtds/struts-2.3.dtd"><struts><package name="demo1" extends="struts-default" namespace="/"><!-- class属性⾥⾯不写action全路径了,因为写,action对象创建两次写spring配置的action的bean的id值--><action name="userAction" class="userAction"></action></package></struts>bean.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/context/schema/context/spring-context.xsd/schema/aop/schema/aop/spring-aop.xsd/schema/tx/schema/tx/spring-tx.xsd"><bean id="userAction" class="erAction"><property name="userService" ref="userService"></property></bean><bean id="userService" class="erService"><property name="userDao" ref="userDaoImp"></property></bean><bean id="userDaoImp" class="erDaoImp"></bean></beans>web.xml<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance" xmlns="/xml/ns/javaee" xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" <display-name>spring-day4-ssh</display-name><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:bean.xml</param-value></context-param><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list></web-app>UserAction.javaimport com.opensymphony.xwork2.ActionSupport;import erService;public class UserAction extends ActionSupport {private UserService userService;public void setUserService(UserService userService) {erService = userService;}public String execute() throws Exception {userService.add();return NONE;}}UserService.javapublic class UserService {private UserDao userDao;public void setUserDao(UserDao userDao) {erDao = userDao;}public void add() {userDao.add();}}UserDao.java 其实现类public class UserDaoImp implements UserDao {public void add() {System.out.println("UserDaoImp....");}} (12)测试结果: 可以在后台观察到如下测试结果:image ⾄此,Spring和Struts2的整合已经完毕,然后是Spring对Hibernate的整合了。
三大框架ssh模式的详解SSH是Secure Shell的缩写,是一种用于安全远程登录的协议。
它可以通过加密隧道来传输数据,并提供了身份验证和数据完整性保护。
SSH模式可以分为以下三大框架:SSH-1、SSH-2和OpenSSH。
1.SSH-1:SSH-1是最早的SSH协议版本,由Tatu Ylönen在1995年开发。
SSH-1使用了基于RSA算法的身份验证机制,并使用了Diffie-Hellman 算法进行密钥交换。
然而,SSH-1存在许多安全漏洞,包括易受到中间人攻击的问题。
因此,SSH-1在1996年被SSH-2所取代,成为历史遗留的协议版本。
2.SSH-2:SSH-2是目前最广泛使用的SSH协议版本。
与SSH-1相比,SSH-2具有更好的安全性和可靠性。
SSH-2支持多种身份验证机制,包括密码、公钥和基于证书的身份验证。
它还增加了Diffie-Hellman组合机制和更强大的加密算法,如AES和3DES。
SSH-2还提供了压缩数据和端口转发等功能。
由于SSH-2的安全性和功能,它成为了企业网络中常用的远程登录协议。
3. OpenSSH:OpenSSH是SSH协议的开源实现,也是最常用的实现之一、OpenSSH 包括了SSH客户端和服务器端。
它被广泛使用于Linux和Unix系统中,提供了安全的远程登录和文件传输功能。
OpenSSH拥有良好的安全性和稳定性,并提供了许多高级功能,如X11转发、SFTP文件传输和动态端口转发。
OpenSSH还支持在非标准端口上运行,从而增加了安全性。
总结来说,SSH模式的三大框架包括SSH-1、SSH-2和OpenSSH。
SSH-1是最早的SSH协议版本,但存在安全漏洞,已被SSH-2所取代。
SSH-2具有更好的安全性和可靠性,支持多种身份验证机制和强大的加密算法。
而OpenSSH则是SSH协议的开源实现,被广泛应用于Linux和Unix系统中,提供了安全的远程登录和文件传输功能,并支持多种高级功能。
SSH框架的搭建详细图⽂教程转载-6.在MySQL中新建⼀个表,⽤来测试数据我在这⾥准备做⼀个注册登录功能,所以在test⾥建了⼀个user表,表⾥的字段有id、username、password、nickname四个字段。
nickname⽤来测试中⽂是否乱码。
SQL语句:CREATE TABLE `user` (`id` bigint(20) unsigned NOT NULL auto_increment COMMENT 'ID',`username` varchar(40) character set utf8 NOT NULL COMMENT '⽤户名',`password` varchar(40) collate utf8_unicode_ci NOT NULL COMMENT '密码',`nickname` varchar(40) character set utf8 NOT NULL COMMENT '昵称',PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ciCOMMENT='⽤户信息表';SSH框架搭建步骤:1. 新建⼀个项⽬。
打开MyEclipse,新建⼀个Web项⽬,起名就叫SSH,点击完成,若弹出提⽰点Yes即可。
2.添加Struts框架。
右键这个项⽬,选择MyEclipse->Add StrutsCapabilities。
在弹出的菜单中把包的路径改⼀下, Base package for new classes选项中的路径com.yourcompany.struts改成com.ssh.struts, 点击完成。
展开WebRoot中的WEB-INF⽂件夹,看到⽬录结构如下图,证明Struts框架添加完成。
达梦数据库的使用及整合SSH达梦数据库(Dameng Database)是中国自主研发的一种高性能、高可用、高可靠的企业级数据库管理系统。
它提供了丰富的数据库功能和性能优化技术,支持海量数据的存储和处理,广泛应用于银行、保险、电信、能源等各行各业。
本文将介绍达梦数据库的使用以及与SSH(Spring+Struts2+Hibernate)整合的方法。
一、达梦数据库的使用1.安装达梦数据库2.创建数据库使用达梦数据库提供的客户端工具(如DM SQL Studio),连接到数据库服务器,创建新的数据库。
可以使用SQL语句或图形界面进行数据库的创建,如:```CREATE DATABASE mydb;```3.创建表和插入数据在创建好的数据库中,创建表并插入数据。
可以使用SQL语句或图形界面进行表的创建和数据的插入,如:```CREATE TABLE mytableid INT PRIMARY KEY,name VARCHAR(50)INSERT INTO mytable (id, name) VALUES (1, 'Alice');INSERT INTO mytable (id, name) VALUES (2, 'Bob');```4.执行查询使用达梦数据库提供的客户端工具,执行查询语句查看数据。
可以使用SQL语句或图形界面进行查询,如:```SELECT * FROM mytable;```执行以上查询语句后,将会显示表中的所有数据。
二、达梦数据库与SSH的整合1.引入达梦数据库的驱动在SSH项目的pom.xml文件中,添加达梦数据库的驱动依赖,例如:```<dependency><artifactId>dmjdbc</artifactId><version>7.2</version></dependency>```2.配置数据源在项目的配置文件(如jdbc.properties)中,配置达梦数据库的连接信息,例如:```jdbc.url=jdbc:dm://localhost:5236/mydbername=your_usernamejdbc.password=your_password```3. 配置Hibernate在项目的配置文件(如hibernate.cfg.xml)中,配置Hibernate的相关信息,例如:```<propertyname="hibernate.dialect">org.hibernate.dialect.DmDialect</proper ty><propertyname="hibernate.connection.url">jdbc:dm://localhost:5236/mydb</p roperty><propertyname="ername">your_username</property> <propertyname="hibernate.connection.password">your_password</property> ```4.编写DAO层代码在SSH项目中,编写DAO层的代码,用于与达梦数据库进行交互。
详解ssh框架原理及流程什么是SSHSSH是 struts+spring+hibernate的⼀个集成框架,是⽬前较流⾏的⼀种web应⽤程序开源框架。
SSH不是⼀个框架,⽽是把多个框架(Struts、Spring以及Hibernate)紧密的结合在⼀起,⽤于构建灵活、易于扩展的多层Web应⽤程序。
SSH框架的系统从职责上分为四层:表⽰层、业务逻辑层、数据持久层和域模块层(实体层)。
SSH(Struts2+Spring+Hibernate)框架的项⽬,该架构主要分为三个层次:(1)Struts2:负责web层(2)Spring:业务层的管理(3)Hibernate:负责数据持久化Struts2⼯作原理:1.初始化⼀个指向servlet容器的请求。
2.请求经过web.xml中配置的过滤器过滤,FilterDispatcher(struts2控制器的核⼼)询问ActionMapper是否需要调⽤某个Action来处理这个请求。
如果ActionMapper决定需要调⽤某个Action,FilterDispatcher则把请求的处理交给ActionProxy。
3.ActionProxy通过配置⽂件Struts.xml配置⽂件找到需要调⽤的Action类。
4.ActionProxy创建⼀个ActionInvocation实例,同时ActionInvocation通过代理模式调⽤Action。
但在调⽤之前,ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)。
5.Action执⾏完毕后,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果result。
即开发⼈员通过发送http请求,这个请求经过web.xml的过滤器过滤看看是否要调⽤某个action,如果有则在Struts.xml找到该请求的实现的⽅法,然后返回运⾏的结果。
Hibernate⼯作原理:1. 读取并解析配置⽂件2.读取并解析映射信息,创建SessionFactory3. 打开Sesssion4.创建事务Transation5. 持久化操作6.提交事务7.关闭Session8. 关闭SesstionFactory即通过spring管理的Hibernate初始化时加载了xxx.hbm.xml然后读取解析映射信息,创建了SessionFactory。
SSH框架整合MyEclipse6.0+Tomcat6+SQLServer2005Struts1.2+Spring2.0+Hibernate3+DWR3.0一、新建项目,添加SSH支持1、MyEclipse6.0环境和使用技巧·定制右键New菜单在工具栏的空白处单击鼠标右键-->选择Customize Perspective-->勾选Struts1.2下的Struts1.2Form,Action_JSP和Struts1.2Plugin,去不掉其它多余的菜单项·使用技巧打开右键New菜单的快捷键:Shift+Alt+N再按相应的首字母导航如新建一个包:Shift+Alt+N-P输入包名再回车,继续这样操作提高效率在文档内容打开Source菜单Shift+Alt+S自动导入包Ctrl+Shift+O注释单行注释/取消Ctrl+/多行注释Ctrl+Shift+/取消Ctrl+Shift+\2、新建Web Project--ssh_demo2·使用J2EE1.4·勾选Add JSTL Libraries to WEB-INF/lib Folder,勾选JSTL1.13、创建好要用到的包accp.ssh.demo2|--vo存放实体类和Hibernate的实体映射文件|--dao存放数据库操作的dao类和接口|--biz存放业务类和接口|--servlet存放全局如字符过滤Servlet类|--ajax存放Ajax DWR远程访问类|--util存放一些工具类|--we|--message存放消息文件|--actions存放Struts-Action|--forms存放Struts-FormBean4、添加Spring支持选中如下包:Spring2.0AOP Libraries、Spring2.0Core Libraries、Spring2.0Persitence Core Libraries、Spring 2.0Persistence JDBCLibraries、Spring2.0Persistance JDO Libraries、Spring2.0Web Libraries更改Folder项将放入applicationContext.xml配置文件WebRoot/WEB-INF下135、添加Hibernate支持默认-->下一步-->勾选Spring管理Spring configuration file-->存在Existing Spring configuration file-->sessionFactoryID:sessionFactory-->配置数据源16、添加Struts支持更改消息文件的包名为:accp.ssh.demo2.web.message添加Struts1.2PlugIn·Plugin class游览中找到ContextLoaderPlugIn如果没有找到,打开Spring2.0Web Libraries\spring-struts.jar org.springframework.web.struts.ContextLoaderPlugIn·添加参数Set Properties-->Add-->参数:contextConfigLocation值:/WEB-INF/applicationContext.xml157、换包MyEclipse开发SSH项目jar包冲突是一件很烦人的事情,所以完成以上步骤后,将所有添加过的包删除,换准备好的不冲突精简jar包。
二、完成DAO后台及测试1、利用MyEclipse的Hibernate支持生成实体和映射文件Window-->show view-->other-->MyEclipse Database-->DB Browser查看一下生成的实体类ers和实体映射文件Users.hbm.xml特别要注意,映射文件中的主键生成策略,我这里是用户指定,设为assigned2、完成DAO 设计注意实现类在继承息定义dao 接口的同时还要实现Spring 对Hibernate 支持类org.springframework.orm.hibernate3.support.HibernateDaoSupport3、完成Biz 的设计在Biz 的实现类中加入private IUsersDao dao ;的声明,并提供setter 方法目的是在Spring 的配置文件中配置biz 时,注入dao ,以供其使用。
4、编写测试类ersTest在测试类UsersTest 中加入private IUsersBiz biz ;的声明,并提供setter 方法目的是在Spring 的配置文件中配置测试类时,注入依赖的biz 。
5、配置applicationContext.xml·在dataSource 的Bean 中添加destroy-method="close"·在sessionFactory 的Bean 中添加属性<prop key ="hibernate.show_sql">true </prop >显示sql 语句·配置dao<bean id ="userDao"class ="ersDaoImpl"><property name ="sessionFactory"ref ="sessionFactory"></property ></bean >·配置biz<bean id ="userBiz"class ="ersBizImpl"><property name ="dao"ref ="userDao"></property ></bean >·配置test<bean id ="userTest"class ="ersTest"><property name ="biz"ref ="userBiz"></property></bean >6、最后写测试Client 类,进行各个方法的测试具体实例请参考ssh_demo2实例。
三、完成前台Struts部分的1、添加Struts的三大组件From Action JSP Shift+Alt+N--S找到Struts1.2Form,Action JSP1)Form&&JSPUse case:login(准备做一个用户登录框)Name:上面写了下面自动生成LoginFormForm Impl:选择默认New FormBeanSuper class:选择org.apache.struts.action.ActionFormForm type:更改一下包名accp.ssh.demo2.web.forms.LoginFormMethods:取消选择所有方法,这里不需要JSP:选择Create JSP form,这样它会在指定的路径创建jsp页面New JSP Path:/login.jspForm Properties:加入实体Users2)ActionPath:自动生成,不改/loginAction Impl:选择默认Create New Action classSuper class:根据需要选择Action类型,这里选择分发Action org.apache.struts.actions.DispatchActionType:更改包名accp.ssh.demo2.web.actions.LoginActionForm:Attribute:loginFormScope:requestInput Source:/login.jsp这里配置input="/login.jsp"属性由于是DispatchAction,所以要配parameter:operate Forwards:配置ok--/index.jsp error--/login.jsp两条转发路径2、修改生成的LoginForm修改生成的LoginForm中的字段private Users user=new Users();3、修改生成的消息文件消息文件可以用MyEclipse自动转换,我这里用%Java_Home%\bin\native2ascii工具转换在message包下添加一个文本文件ApplicationResources.txt,内容为:err.pass=密码错误!=用户名错误!cmd-->进入message包路径-->native2ascii ApplicationResources.txt ApplicationResources.zh_CN.properties这样消息文件就制作完成了。
4、修改并完成LoginAction添加一个属性private IUserBiz biz;并提供setter方法供Spring依赖注入使用修改方法名execute-->login5、配置struts-config.xml文件修改action中的type为org.springframework,web.struts.DelegatingActionProxy 目的是使Struts加入Spring的管理行列6、修改生成的login.jsp文件有几个地方需要注意的:·由于采用DispatchAction,所以要增加一个隐藏域<html:hidden property="operate"value="login"/>·用户名属性名称为user.loginName,由于ActionForm中采用了实体(Users)做为属性·密码属性名称为user.loginPass·页面中显示错误<html:errors/>7、配置applicationContext.xml文件在applicationContext.xml中配置Action<bean name="/login"class="accp.ssh.demo2.web.actions.LoginAction"> <property name="biz"ref="userBiz"/></bean>8、打开Tomcat ,发布项目运行四、Spring 配置事务1、修改业务类接口和实现类,添加一个用于测试事务的方法2、修改index.jsp 页面,增加一个超链接调用后台测试事务<a href ="login.do?operate=validateTransaction">验证事务</a>3、编写事务的配置文件这里提供了两种,分别对应Spring 1.x 版本的和Spring 2.x 版本的版本可以向下兼容,因此Spring 2.x 中也可以用1.x 的配置,但Spring 1.x 中不可以用2.x 的配置。