SSH集成spring-Struts2整合详细步骤
SSH2整合实例详细教程
本次教程是SSH2的环境搭建,主要用到的技术是struts2.0+hibernate3.2+spring2.0,这种架构在现在很流行的,也是很多高校学生做毕业设计的架构,今天我们就用这种架构做一个简单的实例,详细的步骤,在于抛砖引玉,给大家一点启发。
一、创建数据库的时候会创建出联合主键<Composite-id>。
二、项目创建1、打开MyEclipse,点击File,指向New,点击Web Project。
2、输入工程名SSH,J2EE Specification Level为Java EE 5.0,点Finish即可创建完项目。
三、添加hibernate环境1、右击刚建立的SSH项目,指向MyEclipse,点击Add Hibernate Capabilities。
2、出现如下对话框之后,选择要用到的Hibernate3.2,以及所用到的包,选择Copy checked Library Jars to project folder and add to build-path,点击Next。
3、到了这一步,按默认设置,点击Next。
4、取消Specify database connection details的选择,再点击Next。
5、取消Create SessionFactory class选择,最后点击Finish。
这样一些有关hibernate的jar包点导进来了,以及建了一个hibernate.cfg.xml文件。
导入前:导入后:四、添加spring环境1、和添加hibernate环境的方法大致相同,右击SSH项目,指向MyEclipse,点击Add spring Capabilities。
2、选择要用到的Spring 2.0,勾选用到的库,注意还要勾选Spring 2.0 Web Libraries的库,一共是勾选了5个库的。
再选择Copy checked Library contents to project folder(TLDs always copied),点击Next。
三大框架整合及其原理
一搭建三大框架步骤1 搭建s2sh步骤分析:1.1在MyEclipse 里面新建一个 java web project1.2新建三个 Source Folder :src : 源文件config : 存放配置文件 : hibernate , spring , struts2test: 测试类1.3 导入环境需要的jar 包 : WebRoot/WEB-INF/lib (一共64个)2 搭建Hibernate 和Spring 整合(*根据搭建需求谁能先测试就先搭建谁)2.1 在 src 源文件里面建立一个 cola.s2sh.domain[并且在该包下创建一个持久类和该类的映射文件] .2.2 配置核心文件在 config 里面建立一个hibernate 文件夹里面创建hibernate.cfg.xml配置文件(里面的内容拷贝就可以)2.3 在spring 文件夹里面创建并且把sessionFactory 交给spring 来管理: [applicationContext-db.xml中引入][<bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation"><value>classpath:hibernate/hibernate.cfg.xml</value> </property></bean>]在 applicationContext.xml 中 : 导入<import resource="applicationContext-db.xml"/>2.4 测试sessionFactory[编写SpringUtils 然后继承这个][public class SpringUtils {public static ApplicationContext context;static {context = newClassPathXmlApplicationContext("spring/applicationContext.xml" );}}]2.5 编写 dao .service 的包类和接口;PersonDaoImpl 要继承HibernateDaoSupport[public class PersonDaoImpl extends HibernateDaoSupport implements PersonDao {public void savePerson(Person person) {this.getHibernateTemplate().save(person);}}]2.6 把 dao ,service 放在spring 容器中:[<bean id="personDao"class="cola.s2sh.daoImpl.PersonDaoImpl"> <property name="sessionFactory"><ref bean="sessionFactory"/></property></bean><bean id="personService"class="cola.s2sh.service.impl.PersonServiceImpl"><property name="personDao"><ref bean="personDao"/></property></bean>]2.7 完成 spring 声明式处理 :[<!-- 事务管理 --><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory"><ref bean="sessionFactory"/></property></bean><tx:advice id="tx"transaction-manager="transactionManager"><tx:attributes><tx:method name="save*"read-only="false"/><tx:method name="update*"read-only="false"/><tx:method name="delete*"read-only="false"/><!--除了上面三种情况以外的情况--><tx:method name="*"read-only="true"/></tx:attributes></tx:advice><aop:config><aop:pointcutexpression="execution(* cola.s2sh.service.impl.*.*(..))"id="perform"/><aop:advisor advice-ref="tx"pointcut-ref="perform"/> </aop:config>]2.8 整合struts 创建 action 类包 ;2.9 把action 放在spring 容器中* 注意在personAction的spring的配置中一定要写一个属性scope="prototype"[<bean id="personAction"class="cola.s2sh.action.PersonAction" scope="prototype"><property name="personService"><ref bean="personService"/></property></bean>]在这个中引入下面3.0 编写struts2中配置文件Struts –person.xml中Struts.xml3.1 编写web .xml文件[<?xml version="1.0"encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance"xmlns="/xml/ns/javaee"xmlns:web="/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID"version="3.0"><display-name>cola.s2sh</display-name><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener><!—将srping放在SrvletContext中进行加载当servlet加载时 spring 也完成加载 --> <context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/applicationContext.xml</param-value> </context-param><filter><filter-name>OpenSessionInViewFilter</filter-name><filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class></filter><filter-mapping><filter-name>OpenSessionInViewFilter</filter-name><url-pattern>*.action</url-pattern></filter-mapping><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>]二原理分析:一、 Struts 2框架整合Spring步骤1、复制文件。
ssh详解
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。
struts2+spring3+hibernate整合教程
Struts2+Spring3+hibernate3整合(2011年7月末,最新)上次下载了一个教程,上面写着:“献给我亲爱的老婆!”(羡慕不已)。
想了想,我没老婆,难道没什么好写了!不难…献给我暗恋过的每一个女人!(嘿嘿…)如果在你遇到的女生中有一个幽默豁达的女生,不要犹豫,追上去,就娶她了!一,需要的框架包二,建立project,添加相应的.jar文件(重点)1,eclipse中建立dynamic web project,这里是ssh_integrate_0100。
2,src中创建需要的类,这里以一个域模型为user的例子说明。
(现在建立这些类,可以方便我们在搭建时候随时测试!)User.javaIUserDao.javaUserDaoImpl.javaIUserService.javaUserServiceImpl.java3,拷贝spring-framework-3.1.0\dist目录下的所有jar包,注意有一个不是jar的文件,当然拷过去也没事。
4,拷贝spring运行中需要的其他jar文件,主要是mons-logging,可以从spring-framework-3.0.2.RELEASE-dependencies中找到。
ii.Aspectjrt.jar和aspect-waver.jar,可以从spring-framework-2.5.6-with-dependencies/lib/aspectj下面找到(不知道为什么,spring-framework-3.0.2.RELEASE-dependencies中没有aspectjrt的jar包)iii.aopalliance.Jar,apache-dbcp.jar,apache-pool.jar,可以从spring-framework-3.0.2.RELEASE-dependencies中找到。
5,建立beans.xml,这里使用的是annotation和component-scan,这样配置可以大大简化配置,所以是best-practice,其他配置请参考spring文档。
基于SSH呼叫中心排班系统的设计与实现
基于SSH呼叫中心排班系统的设计与实现摘要:随着呼叫中心规模不断壮大,服务水平与员工舒适度、管理便利性与资源利用率、以及效率与公平之间的博弈也越来越突出。
基于SSH,阐述了呼叫中心排班系统的设计与实现,重点描述了系统各个功能模块、系统流程、所采用的关键技术和排班算法、及使用SSH的系统整合实现。
系统在某南方供电分公司呼叫中心已实施,从而验证了算法的准确性、合理性。
与同类其他系统比较,该系统具有更安全、更稳定、更易扩展、更易维护之优点。
关键词:SSH;呼叫中心;排班管理;Erlang C0 引言随着呼叫中心规模的不断扩大,其管理工作也变得日益复杂,如何通过分析现有的历史话务数据,结合员工的不同技能来完成呼叫中心人力资源的最佳配置,成了管理者们所关注的重要问题。
但是目前小型呼叫中心现存的手工排班,由于各方面的局限性,无法解决所面对的种种问题和冲突。
呼叫中心排班系统的诞生,是为了替代复杂的手工排班,通过预测、排班、统计分析管理等途径,提高呼叫中心的整体服务水平,提升客户的满意度,降低不必要的运营成本,并且提高员工的满意度。
1 SSH框架现代的企业开发中,越来越多地引入了多层架构设计模式,SSH(Spring、Struts和Hibernate,简称为SSH)是目前比较流行的开源框架,它提出了一种开发J2EE 应用的轻量级解决方案,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用系统。
1.1 SSH框架整合开发SSH框架是利用Struts2框架作为系统整体的基础技术架构,Struts2负责了MVC(Model-View-Cotroller,模型-视图-控制)的分离;Spring框架的核心是IoC (Inversion of Control,控制翻转)/ DI(Dependence Injection,依赖注入)机制,负责架构的结合;Hibernate架构来提供持久层支持。
1.2 Struts与Spring的整合Spring提供了自己的Web框架.同时也提供了与其他流行的Web框架整合的能力。
当前SSH布局和初始化步骤
在web.xml中加入如下语句:
<context-param>
<param-name>contextConfigLocation</param-name>
1.建立项目
2.搭建环境
Hibernate:
添加jar(9+1):
hibernate-distribution-3.3.2.GA/hibernate3.jar
hibernate-distribution-3.3.2.GA/lib/required/*(6个)
,复制以下内容
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</listener>
###好了,现在可以启动服务器测试以下是否存在问题.
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
创建struts.xml文件:可以到/apps/struts2-blank-2.2.1/WEB-INF/src/java文件夹下复制struts.xml文件.
配置Web.xml:
SSH矿建中spring配置步骤
---》next -- --》------》 finish 完成
第六步: 开始写底层代码, 先写接口 ---》再写实现类 (实现类要继承hibernateDaoSupport)
写完底层代码 要在 spring.xml文件中 进行配置
在 struts 中配置国际化
<!-- 配置国际化 value 的值 要和 .properties的文件的名称一致-->
<constant name="struts.custom.i18n.resources" value="message"></constant>
在页面中如何应用 国际化
</tag>
第十四步: 创建tree节点
要 导入 dtree.css样式, img图片文件,dtree.js文件
在页面上也要引用
<!-- dree使用的 引入js 和 css -->
<script type="text/javascript" src="js/dtree.js"></script>
和 两个文件(jquery.easyui.min.js,jquery-1.7.2.min.js);
Unable to load configuration. - [unknown location]错误:
解决问题步骤:
第一,jar包冲突,检查项目中的jar包是否同时有
xerce.jar和xml-apis.jar这两个jar包,有的话删除xerce.jar
idea搭建ssh框架的超详细教程
idea搭建ssh框架的超详细教程⽬录⼀。
创建项⽬1.new->project出现如下2.构建⽬录结构⼆。
Struts21.⾸先引⼊struts2依赖2.WEB-INF下web.xml⽂件配置3.在resources下添加struts.xml⽂件4.在action包下创建TestAction类,为了测试在webapp下新建了test.jsp页⾯5.部署6.启动测试三。
Spring1.⾸先引⼊spring相关依赖2.在web.xml中添加listener,并在resources下新建spring,xml⽂件四。
Hibernate1.引⼊hibernate依赖2.View--》Toolwindows---->Database3.编写代码⼀。
创建项⽬先附上测试的数据库DROP TABLE IF EXISTS `user`;CREATE TABLE `user` (`id` int(5) NOT NULL AUTO_INCREMENT,`name` varchar(10) COLLATE utf8_bin DEFAULT NULL,`password` varchar(10) COLLATE utf8_bin DEFAULT NULL,`remark` varchar(50) COLLATE utf8_bin DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;-- ------------------------------ Records of user-- ----------------------------INSERT INTO `user` VALUES ('1', 'zhangsan', '123456', null);INSERT INTO `user` VALUES ('2', 'lisi', '123', null);INSERT INTO `user` VALUES ('3', 'wangan', '456', null);INSERT INTO `user` VALUES ('4', 'xinxi', '000', null);1.new->project出现如下点击next后出现如下填写GroupId和ArtifactId在点击next直⾄finish2.构建⽬录结构在main下新建java和resources⽬录如下并将java⽬录标记为Sources Root,resources标记为Resources Root在java下新建如下包package⼆。
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的整合了。
struts2+hibernate+spring经典整合实例教程
Struts2与Spring、Hibernate三者整合的过程示例:示例工具:MyEclipse 7.0、Tomcat 6.0、MySql步骤:1.创建一个WEB工程,命名为BookShop(名字自己取,此处为示例工程名);2.导入struts2的核心jar包,也就是在WEB-INF下的lib文件夹中放入jar包文件,如下图(图中jar包为示例版本):3.加载spring,选中工程名,右击并选择【MyEclipse】选项下的【Add Spring Capabilities...】(或者在工具栏中选择【MyEclipse】下的【Add Spring Capabilities...】),在弹出的对话框中进行如下图所示操作:点击【Next】,点击Folder文本框后的【Browse】,在弹出对话框中选择spring配置文件存储位置为WEB-INF 文件夹,如下图所示:点击【OK】后,再点击【Finish】完成。
至此,已经完成加载spring,在WEB-INF文件夹下已经生成了配置文件applicationContext.xml。
4.加载Hibernate,选择【MyEclipse】下的【Add Hibernate Capabilities...】,在弹出对话框中进行如下图所示操作:点击【Next】后,选择Existing Spring configuration file单选框,在SessionFactory Id文本框中填入"sessionFactory",如下图所示:点击【Next】,进行如下图所示操作:该操作中,只需在Bean Id文本框中输入一个Id名,作为数据库源的代用名,意义不大。
然后在DB Driver 下拉列表中,选择MyEclipse中创建好的数据库源xiaoqi,其他信息将自动填写。
点击【Next】,在弹出对话框中去掉Create SessionFactory class?复选框,不创建该类,点击【Finish】完成(创建过程中,加载的jar包文件可能有重复,所以这个时候如果提示有某些jar包重复,问全部保存【Keep Exiting】,还是替换掉【Replace】,可以选择替换掉【Replace】)。
达梦数据库的使用及整合SSH
达梦数据库的使用及整合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框架原理及流程
详解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。
SSH2教程
SSH2 环境配置教程及实际登陆例子所需工具:使用Struts2. 1+Hibernate3.3+Spring3.0版本,JDK是1.6, MyEclipse8.6, 数据库MySQL5.5(MyEclipse及MySQL的版本可根据自己的情况适当改变,不会有大的影响)。
步骤:第一部分:数据库的准备工作1、创建数据库CREATE SCHEMA `contact` DEFAULT CHARACTER SET utf8登录嘛!当然有个用户的数据表咯!创建表userCREATE TABLE `contact`.`user` (`id` INT NOT NULL AUTO_INCREMENT ,`username` VARCHAR(45) NOT NULL ,`password` VARCHAR(45) NOT NULL ,PRIMARY KEY (`id`) ,UNIQUE INDEX `id_UNIQUE` (`id` ASC) ,UNIQUE INDEX `username_UNIQUE` (`username` ASC) );创建的表格user有3个字段,id,username,password.2、数据库创建完毕,在MyEclipse右上角找到MyEclipse Hibernate perspective的试图界面吧!创建一个MySQL的连接,如图所示:Driver Jar 根据自己包存放的位置选择点击Finish 。
数据库的准备工作结束。
第二部分:SSH2搭建1、创建Web Project项目2、Struts2的搭建添加Struts的配置,点击你的项目,在上面的MyEclipse菜单中找到Capabilities的addStruts Capabilities。
然后点击Next吧!由于引包容易出现冲突等问题,在引包界面取消选择MyEclipse Libraries ,如图:(所有需要的包(包括hibernate 及 spring 所需的包)均打包在lib.rar,请解压后复制到lib文件下)Finish之后, src目录下就多了一个struts.xml的配置文件,这时你的web.xml里面也多了一段:<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5"xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><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></web-app>这时Struts已搭建好。
SSH整合过程(struts-2.3.15.1+spring-3.2.4+hibernate-4.2.3)
SSH整合SSH整合前应该先熟悉各个框架的单独使用,至少要了解各自的xml配置。
环境:struts-2.3.15.1,spring-3.2.4,hibernate-4.2.3,myeclipse10,JDK-1.6,Mysql Jar包:1.新建web项目2.以简单的登录验证为例3.建立login.jsp,login_success.jsp,login_error.jsp4.引入struts2(1)web.xml配置<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepa reAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>(2)src下的struts.xml配置<package name="default"namespace="/"extends="struts-default"><action name="login"class="com.accp.action.LoginAction" method="login"><result name="success"> /login_success.jsp </result><result name="error"> /login_error.jsp </result></action></package>(3)测试struts2是否能够通过5.引入spring(1)配置web.xml,添加listener<listener><listener-class>org.springframework.web.context.ContextLoaderListener </listener-class></listener><!-- 告知spring config location 的存储位置 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:beans.xml</param-value></context-param>(2)配置src下的beans.xml将spring的ApplicationContext.xml拷贝至src下,删除里面的配置项,只保留下面内容<?xml version="1.0"encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd"></beans>6.引入hibernate(1)配置beans.xml<?xml version="1.0"encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:jee="/schema/jee"xmlns:tx="/schema/tx"xmlns:aop="/schema/aop"xmlns:p="/schema/p"xmlns:util="/schema/util"xmlns:tool="/schema/tool" xmlns:context="/schema/context"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd /schema/tx/schema/tx/spring-tx.xsd/schema/aop/schema/aop/spring-aop.xsd/schema/jee/schema/jee/spring-jee.xsd/schema/context/schema/context/spring-context.xsd/schema/util/schema/util/spring-util.xsd/schema/tool/schema/tool/spring-tool.xsd"default-lazy-init="true"default-autowire="byName"><!--spring jdbc配置数据源 Mysql--><bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"value="com.mysql.jdbc.Driver" /><property name="url"value="jdbc:mysql://localhost:3306/test" /><property name="username"value="user"/><property name="password"value="123456"/></bean><!-- hibernate.cfg.xml Spring config --><bean id="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><!-- connection --><property name="dataSource"><ref local="dataSource"/></property><!-- hibernate自身属性 --><property name="hibernateProperties"><props><prop key="hibernate.show_sql">true</prop><prop key="hibernate.format_sql">true</prop><propkey="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <propkey="hibernate.current_session_context_class">thread</prop></props></property><!-- 映射文件<property name="mappingResources"><list><value>com/forwor/ssh/entity/xml/User.hbm.xml</value></list></property>--></bean><!-- 注入 --><bean id="userDao"class="erDaoImpl"> <property name="sessionFactory"><ref local="sessionFactory"/></property></bean><!-- aop --><!-- transaction --><bean id="userManager"class="erManagerImpl"><property name="userDao"><ref local="userDao"/></property></bean><!-- advice --><bean id="transactionManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager "><property name="sessionFactory"><ref local="sessionFactory"/></property></bean><!-- 事务处理 --><bean id="transactionInterceptor"class="org.springframework.transaction.interceptor.TransactionInterce ptor"><property name="transactionManager"><ref local="transactionManager"/></property><property name="transactionAttributes"><props><prop key="register">PROPAGATION_REQUIRED</prop><!--hibernate4必须配置为开启事务否则 getCurrentSession()获取不到--><prop key="get*">PROPAGATION_REQUIRED,readOnly</prop><prop key="find*">PROPAGATION_REQUIRED,readOnly</prop><prop key="select*">PROPAGATION_REQUIRED,readOnly</prop><prop key="query*">PROPAGATION_REQUIRED,readOnly</prop><prop key="sync*">PROPAGATION_REQUIRED</prop><prop key="finish*">PROPAGATION_REQUIRED</prop><prop key="add*">PROPAGATION_REQUIRED</prop><prop key="insert*">PROPAGATION_REQUIRED</prop><prop key="edit*">PROPAGATION_REQUIRED</prop><prop key="update*">PROPAGATION_REQUIRED</prop><prop key="save*">PROPAGATION_REQUIRED</prop><prop key="remove*">PROPAGATION_REQUIRED</prop><prop key="delete*">PROPAGATION_REQUIRED</prop><prop key="login*">PROPAGATION_REQUIRED</prop><propkey="*">PROPAGATION_REQUIRED,ng.Exception</prop></props></property></bean><!-- autoproxy 自动创建代理--><bean id="ProxyCreator"class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyC reator"><property name="beanNames"><list><value>*Manager</value></list></property><property name="interceptorNames"><list><value>transactionInterceptor</value></list></property></bean><bean id="loginAction"class="com.accp.action.LoginAction"scope="prototype"><property name="userManager"><ref local="userManager"/></property></bean></beans>7.类图以用户登录验证为基础的测试流程控制8.注意事项(1)login.jsp 输入内容的name为ername user.password时,LoginAction中应该为user生成相应的get/set方法。
SSH相对完整版总结
struts2+spring+hibernate三大框架环境搭建小小总结:(相对完整版)一、环境搭建导入各种jar包什么的就不多说了。
二、整个包结构及模式:1、src文件下,由panyname组成一个大的包结构和各项配置文件组成;2、companyname下,分成两部分:A、model层;B、功能层(一个功能层下面包含:action层、dao层、service层);3、model层下,包含整个项目所要的数据库表名,按照功能来命名包的名称;A、model层下包含对应的数据库表的java类实体类,里面包含对应数据库表中所有的字段以及完整的get,set方法(即里面的所有字段都有get、set方法);B、model层下对应的java实体类下必须要实现对应的数据库表的hbm.xml映射文件,里面实现了对应数据库表中所有字段的映射;C、hbm.xml等映射文件,必须到applicationContext.xml中进行映射;格式如下:<property name="mappingResources"><list><value>com/ectrip/cyt/model/XXX.hbm.xml</value> </list></property>4、功能层下,可以只有一个功能模块结构,也可以将多个功能相似的模块放到一个包结构下面,再在包结构下细分到具体的功能模块的功能层结构;A、一个完整的功能模块包下包含:action,dao,service层;1>、对应的action层包含对应功能实现的Action类;(公司的Action类必须继承公司的BaseAction类!)2>、对应的dao层包含对应功能实现的数据库操作类;(dao层下有idao层和对应功能实现的数据库操作类,idao层则为定义对应功能实现的数据库方法名接口)3>、对应的service层包含对应功能实现的各service接口;(service层下有iservice 层和对应功能方法实现类,iservice层则为定义对应功能方法名接口)5、各项配置文件:A、首先包含三个大的配置文件:applicationContext.xml,struts.xml,jdbc.properties,web.xmlB、applicationContext.xml实现依赖注入,struts.xml实现各响应功能的配置,jdbc.properties配置数据库相关属性C、其中1>、需要将jdbc.properties配置文件里面的数据库名与自己项目所操作的数据库一致。
实验 七 MyEclipse8.6-10版的SSH实验
基于Struts2.1 + Spring3.0 + Hibernate3.3的整合实验(MyEclipse10版)2013.11.18一. 目的和要求本实验是让学生初步掌握综合利用Struts2 + Spring3.0 + Hibernate3.3进行企业级Web 应用开发的基本方法,了解Spring框架的作用。
二. 实验步骤1.准备数据库和数据库连接驱动(1)在SQL Server 20XY中创建数据库test和表users,创建表的SQL脚本如下:Use testCREATE TABLE users (id tinyint IDENTITY (1, 1) primary key ,username varchar (20) NOT NULL ,password varchar (20) NOT NULL)(2)在MyEclipse的Database Explore透视图中创建数据库连接驱动DN。
2.创建工程,使其具有Struts、Spring和Hibernate能力(1)新建web工程SSH图0 工程包结构总览图(左部)(2)使工程具有Struts能力1)选择struts的最新版本和使用action的模式在MyEclipse10中struts的最新版本为2.1,URL模式选为/*,选择如图1所示。
注意过滤器的名字,这个名字会在web.xml中体现出来。
图1 struts的版本和Action的使用方式选择2)Struts包的选择因为这次实验要与Spring集成,所以对Struts包的选择,除了导入Struts的核心包外,还要导入Struts的Spring库,选择如图2所示。
图2 Struts包的选择(3)使工程具有Spring能力1)选择Spring的最新版本和相关库的安装方式在MyEclipse10中Spring的最新版本为3.0。
对JAR包的安装,可以选择将检测到的库增加到build-path中,或将检测到的库的内容复制到工程中。
ssj集成详细过程(附带源文件)
以添加用户为示例的SSH整合全过程,按以下细节集成ssh,包你一次成功,百试百灵,帮你轻松拿下SSH(*^__^*)1.添加struts1.2支持。
(大家应该都会吧!)(同上操作,选择)(同第一步操作,选择)下一步:下一步:下一步:支持添加完毕,首先修改web.xml配置: <<<listenerclass的位置,仔细看看4.到现在环境搭建的差不多了,开始建实体类以及映射文件,dao类(接口以及实现类),完成后如图:下面注意,映射文件中的lazy属性:接下来到hibernate.cfg.xml中写入映射文件:<mapping resource="com/entity/User.hbm.xml" />5.下面开始建前台页面以及action和actionform:struts-config.xml配置如下:6.先写好userDaoImp的具体实现方法:(如下)public class UserDaoImp extends HibernateDaoSupport implements UserDao { //继承HibernateDaoSupportpublic boolean addUser(User user) { //用boolean类型判断转跳页面,也可是voidboolean b=false;this.getHibernateTemplate().save(user); //直接调用模板方法b=true;System.out.println("addUser--"+user.getName()); //顺便加个打印输出测试下,加不加无所谓return b;}}下面注意actionform里面对象不要忘记实例化了:然后在action中调用daoImp的方法;首先添加属性userdao以及提供set方法:private UserDao ud;public void setUd(UserDao ud) {this.ud = ud;}调用的userDaoImp的方法:public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { RegForm regForm = (RegForm) form;// TODO Auto-generated method stubUser user=new User();user.setName(regForm.getUser().getName());user.setPassword(regForm.getUser().getPassword());boolean b=ud.addUser(user); //方法返回boolean类型if (b) {return mapping.findForward("suc");}else{return mapping.findForward("fail");}}7.一切准备就绪,现在开始将userDaoImp以及action注入到spring种,applicationContext.xml的配置如下:<!--将UserDaoImp注入 --><bean id="userDao"class="erDaoImp"><property name="sessionFactory"ref="sessionFactory"></property> // sessionFactory一定要注入到userDao </bean><!-- action --><bean name="/reg"class="com.struts.action.RegAction"><property name="ud"ref="userDao"></property></bean>经过那么多过程,到现在,快启动下tomcat测试看看,没有报错的页面让你心情舒畅很多吧(^_^),先别急着高兴,现在该配置事务了配置事务很简单,在applicationContext.xml中如下配置:(大家手动配下,不要copy了,自配一次才印象深刻嘛)首先,这点很关键:自动生成的applicationContext.xml不完整,准备就绪后就在applicationContext.xml写入如下配置:<!-- 配置事务管理器 --><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory"ref="sessionFactory"></property>//别忘了注入sessionFactory </bean><!-- 配置事务传播特性 --><tx:advice id="txAdvice"transaction-manager="transactionManager"> <tx:attributes><tx:method name="add*"propagation="REQUIRED"/><<//Listener 监听器的另一种配法:最后dataSource配置参数就可以,可以看看如下代码:<!-- 配置数据源 --><bean id="dataSource" class="mons.dbcp.BasicDataSource"><!—这里需要说明一下的是 name是不能变的只能是driverClassName --><!—value就是指定driverClassName 的值--><!—-${jdbc.driverClassName}类似EL表达式,{}括号里面的实际是你属性文件的里面key,要一一对应--> <property name="driverClassName" value="${jdbc.driverClassName}"/><!—只能是url --><property name="url" value="${jdbc.url}"/><!—只能是username --><property name="username" value="${ername}"/><!—只能是password --><property name="password" value="${jdbc.password}"/></bean>到此,配置结束了···。
Eclipse下SSH2框架搭建 详细
一、Struts2和Spring整合,创建一个OA工程1、整合struts21)导入strut2的jar 包:commons-logging-1.0.4.jar,freemarker-2.3.8.jar,ognl-2.6.11.jar,struts2-core-2.0.12.jar,xwork-2.06.jar。
暂时导入这些jar包,到时候需要再倒入。
2)将struts.xml文件放置在OA工程的src目录下。
3)在web.xml里面配置struts2用到的核心过滤器。
Xml代码<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>2、整合spring1)导入spring的jar包:spring.jar2)将applicationContext.xml文件放置在OA工程的WEB-INF目录下。
3)在web.xml里面配置spring用到的监听器。
Xml代码<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>4)添加struts2-spring整合的插件:struts2-spring-plugin-2.0.12.jar,如果不使用这个插件,则需要在struts.xml里面配置:Xml代码<constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory" />3、测试struts2和spring整合对不对?写一个jsp页面login.jsp来测试:Html代码<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><s:form action="Login" method="post"><s:textfield name="userName" label="userName"></s:textfield><s:password name="password" label="password"></s:password><s:submit label="submit"></s:submit></s:form></body></html>写一个LoginActionJava代码package com.struts2.action;import com.opensymphony.xwork2.ActionSupport;import com.struts2.service.LoginService;public class LoginAction extends ActionSupport {private LoginService loginService;private String userName;private String password;public void setLoginService(LoginService loginService) {this.loginService = loginService;}public String getUserName() {return userName;}public void setUserName(String userName) {erName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String execute() throws Exception {if(loginService.isLogin(userName, password))return SUCCESS;elsereturn INPUT;}}写一个ServiceJava代码package com.struts2.service;public interface LoginService {boolean isLogin(String userName,String password);}写一个Service的实现Java代码package com.struts2.service.impl;import com.struts2.service.LoginService;public class LoginServiceImpl implements LoginService {public boolean isLogin(String userName, String password) { if("hello".equals(userName) && "world".equals(password)) return true;elsereturn false;}}在struts.xml里面配置:Xml代码<package name="struts2" extends="struts-default"><action name="Login" class="loginAction"><result name="success">/result.jsp</result><result name="input">/login.jsp</result></action></package>在applicationContext.xml里面配置:Xml代码<bean id="loginService" class="com.struts2.service.impl.LoginServiceImpl"></bean><bean id="loginAction" class="com.struts2.action.LoginAction" scope="prototype"> <property name="loginService" ref="loginService"></property></bean>启动tomcat,分别输入hello和world,提交,结果为hello和world。
SSH开发模式——Struts2(第一小节)
SSH开发模式——Struts2(第⼀⼩节)在制定了学习计划的学习过程中,我感觉学习还是很有效率的。
很短的时间内,我便学习完了JavaWeb的连接池、DbUtils框架及其⼀些⼯具类的使⽤。
学⽆⽌境,学习这些知识还远远不够,所以,在接下来的时间⾥,我将对JavaWeb中的SSH开发模式进⾏⼀个简单的学习,并⽤博客记录学习进度。
开发模式相信⼤家都有接触或听说,但⼜觉得这个东西很神秘,的确,这看不见摸不着的东西确实很让⼈好奇,所以,从今天开始,我将带着⼤家去揭开它神秘的⾯纱。
我会把整个开发模式分为三部分,第⼀部分:Struts2,第⼆部分:Hibernate,第三部分:Spring。
但是即使分为了三部分,每个部分的框架仍然略显复杂。
所以,我将在每部分的框架中继续细分。
那么,今天便开始第⼀部分的内容,Struts2。
⾸先了解⼀下Struts2的历史吧。
Struts1是全世界第⼀个发布的MVC框架在2001年发布Struts2并不是Struts1的升级版是由WebWork基础上发展起来的吸收了Struts 1和WebWork两者的优势那Struts2到底是什么呢?Struts2是⼀个⽤来开发MVC应⽤程序的框架。
它提供了Web应⽤程序开发过程中的⼀些常见问题的解决⽅案:页⾯导航活动的管理⽤户输⼊数据的合法性验证统⼀的布局可扩展性国际化和本地化⽀持Ajax表单的重复提交我们假设⼀个场景,在⼀个jsp页⾯中有多个超链接,点击每个超链接都需要进⾏对应的处理,每个超链接对应⼀个Java类,类中有⼀个⽅法,我们的⽬的就是要点击超链接调⽤对应的Java类的⽅法,对于这样的场景,我们有两种解决⽅案,⼀是通过Servlet去调⽤Java类,⼆是通过过滤器去调⽤Java类。
但是两种⽅法都很⿇烦,重复的代码特别多,这时候,Struts2框架就起到了⾄关重要的作⽤,它可以很⽅便地帮助我们解决这个问题。
那么,如何搭建Struts2的开发环境呢?搭建Struts2环境时,我们⼀般需要做以下⼏个步骤的⼯作:1. 创建javaweb⼯程2. 找到开发Struts2应⽤需要使⽤到的jar⽂件3. 创建jsp⽂件4. 创建action⽂件5. 编写Struts2的配置⽂件6. 在web.xml中加⼊Struts2 MVC框架启动配置我们按照步骤⼀步步⾛。
第9章 Spring与Struts2、Hibernate框架的整合
第9章Spring与Struts2、Hibernate框架的整合基础一、搭建Struts框架注:导入的jar包与前面课程介绍的不同二、搭建Spring框架1.添加的类库包括AOP、Core、Persistent Core、JDBC、Web库2.修改applicationContext.xml的存储目录为WebRoot/WEB-INF三、搭建hibernate框架1.建立数据库连接2.搭建框架,注意选择的配置文件为applicationContext.xml而不是hibernate.cfg.xml。
1)设置SessionFactory的Bean id为sessionFactory。
2)设置DataSource的Bean Id为dataSource3)取消“Create SessionFactory class”选项4)导入包commons-pool-1.3到lib文件夹。
四、修改web.xml加入Spring监听器配置,至此所有框架搭建完毕。
<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>五、数据库建表六、在工程下创建domain、dao包,反向工程自动生成实体类、配置文件、dao类。
1)反向工程将生成的dao文件2)移动dao类到dao包,修改由于移动dao类后applicationContext.xml出现的错误,并将id名首字母改成小写。
3)为dao类提取出接口。
在工作区右键dao文件-》refactor-》extract interface七、编写service、service接口并配置1)创建service包2)创建service类,定义方法findScoreBySnumber()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
搭建SSH框架spring与struts2的集成1:单独配置struts一:导入struts包二:编写Actionpublic class JboaEmployeeAction extends ActionSupport { public String login(){System.out.println("login..............");return SUCCESS;}}三:配置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="sys"namespace="/"extends="struts-default"><action name="jboaEmployeeAction"class="action.JboaEmployeeAction" method="login"><result name="success">index.jsp</result></action></package></struts>四:配置web.xml ---struts2的核心控制器<?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="sys"namespace="/"extends="struts-default"><action name="jboaEmployeeAction"class="action.JboaEmployeeAction" method="login"><result name="success">index.jsp</result></action></package></struts>五:测试struts配置是否成功在IE测试输入:http://localhost:8080/spring3_02/jboaEmployeeAction2:准备spring与strus2的集成一:导入包struts2-spring-plugin-2.3.14.jar二:配置web.xml---spring的监听器如果导入了struts2-spring-plugin-2.3.14.jar后,没有配置如下代码,则会报错com/opensymphony/xwork2/spring/SpringObjectFactory.java<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>三:在Action中,如何访问业务Bean第一种:按名字匹配(推荐)// jboaEmployeeService这个名字,应该对应业务层bean的id值private JboaEmployeeService jboaEmployeeService;public void setJboaEmployeeService(JboaEmployeeService jboaEmployeeService) { System.out.println("已经注入业务对象jboaEmployeeService.....");this.jboaEmployeeService = jboaEmployeeService;}第二种:按类型匹配关键:根据set方法中的参数类型匹配!在struts.xml中配置常量: P74页最下面一段,和p75页最上面一段有说明<constant name="struts.objectFactroy.spring.autoWire" value="type"></constant> 3:案例:根据登陆用户,判断职位目的:突出说明OpenSessionInViewFilter一:编写login.jsp<%@page language="java"pageEncoding="UTF-8"%><%@taglib prefix="s"uri="/struts-tags"%><!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>登录</title></head><body><h1>登录</h1><s:form action="jboaEmployeeAction"method="post"><s:textfield name="employee.empName"label="用户名"/><s:password name="employee.empPwd"label="密码"/><s:submit value="登录"></s:submit></s:form></body></html>二:编写Actionpublic class JboaEmployeeAction extends ActionSupport {private JboaEmployeeService jboaEmployeeService;private JboaEmployee employee;public String login(){System.out.println("login..............");JboaEmployee newEmployee =jboaEmployeeService.login(employee);//将登陆的信息都放入sessionMap<String, Object> session = ActionContext.getContext().getSession();session.put("newEmployee", newEmployee);System.out.println("职位是:"+newEmployee.getJboaPosition().getPosNameCn());String ret = SUCCESS;if (newEmployee == null) {System.out.println("返回登陆................");ret = INPUT;}return ret;}public void setJboaEmployeeService(JboaEmployeeService jboaEmployeeService) {System.out.println("已经注入业务对象jboaEmployeeService.....");this.jboaEmployeeService = jboaEmployeeService;}public JboaEmployee getEmployee() {return employee;}public void setEmployee(JboaEmployee employee) {this.employee = employee;}}三:编写index.jsp编写测试代码:职位是:${newEmployee.jboaPosition.posNameCn }</br>欢迎:${newEmployee.empName }------------------分割线------------------------- 运行index.jsp之后,获取职位信息【报错】!解决方案一:<many-to-one name="jboaPosition" class="entity.JboaPosition" fetch="select" lazy="false"> 加上lazy="false"立即加载!解决方案二:(推荐)关键点:1:在web.xml配置如下代码,必须放在struts核心控制器的前面2:访问路径必须带结尾是*.action,否则无法触发.OpenSessionInViewFilter<filter><filter-name>OpenSessionInViewFilter</filter-name><filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </filter-class></filter><filter-mapping><filter-name>OpenSessionInViewFilter</filter-name><url-pattern>*.action</url-pattern></filter-mapping>4:HibernateCallback实现自定义的分页一:接口:/*** 利用回调函数,实现分页* @param page* @param size* @return*/public List<JboaEmployee> find(final int page,final int size);二:实现:public List<JboaEmployee> find(final int page, final int size) { List<JboaEmployee> result = getHibernateTemplate().executeFind(new HibernateCallback() {public Object doInHibernate(Session session)throws HibernateException, SQLException {Query query = session.createQuery("from JboaEmployee");query.setFirstResult((page-1)*size);query.setMaxResults(size);return query.list();}});return result;}5:struts2与spring整合的第二种方式一:配置applicationContext.xml<!--action层--><bean id="employeeAction"class="action.JboaEmployeeAction"scope="prototype"><property name="jboaEmployeeService"ref="jboaEmployeeService"></property></bean>二:修改struts.xml<action name="jboaEmployeeAction"class="employeeAction"method="login"> <result name="success">index.jsp</result></action>注意【黄色】部分必须一致,但是<bean id="employeeAction">的id值,不要和action name="jboaEmployeeAction">的值相同。