打开APP
未登录
开通VIP,畅享免费电子书等14项超值服
开通VIP
首页
好书
留言交流
下载APP
联系客服
Struts Spring Hibernate整合
荷露叮咚
>《Java》
2008.03.12
关注
Struts+Spring+Hibernate
本次配置环境:Myeclipse5.
5
、MySQL5.
0
、Struts1.
2
、Spring2.
0
、Hibernate3.
1
一、建工程
略。。。。。。
二、要使用Struts、Spring、Hibernate必须导入必需的包
1
、Struts(和之前没区别)
2
、Spring
分别导入Spring
2.0
Core Libraries、Spring
2.0
Web Libraries
选择把*.jar Copy到工程/WebRoot/WEB-INF/lib下; 点击NEXT
选择applicationContext.xml的目录,/WebRoot/WEB-INF;点击finish
3
、Hibernate
在导入Hibernate时,当然先要配置DataSource咯,这里就不再说了
选择导入Hibernate全选上
选上复选框:Hibernate
3.1
Core......、Hibernate
3.1
Advanced......、Spring
2.0
ORM/DAO.......
同样选择把*.jar Copy到工程/WebRoot/WEB-INF/lib下; 点击NEXT
这里我们选择把hibernate交给spring去管理
选中单选按钮 Spring configuration file...... 点击NEXT
选择已存在的applicationContext.xml文件,
填写SessionFactory ID :sessionFactory 点击NEXT
这里我们需要填写Bean Id :dataSource
选择 DB Driver :选择刚才配置的DataSource 点击NEXT
这里不需要创建 SessionFactory Class 点击Finish
注意:查看applicationContext.xml的变化
三、映射VO、数据操作
首先工程的结构建好,比较简单的结构:
org.chenwj.dao
org.chenwj.struts
org.chenwj.struts.action
org.chenwj.struts.form
org.chenwj.vo
映射表userinfo创建持久类到org.chenwj.vo目录
在dao下创建数据库操作类 UserDAO 这里只是对数据库进去插入,代码如下:
private
SessionFactory sessionFactory;
public
SessionFactory getSessionFactory() {
return
sessionFactory;
}
public
void
setSessionFactory(SessionFactory sessionFactory) {
this
.sessionFactory = sessionFactory;
}
/* 用户注册 */
public
boolean
regist(Userinfo user) {
try
{
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
session.save(user);
tx.commit();
session.close();
return
true
;
}
catch
(Exception ex) {
ex.printStackTrace();
return
false
;
}
}
使用依赖注入,setter设值 sessionFactory
到此数据层已经完成
四、配置struts-config.xml
添加action、form、jsp 略……
首先在struts-config.xml添加一个插件
<plug-in
className=
"org.springframework.web.struts.ContextLoaderPlugIn"
>
<set-property property=
"contextConfigLocation"
value=
"/WEB-INF/applicationContext.xml"
/>
</plug-in>
为什么要添回这个插件呢?
因为在后面会在applicationContext.xml下配置action,让action交给spring
去管理,实现了struts的依赖注入机制
接下来添加cuntroller,这里你可以使用DelegatingActionProxy代理
<controller processorClass=
"org.springframework.web.struts.DelegatingRequestProcessor"
/>
Controller取代了struts的RequestProcessor,在定义action里,我们可以省略
type属性。(我个人比较喜欢用这个)下面让我们看配置好的struts-config.xml:
<struts-config>
<data-sources />
<form-beans>
<form-bean name=
"userForm"
type=
"org.chenwj.struts.form.UserForm"
/>
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings>
<action attribute=
"userForm"
input=
"/index.jsp"
name=
"userForm"
path=
"/user"
scope=
"request"
>
<forward name=
"success"
path=
"/success.jsp"
/>
<forward name=
"error"
path=
"/index.jsp"
/>
</action><!--type属性可不写-->
</action-mappings>
<controller processorClass=
"org.springframework.web.struts.DelegatingRequestProcessor"
/>
<message-resources
parameter=
"org.chenwj.struts.ApplicationResources"
/>
<plug-in
className=
"org.springframework.web.struts.ContextLoaderPlugIn"
>
<set-property property=
"contextConfigLocation"
value=
"/WEB-INF/applicationContext.xml"
/>
</plug-in>
</struts-config>
五、在applicationContext.xml配置action
这里我们先在 action类里添加一些业务逻辑,代码如下:
public
class
UserAction
extends
Action {
private
UserDAO userDao;
private
Userinfo user;
public
ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UserForm userForm = (UserForm) form;
//封装数据
user.setName(userForm.getName());
user.setPassword(userForm.getPassword());
if
(userDao.regist(user)){
return
mapping.findForward(
"success"
);
}
return
mapping.findForward(
"error"
);
}
public
Userinfo getUser() {
return
user;
}
public
void
setUser(Userinfo user) {
this
.user = user;
}
public
UserDAO getUserDao() {
return
userDao;
}
public
void
setUserDao(UserDAO userDao) {
this
.userDao = userDao;
}}
这里使用setter实现依赖注入了两个bean,接下来配置applicationContext.xml
<beans xmlns=
"略……"
>
<!—- 数据源 -->
<bean id=
"dataSource"
class
=
"org.apache.commons.dbcp.BasicDataSource"
>
<property name=
"driverClassName"
value=
"com.mysql.jdbc.Driver"
>
</property>
<property name=
"url"
value=
"jdbc:mysql://localhost:3306/demo"
></property>
<property name=
"username"
value=
"root"
></property>
<property name=
"password"
value=
"root"
></property>
</bean>
<!-- sessionFactory -->
<bean id=
"sessionFactory"
class
=
"org.springframework.orm.hibernate3.LocalSessionFactoryBean"
>
<property name=
"dataSource"
>
<ref bean=
"dataSource"
/>
</property>
<property name=
"hibernateProperties"
>
<props>
<prop key=
"hibernate.dialect"
>
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
<property name=
"mappingResources"
>
<list>
<value>org/chenwj/vo/Userinfo.hbm.xml</value>
</list>
</property>
</bean>
<!-- 数据库操作类 -->
<bean id=
"userDao"
class
=
"org.chenwj.dao.UserDAO"
>
<property name=
"sessionFactory"
>
<ref local=
"sessionFactory"
/>
</property>
</bean>
<!-- action需要注意:这里是name属性不是ID,同时要和struts-config.xml
对应的 action path属性值相同,斜线也是必需的,通过这个属性scope=
"prototype"
每次获取bean实例时都会产生新的实例,默认是单例-->
<bean name=
"/user"
class
=
"org.chenwj.struts.action.UserAction"
abstract
=
"false"
lazy-init=
"default"
autowire=
"default"
scope=
"prototype"
dependency-check=
"default"
>
<property name=
"userDao"
ref=
"userDao"
/>
<property name=
"user"
ref=
"user"
/>
</bean>
<bean id=
"user"
class
=
"org.chenwj.vo.Userinfo"
abstract
=
"false"
lazy-init=
"default"
autowire=
"default"
dependency-check=
"default"
>
</bean>
</beans>
到此所有的配置已经完成,测试:
HTTP Status
404
- Servlet action is not available
The requested resource (Servlet action is not available) is not available
这个错误是大部初学者整合 SSH 时都会遇到的问题
首先建议你使用测试类进行测试,这样我们可以很快找到错误所在的地方
public
static
void
main(String[] args) {
ApplicationContext context =
new
FileSystemXmlApplicationContext(
"/WebRoot/WEB-INF/applicationContext.xml"
);
UserDAO dao = (UserDAO)context.getBean(
"userDao"
);
Userinfo user =
new
Userinfo();
user.setName(
"aaa"
);
user.setPassword(
"bbb"
);
boolean
a = dao.regist(user);
if
(a){
System.out.println(
"OK"
);
}
}
如果这里没出错,那么请你好好检查你的配置文件,是否写错或少了些什么东东了
这里出的错误也跟使用的版本有关系,这里报的错一般都是说找不到XX类所报的异常
那么请检查lib下有没commons-pool-
1.2
.jar包,如没请导入,这个问题也有可能是包
之间的****,删除这个包hibernate-annotations.jar
六、.sql文件、.jsp文件
create table userinfo(
id
int
(
10
) not
null
auto_increment,
name varchar(
20
),
password varchar(
20
),
PRIMARY KEY (id))
<body>
<html:form action=
"/user"
>
name : <html:text property=
"name"
/><br/>
password : <html:password property=
"password"
/><br/>
<html:submit/><html:cancel/>
</html:form>
</body>
七、作者心声
上面省略了一些类的代码,当然也是不紧要的,请慢看、细看、多做,相信很容易就可以配置成功。如有必要也可以联系我,我这有Demo和视频教程。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报
。
打开APP,阅读全文并永久保存
查看更多类似文章
猜你喜欢
类似文章
【热】
打开小程序,算一算2024你的财运
MyEclipse Spring Hibernate整合开发 - liuxinglanyue - JavaEye技术网站
struts+spring +ibatis
yanghuw的专栏,第一个Spring程序
Struts Spring Hibernate整合笔记_TerrySpace
使用struts+spring+hibernate 组装web应用
图解SSH框架配置步骤
更多类似文章 >>
生活服务
热点新闻
留言交流
回顶部
联系我们
分享
收藏
点击这里,查看已保存的文章
导长图
关注
一键复制
下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!
联系客服
微信登录中...
请勿关闭此页面
先别划走!
送你5元优惠券,购买VIP限时立减!
5
元
优惠券
优惠券还有
10:00
过期
马上使用
×