Struts框架和Hibernate框架的整合完整版介绍
谈Struts+Hibernate+Spring的整合方法全面
![谈Struts+Hibernate+Spring的整合方法全面](https://img.taocdn.com/s3/m/9f876ef7aef8941ea76e058a.png)
∙浅谈Struts+Hibernate+Spring的整合方法∙本文将介绍Struts,Spring与hibernate的集成。
希望大家能从中受用。
1、在工程中导入spring支持,导入的Jar包有:◆ Spring 2.0 Core Libraries◆Spring 2.0 ORM/DAO/Hibernate3 Libraries◆ Spring 2.0 AOP Libraries◆ Spring 2.0 Web Libraries2、在Spring配置文件中配置dataSource和SessionFactory,将hibernate配置与Spring配置整合在一起(可以删除hibernate.cfg.xml文件);3、导入数据库源所要使用的Jar包,如:DBCP所用的JAR包(commons-pool.jar);4、修改所有DAO的hibernate实现,因为Spring中提供了一个HibernateDAOSupport 类,可以简化数据库的操作。
使用所有DAO类都继承自该类;5、将DAO采用依赖注入的方式注入到Biz中,再将Biz采用依赖注入的方式注入到Action中,在Spring配置文件中做相应配置;6、将Spring与Struts集成:1)在spring配置文件配置Action:将Biz注入到Action中;2)修改Struts的配置文件:将Action的type属性修改为:org.springframework.web.struts.DelegatingActionProxy;3)在web.xml文件中配置监听器以及web应用的初始化参数:contextConfigLocation/WEB-INF/applicationContext.xml/WEB-INF/applicationContext-beans.xml7、为了解决应用中的中文乱码问题,我们可以不用自己开发过滤器类,Spring为我们提供了一个,只需要配置一下即可:8、为了解决hibernate延迟加载的问题,使用Spring中提供的过滤器来解决,它能够让Session在请求解释完成之后再关闭,配置方式如下:9、因为OpenSessionInViewFilter在getSession的时候,会把获取回来的session的flush mode 设为FlushMode.NEVER。
Struts2、spring2、hibernate_的整合
![Struts2、spring2、hibernate_的整合](https://img.taocdn.com/s3/m/36394cea551810a6f5248632.png)
一.struts 2 与spring2struts2 本身就采用了类似于spring的IOC容器机制,可以利用struts2官方提供的插件struts2-spring-plugin-2.0.11.1.jar,直接与spring进行整合,配置文件中只需要设置struts.objectFactory=spring这样,就将struts2的对象管理交给了spring2的IOC容器。
在struts.xml中配置的action<package name="maintaince" extends="struts-default"><action name="serverInfoList" class="serverInfoService" method="getAllServersInfo"><result name="list">/jsp/server_info/server_info_list.jsp</result></action>在spring的配置文件中配置的bean<bean id="serverInfoService" class="com.wod.service.impl.ServerInfoServiceImpl"><property name="serverInfoDao" ref="serverInfoDao"/><property name="sib" ref="serverInfoBean"/></bean>可以看出,struts2可以直接只用在spring2中配置的bean,引用过来作为action。
第14章 Hibernate框架与Struts1框架的整合
![第14章 Hibernate框架与Struts1框架的整合](https://img.taocdn.com/s3/m/c8f9d559336c1eb91a375da0.png)
14.2 如何Hibernate框架和Struts1框架
添加Struts1框架的支持
添加Hibernate框架的支持
整合两个框架
举例
本章结束
本章总结
整合Hibernate框架和Struts1框架的方法
上机习题
第14章
Hibernate框架与Struts1框架的架和Struts1 框架
14.2 如何Hibernate框架和Struts1框架
14.1 为什么整合Hibernate框架和Struts1框架
Struts1框架是对MVC设计模式的一个具体实现,但 是并没有对Model(模型层)进行具体的实现。 Hibernate是一个对象关系映射的框架,可以应用在 任何使用JDBC的场合。它对JDBC进行了非常轻量 级的封装,将对关系数据库的操作转换为对象的操 作,使程序员从对数据库的操作解放出来。因此, 为了在Web应用项目的开发中充分发挥MVC设计模 式的优势,将Hibernate框架和Struts1框架进行整 合,以提高系统的可维护性及可扩展性。
Struts2+spring2+hibernate3整合方案
![Struts2+spring2+hibernate3整合方案](https://img.taocdn.com/s3/m/56af69076bec0975f565e285.png)
Struts2+spring2+hibernate3整合方案最近闲来无事可做,于是开始学习struts2。
Struts2和struts1、webwork2有什么区别我也不说了,网上有很多这方面的资料。
以前在项目中从未使用过struts,一直使用spring+hibernate,现在既然学习了Struts,也不能浪费,于是乎开始琢磨着怎么整合这3个框架。
整合原理以spring为容器,管理hibernate的DAO和Struts2的Action。
一、准备工作Struts2.06+spring2.5+hibernate3.2+jdk6.0+myeclipse6.0+tomcat5.5+mysql 5.0以上是整合的原料。
下面以一个注册登陆的例子来开始我们的整合过程。
这个例子很简单,下面是它的sql脚本内容:CREATE TABLE `user` (`userid` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(20) NOT NULL,`password` varchar(16) NOT NULL,`email` varchar(30) NOT NULL,PRIMARY KEY (`userid`)) ENGINE=InnoDB DEFAULT CHARSET=utf-8;二、开始行动包结构可以参考下图1) Struts部分:建立struts.xml和struts.propertiesStruts.xml内容如下:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configur ation 2.0//EN" "/dtds/struts-2.0.dtd" ><struts><package name="user_curd" extends="struts-default"><global-results><!-- 下面定义的结果对所有的Action都有效 --><result name="exception">/error.jsp</result></global-results><global-exception-mappings><!-- 指Action抛出Exception异常时,转入名为exception的结果。
Struts框架和Hibernate框架的整合完整版介绍
![Struts框架和Hibernate框架的整合完整版介绍](https://img.taocdn.com/s3/m/949831232cc58bd63086bdd2.png)
Struts框架和Hibernate框架的整合1、首先写一个student的实体类,命名为:StudentEntity.java package com.liu.student.entity;/*** 数据库表的映射实体类文件* @author Calasin*/public class StudentEntity {private String s_id;// 学号private String s_name;// 姓名private int s_age;// 年龄public String getS_id() {return s_id;}public void setS_id(String s_id) {this.s_id = s_id;}public String getS_name() {return s_name;}public void setS_name(String s_name) {this.s_name = s_name;}public int getS_age() {return s_age;}public void setS_age(int s_age) {this.s_age = s_age;}public String toString() {return"StudentEntity [s_id="+ s_id+ ", s_name="+ s_name + ", s_age=" + s_age + "]";}}2、接着写student实体类StudentEntity的配置文件:StudentEntity.hbm.xml<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN"" :///hibernate-mapping-3.0.dtd "><hibernate-mapping><!-- name属性:对应实体类的地址,table属性:对应数据库的表名称(对应数据库表是什么名字,这里就是写什么名字) --><class name="com.liu.student.entity.StudentEntity" table="student"><!-- name对应的是java,column对应的是数据库,但是一般两个都写成一样,这样可以防止出错name属性:主键id,对应的是java中的类中的属性,column属性:对应数据库中的主键id --><id name="s_id"column="s_id"><!-- 主键生成策略:uuid 32位随机的字符串 --><generator class="uuid"></generator></id><!-- name属性:对应java中的实体类属性,column属性:对应的数据库中的字段名称,type属性:表示java中的数据类型,默认可以不添加 --> <property name="s_name"column="s_name" type="ng.String"></property><property name="s_age"column="s_age"></property> </class></hibernate-mapping>3、接下来写实体类的Action:StudentActionpackage com.liu.student.action;import java.util.List;import com.liu.student.entity.StudentEntity;import com.liu.student.service.StudentService;import com.liu.student.service.StudentServiceImpl;import com.opensymphony.xwork2.ActionSupport;/*** 与jsp页面交互,完成数据传递* @author Calasin*/public class StudentAction extends ActionSupport { private List studentList;//创立一个List类型的学生列表private StudentService studentService= new StudentServiceImpl();private StudentEntity studentEntity;/*** 查询学生表的列表信息** @return*/public String studentList() {studentList = studentService.getStudentList();return"studentList";}public String updPage() {studentEntity = studentService.getStudentEntity(studentEntity.getS_id());return"updPage";}public String upd() {studentService.update(studentEntity);return"upd";}public List getStudentList() {return studentList;}public void setStudentList(List studentList) {this.studentList = studentList;}public StudentEntity getStudentEntity() {return studentEntity;}public void setStudentEntity(StudentEntity studentEntity) { this.studentEntity = studentEntity;}}4、接下来写提供数据库的接口interface: Dao.javapackage com.liu.dao;import java.util.List;/*** 提供数据库接口* @author Calasin*1.总体设计:设计Student对象及相关实体配置文件,工具类〔得到一个Session对象〕,* StudentDao接口〔实现此接口即以操作数据库〕,下面代码用"Dao"代替,编写主配置文件,编写测试类。
原创Struts+Spring+hibernate框架整合步骤(多图)
![原创Struts+Spring+hibernate框架整合步骤(多图)](https://img.taocdn.com/s3/m/a02b7683ec3a87c24028c429.png)
Struts框架应用步骤第1步:向web应用程序添加struts框架的功能注意:必须要选中项目的根节点第2步:创建一个普通的类,一般都归放在web层的包中。
第3步:在类中定义前台页用户输入的数据项,并为这些数据项提供get/set方法第4步:再定义一个处理业务请求的方法,该方法返回String类型第5步:将这个定义了数据项和业务处理方法的类,在struts.xml中注册第6步:编写前台JSP页面,并导入Struts标签库,并且把form的action属性填写上面配置的action的name值Spring框架应用步骤第1步:选中根节点,选spring框架,如下图第2步:在web.xml文件中加上以下代码<listener><listener-class>org.springframework.web.context.ContextLoaderL istener</listener-class></listener>第3步:在spring的配置文件applicationContext.xml中注册各层的对象注意:每层的对象注册时,如果该对象还有属性依赖别的对象,应该为这个属性生成get/set 方法第4步:在struts配置文件加上以下代码,用以交出对象的控制权<constant name="struts.objectFactory"v alue="spring"></constant><include file="struts-default.xml"></include>第5步:修改struts的action的class属性,使之与spring中的对象id属性值对应第6步:将applicationContext.xml复制到WEB-INF目录下,就可以部署启动了。
Struts2,Spring,Hibernate整合步骤及一个简单实例
![Struts2,Spring,Hibernate整合步骤及一个简单实例](https://img.taocdn.com/s3/m/e904496e1ed9ad51f01df23e.png)
Struts2,Spring,Hibernate整合步骤(自己笔记)配步骤的例子一个:请参看:Struts2,Spring,Hibernate整合例子一个1.建立web项目2.在web.xml 配置 struts2,和 spring ,<!-- 配置Struts2 --><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher(struts的过滤器)</filter-class></filter><filter-mapping>(加载struts2)<filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 配置Spring --><listener><listener-class>org.springframework.web.context.ContextLoaderListener(spring监听器)</listener-class></listener><!-- 查找spring配置文件 --><context-param>(程序从此处开始加载.xml 文件,并执行)<param-name>contextConfigLocation</param-name><param-value>classpath*:*.xml</param-value></context-param>3.在src根目录下创建struts.xml文件<include file="struts-default.xml"/>固定格式,用到此包4.在src根目录创建hibernate.cfg.xml文件<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN" "/hibernate-configura tion-3.0.dtd"><hibernate-configuration><session-factory><!-- 基本配置 --><property name="dialect">org.hibernate.dialect.Oracle9Dialect</property><property name="show_sql">false</property><property name="format_sql">true</property><propertyname="e_reflection_optimizer">true</property><property name="max_fetch_depth">2</property><property name="default_batch_fetch_size">8</property><property name="jdbc.batch_size">20</property></session-factory></hibernate-configuration>系统给的文件只需要拷贝,都是一些数据库库的基本配置5.在src根目录拷贝struts.properties文件struts.objectFactory = spring 该项是告诉系统用spring来控制hibernate和Actionstruts.action.extension=action 告诉系统访问时以什么结尾。
Struts和hibernate融合
![Struts和hibernate融合](https://img.taocdn.com/s3/m/cbf14adf26fff705cc170ae4.png)
有时候让人很郁闷,看了一大篇的文字说明,结果弄个整合还是没成功,还不如言简意赅的舒服,下面就简单学习下Struts2+Hibernate的整合。
其实就七个步骤:第一步:添加所需的jar包。
第二步:创建实体类以及对应的映射文件。
第三步:配置hibernate.cfg.xml配置文件。
第四步:配置struts.xml配置文件。
第五步:创建相应的action。
第六步:在web.xml中配置启动Struts2框架的过滤器。
第七步:编写JSP显示页面。
---------------------------------------------------------------------------------------------------------------------------具体细节及代码如下(代码仅供参考):第一步:jar包的添加这里不多说。
第二步:实体类Message.java1./**2. * ClassName: Message.java3. * Created on 20114. * Copyrights 2011 /tjcyjd All rights reserved.5. * site: /tjcyjd6. * email: 908599713@7. */8.package com.yjd.nb.domain;9.10.import java.io.Serializable;11.import java.util.Date;12.13./**14. * 留言实体类15. *16. * @author yjd17. */18.public class Message implements Serializable {19.20.private static final long serialVersionUID = 6617253915349620625L;21.private Integer id; // OID22.private String nickname; // 昵称23.private boolean gender; // 性别24.private String header_img; // 头像25.private String qq; // qq26.private String email; // 邮箱号27.private String content; // 留言内容28.private String ip; // 发布者的IP地址29.private Date pubTime; // 留言时间30.private String reply;// 管理员回复内容31.private Date replyTime; // 回复时间32.33.public Integer getId() {34.return id;35. }36.37.public void setId(Integer id) {38.this.id = id;39. }40.41.public String getNickname() {42.return nickname;43. }44.45.public void setNickname(String nickname) {46.this.nickname = nickname;47. }48.49.public boolean isGender() {50.return gender;51. }52.53.public void setGender(boolean gender) {54.this.gender = gender;56.57.public String getHeader_img() {58.return header_img;59. }60.61.public void setHeader_img(String headerImg) {62. header_img = headerImg;63. }64.65.public String getQq() {66.return qq;67. }68.69.public void setQq(String qq) {70.this.qq = qq;71. }72.73.public String getEmail() {74.return email;75. }76.77.public void setEmail(String email) {78.this.email = email;79. }80.81.public String getContent() {82.return content;83. }84.85.public void setContent(String content) {86.this.content = content;87. }88.89.public String getIp() {90.return ip;91. }92.93.public void setIp(String ip) {94.this.ip = ip;95. }96.97.public Date getPubTime() {98.return pubTime;100.101.public void setPubTime(Date pubTime) {102.this.pubTime = pubTime;103. }104.105.public String getReply() {106.return reply;107. }108.109.public void setReply(String reply) {110.this.reply = reply;111. }112.113.public Date getReplyTime() {114.return replyTime;115. }116.117.public void setReplyTime(Date replyTime) {118.this.replyTime = replyTime;119. }120.121.@Override122.public String toString() {123.return"Message [content=" + content + ", email=" + email + ", gend er="124. + gender + ", header_img=" + header_img + ", id=" + id 125. + ", ip=" + ip + ", nickname=" + nickname + ", pubTime="126. + pubTime + ", qq=" + qq + "]";127. }128.129.}实体类映射文件Message.hbm.xml.[html]view plaincopy1.<!DOCTYPE hibernate-mapping PUBLIC2. "-//Hibernate/Hibernate Mapping DTD3.0//EN"3. "/dtd/hibernate-mapping-3.0.dtd">4.5.<hibernate-mapping>6.<class name="com.yjd.nb.domain.Message"table="msg">7.<id name="id"column="id">8.<generator class="native"/>9.</id>10.11.<property name="nickname"/>12.<property name="gender"/>13.<property name="header_img"/>14.<property name="qq"/>15.<property name="email"/>16.<property name="ip"/>17.<property name="content"/>18.<property name="pubTime"column="pub_time"/>19.<property name="reply"/>20.<property name="replyTime"column="reply_time"/>21.</class>22.</hibernate-mapping>第三步:Hibernate配置文件hibernate.cfg.xml.[html]view plaincopy1.<!DOCTYPE hibernate-configuration PUBLIC2. "-//Hibernate/Hibernate Configuration DTD3.0//EN"3. "/dtd/hibernate-configuration-3.0.dtd">4.5.<hibernate-configuration>6.<session-factory>7.<!-- 数据库的连接参数配置 -->8.<property name="hibernate.connection.driver_class">9. com.mysql.jdbc.Driver10.</property>11.<property name="hibernate.connection.url">12. jdbc:mysql:///s2h-model13.</property>14.<property name="ername">root</property>15.<property name="hibernate.connection.password">root</property>16.17.<!-- 数据库方言 -->18.<property name="hibernate.dialect">19. org.hibernate.dialect.MySQLDialect20.</property>21.22.<!-- c3p0连接池的配置 -->23.<property name="connection.provider_class">24. org.hibernate.connection.C3P0ConnectionProvider25.</property>26.<property name="hibernate.c3p0.min_size">5</property>27.<property name="hibernate.c3p0.max_size">30</property>28.<property name="hibernate.c3p0.timeout">1800</property>29.<property name="hibernate.c3p0.max_statements">50</property>30.31.<!-- 其它配置 -->32.<property name="hbm2ddl.auto">update</property>33.<property name="show_sql">true</property>34.<!-- <property name="format_sql">true</property> -->35.36.<!-- 注册映射文件 -->37.<mapping resource="com/yjd/nb/domain/Message.hbm.xml"/>38.39.</session-factory>40.</hibernate-configuration>第四步:Struts2配置文件struts.xml.1.<?xml version="1.0"encoding="UTF-8"?>2.<!DOCTYPE struts PUBLIC3. "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"4. "/dtds/struts-2.1.dtd">5.<struts>6. <!--7.在struts.xml文件中可以使用<constant>标记来对default.properties中的常量属性做覆盖性配置,最常更改的几个常量属性是:8. 1.struts.i18n.encoding=UTF-8:请求消息的编码方式9. 2.struts.action.extension=action:指定被struts2处理的请求后缀类型。
Struts+Spring+Hibernate整合开发详
![Struts+Spring+Hibernate整合开发详](https://img.taocdn.com/s3/m/cc9f0e2c647d27284b73511f.png)
Struts+Spring+Hibernate/SSH整合开发详细(一)终于,终于将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-4973-b6b7-37a e3ec78391.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。
步骤同2所述,只不过这次是加入Spring Capabilities。
struts+spring+hibernate三个框架的整合
![struts+spring+hibernate三个框架的整合](https://img.taocdn.com/s3/m/2bc104d259f5f61fb7360b4c2e3f5727a5e92411.png)
struts+spring+hibernate三个框架的整合准备三个框架结合的lib包Spring3结合Struts2的步骤如下:1:开启Struts2结合Spring3,在struts.xml中添加如下语句:java代码:<constant name="struts.objectFactory" value="spring"/>2:在web.xml中添加listener,如下:java代码:<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>3:在web.xml中指定需要初始读取的spring配置⽂件,如下:java代码:<context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value></context-param>5.当然别忘了加上Struts2⾃⼰的filter4:在struts.xml中Action配置的时候,如下:java代码:<action name="testAction" class="springBeanName"><result name="success">/index.jsp</result></action>5:在Spring中正常定义Bean就可以了,把Action定义成为Bean,如下:java代码:<bean id="testAction" class="com.bjpowernode.test.web.TestActioin"><property name="ebi" ref="testEbi"/></bean>6:在Struts的Action中,就可以通过依赖注⼊的⽅式来注⼊需要使⽤的接⼝了。
Struts2+Spring+Hibernate框架整合总结详细教程
![Struts2+Spring+Hibernate框架整合总结详细教程](https://img.taocdn.com/s3/m/6218231317fc700abb68a98271fe910ef12dae65.png)
Struts2+Spring+Hibernate框架整合总结详细教程⼀.SSH三⼤框架知识总结 Struts 2是Struts的下⼀代产品,是在 struts 1和WebWork的技术基础上进⾏了合并的全新的Struts 2。
其全新的Struts 2的与Struts 1的体系结构差别巨⼤。
Struts 2以WebWork为核⼼,采⽤的机制来处理⽤户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。
虽然从Struts 1到Struts 2有着太⼤的,但是相对于WebWork,Struts 2的变化很⼩。
⼀ Struts2⼯作原理 在Struts2框架中的处理⼤概分为以下⼏个步骤 1 客户端初始化⼀个指向Servlet容器(例如Tomcat)的请求 2 这个请求经过⼀系列的过滤器(Filter)(这些过滤器中有⼀个叫做ActionContextCleanUp的可选过滤器, 这个过滤器对于Struts2和其他框架的集成很有帮助,例 如:SiteMesh Plugin) 3 接着FilterDispatcher被调⽤,FilterDispatcher询问ActionMapper来决定这个请求是否需要调⽤某个Action 4 如果ActionMapper决定需要调⽤某个Action,FilterDispatcher把请求的处理交给ActionProxy 5 ActionProxy通过Configuration Manager询问框架的配置⽂件,找到需要调⽤的Action类 6 ActionProxy创建⼀个ActionInvocation的实例。
7 ActionInvocation实例使⽤命名模式来调⽤,在调⽤Action的过程前后,涉及到相关拦截器(Intercepter)的调⽤。
8 ⼀旦Action执⾏完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。
第9章 Spring与Struts2、Hibernate框架的整合
![第9章 Spring与Struts2、Hibernate框架的整合](https://img.taocdn.com/s3/m/b2d81b3bf111f18583d05a68.png)
第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()。
图文并茂Hibernate入门及Struts总结文档
![图文并茂Hibernate入门及Struts总结文档](https://img.taocdn.com/s3/m/29506f60be23482fb4da4cc6.png)
第一章框架技术概述第二章Struts原理(一)第三章Struts原理(二)第四章Struts标签库第五章使用Hibernate完成对象持久化第一章框架技术概述1、Struts规范程序结构;Hibernate简化数据库访问操作;Spring提高可扩展性、可维护性;Ajax提高用户体验。
2、框架的好处:可扩展性、可维护性、提高代码质量。
组件:对外部提供功能和服务;框架:组件与组件之间动态协作好了。
3、Struts:MVC模式的实现;接收用户请求,调度业务逻辑,转发到正确页面;控制器。
Hibernate:ORM,简化数据库操作;DAO层。
4、控制器:系统控制器(ActionServlet):与业务无关的公共功能;业务控制器(Action):调度业务前端,继承Action父类。
第二章Struts原理(一)第一步:发出Http请求;第二步:ActionServlet被初始化时,解析struts-config.xml文件,同时加载填充FormBean;第三步:调用Action进行处理数据;第四步:调用JavaBean业务逻辑;第五步:将结果返回到控制器ActionServlet;第六步:转发到JSP试图页面;第七步:响应Http。
2、使用Struts开发的四个步骤:给项目添加Struts支持;实现业务类;添加Struts组件(ActionForm,Action,添加JSP页面,配置struts-config.xml);调试运行。
3、简化Struts开发步骤:第一步:添加Struts支持:进入后:添加支持完成。
第二步:配置struts-config.xml:找到配置文件:打开:添加Form、Action、JSP:添加Add表单:另外在本窗口要设置需自动生成的jsp页面:下一步之后:添加跳转页面:添加后,完成即可。
在配置文件中自动生成的内容:即可完成。
第三步:找到FormBean类进行编码:打开Action处理完成之后,即可以完成简单的提交操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Struts框架和Hibernate框架的整合1、首先写一个student的实体类,命名为:StudentEntity.java package com.liu.student.entity;/*** 数据库表的映射实体类文件* @author Calasin*/public class StudentEntity {private String s_id;// 学号private String s_name;// 姓名private int s_age;// 年龄public String getS_id() {return s_id;}public void setS_id(String s_id) {this.s_id = s_id;}public String getS_name() {return s_name;}public void setS_name(String s_name) {this.s_name = s_name;}public int getS_age() {return s_age;}public void setS_age(int s_age) {this.s_age = s_age;}public String toString() {return"StudentEntity [s_id="+ s_id+ ", s_name="+ s_name + ", s_age=" + s_age + "]";}}2、接着写student实体类StudentEntity的配置文件:StudentEntity.hbm.xml<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""/hibernate-mapping-3.0.dtd "><hibernate-mapping><!-- name属性:对应实体类的地址,table属性:对应数据库的表名称(对应数据库表是什么名字,这里就是写什么名字) --><class name="com.liu.student.entity.StudentEntity" table="student"><!-- name对应的是java,column对应的是数据库,但是一般两个都写成一样,这样可以避免出错name属性:主键id,对应的是java中的类中的属性,column属性:对应数据库中的主键id --><id name="s_id"column="s_id"><!-- 主键生成策略:uuid 32位随机的字符串 --><generator class="uuid"></generator></id><!-- name属性:对应java中的实体类属性,column属性:对应的数据库中的字段名称,type属性:表示java中的数据类型,默认可以不添加 --> <property name="s_name"column="s_name" type="ng.String"></property><property name="s_age"column="s_age"></property> </class></hibernate-mapping>3、接下来写实体类的Action:StudentActionpackage com.liu.student.action;import java.util.List;import com.liu.student.entity.StudentEntity;import com.liu.student.service.StudentService;import com.liu.student.service.StudentServiceImpl;import com.opensymphony.xwork2.ActionSupport;/*** 与jsp页面交互,完成数据传递* @author Calasin*/public class StudentAction extends ActionSupport { private List studentList;//创建一个List类型的学生列表private StudentService studentService= new StudentServiceImpl();private StudentEntity studentEntity;/*** 查询学生表的列表信息** @return*/public String studentList() {studentList = studentService.getStudentList();return"studentList";}public String updPage() {studentEntity = studentService.getStudentEntity(studentEntity.getS_id());return"updPage";}public String upd() {studentService.update(studentEntity);return"upd";}public List getStudentList() {return studentList;}public void setStudentList(List studentList) {this.studentList = studentList;}public StudentEntity getStudentEntity() {return studentEntity;}public void setStudentEntity(StudentEntity studentEntity) { this.studentEntity = studentEntity;}}4、接下来写提供数据库的接口interface: Dao.javapackage com.liu.dao;import java.util.List;/*** 提供数据库接口* @author Calasin*1.总体设计:设计Student对象及相关实体配置文件,工具类(得到一个Session对象),* StudentDao接口(实现此接口即以操作数据库),下面代码用"Dao"代替,编写主配置文件,编写测试类。
*2.StudentDao的设计,最初打算设计成通用Object的操作,* 后来发现它的Session对象操作都要传递一个对象,就设计成如下形式。
内容如下:*/public interface Dao {public List getList(String hql);//查看学生的列表信息public void add(Object obj);//增加public void update(Object obj);//修改public void delete(Object obj);//删除public Object getObj(Class cls, String id);//获取单一实体类对象}5、接下来写接口实现类的具体操作方法DaoImpl,实现Dao接口package com.liu.dao;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;/*** Dao接口实现类,具体的操作,主要工作由Hibernate来完成* 以下几点需要注意:导包:Hibernate包,数据库包;改写配置文件;查询方法的设计;注意事务,特别是“增删改”要注意事务。
* @author Calasin*/public class DaoImpl implements Dao {private Session session;public DaoImpl() {// 提供一个空参构造// 首先构建一个Configuration对象,可以调用configure()方法Configuration cfg = new Configuration().configure();// 再用这个对象构建一个SessionFactory对象,才是真正意义上可操控的实例对象SessionFactory sessionFactory = cfg.buildSessionFactory();// 然后在用这个对象来构建一个SessionFactory对象session = sessionFactory.openSession();}// 增加public void add(Object obj) {// TODO Auto-generated method stub}// 删除public void delete(Object obj) {// TODO Auto-generated method stub}/*** 查询列表方法(通用查询)*/public List getList(String hql) {// TODO Auto-generated method stubtry {session.beginTransaction();// 开启事务Query query = session.createQuery(hql);List list = query.list();session.getTransaction().commit();// 提交return list;} catch (Exception e) {// TODO: handle exceptionreturn null;} finally {session.close();}}/*** 获取单一实体类对象*/public Object getObj(Class cls, String id) { try {session.beginTransaction();Object object = session.get(cls, id);session.getTransaction().commit();return object;} catch (Exception e) {// TODO: handle exceptionreturn null;} finally {session.close();}}/*** 修改单一实体类对象*/public void update(Object obj) {// TODO Auto-generated method stubtry {session.beginTransaction();session.update(obj);session.getTransaction().commit();} catch (Exception e) {// TODO: handle exception} finally {session.close();}}}6、接下来写service层:StudentServicepackage com.liu.student.service;import java.util.List;import com.liu.student.entity.StudentEntity;public interface StudentService {public List getStudentList();//查public void add (StudentEntity studentEntity);//增public void update(StudentEntity studentEntity);//改public void delete(StudentEntity studentEntity);//删public StudentEntity getStudentEntity(String s_id);}7、接下来写service层:StudentServiceImplpackage com.liu.student.service;import java.util.List;import com.liu.dao.Dao;import com.liu.dao.DaoImpl;import com.liu.student.entity.StudentEntity;/*** 针对数据库中student表的操作** @author Calasin**/public class StudentServiceImpl implements StudentService { private Dao dao = new DaoImpl();public void add(StudentEntity studentEntity) {// TODO Auto-generated method stub}public void delete(StudentEntity studentEntity) {// TODO Auto-generated method stub}public StudentEntity getStudentEntity(String s_id) { // TODO Auto-generated method stubStudentEntity studentEntity = (StudentEntity) dao.getObj( StudentEntity.class, s_id);return studentEntity;}public List getStudentList() {// TODO Auto-generated method stubString hql = "from StudentEntity";List list = dao.getList(hql);return list;}public void update(StudentEntity studentEntity) {// TODO Auto-generated method stubdao.update(studentEntity);}}8、配置文件config介绍(hibernate.cfg.xml和struts.xml)Hibernate.cfg.xml介绍如下:<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/hibernate-configuration-3 .0.dtd"><hibernate-configuration><session-factory><propertyname="hibernate.connection.url">jdbc:mysql://localhost:3306/te st?characterEncoding=utf-8</property><propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><propertyname="ername">root</property><propertyname="hibernate.connection.password">123456</property><!-- 数据库方言 --><propertyname="hibernate.dialect">org.hibernate.dialect.MySQLDialect</p roperty><property name="hibernate.show_sql">true</property><mappingresource="com/liu/student/entity/StudentEntity.hbm.xml"/> </session-factory></hibernate-configuration>Struts.xml介绍如下:<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><constant name="struts.devMode"value="true"/><constant name="struts.enable.DynamicMethodInvocation" value="true"/><package name="stu"extends="struts-default"><action name="stu" class="com.liu.student.action.StudentAction"><resultname="studentList">/jsp/student/list.jsp</result><result name="updPage">/jsp/student/upd.jsp</result><result name="upd" type="redirect">stu!studentList.action</result></action></package></struts>。