Struts1+Spring2+Hibernate3图解入门教程五
此文是刘晓涛老师演示的Demo并布置为课后作业,由邓延同学整理而成,版权为刘晓涛与邓延共有,转载须保留出处!
修改生成的XML文件:
action-servlet.xml
:
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
beans
xmlns
=
"http://www.springframework.org/schema/beans"
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
=
"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"
>
<
bean
name
=
"/reg"
class
=
"com.dy114.struts.action.RegAction"
>
<
property
name
=
"regDAO"
>
<
ref
bean
=
"regDAO"
/>
</
property
>
</
bean
>
</
beans
>
修改Struts的配置文件struts-config.xml中的action type,将控制权交给Spring来管理:
将上面标注的类的全称填入type中:
修改Spring的配置文件,将Hibernate DAO对象的id属性修改为首字母小写的(默认为大写的):
⑻ 最后简单修改一下部分文件(参考代码如下):
RegAction.java
:
package
com.dy114.struts.action;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
org.apache.struts.action.Action;
import
org.apache.struts.action.ActionForm;
import
org.apache.struts.action.ActionForward;
import
org.apache.struts.action.ActionMapping;
import
org.apache.struts.action.DynaActionForm;
import
com.dy114.hibernate.dao.Reg;
import
com.dy114.hibernate.dao.RegDAO;
/**
*
MyEclipse
Struts
*
Creation
date:
07
-
06
-
2008
*
*
XDoclet
definition:
*
@struts.action
path="/reg"
name="regForm"
scope="request"
*
@struts.action
-
forward
name="success"
path="/success.jsp"
*
@struts.action
-
forward
name="failure"
path="/reg.jsp"
*/
public
class
RegAction
extends
Action {
RegDAO
regDAO
;
public
RegDAO getRegDAO() {
return
regDAO
;
}
public
void
setRegDAO( RegDAO regDAO ) {
this
.
regDAO
= regDAO;
}
/**
*
Method
execute
*
@param
mapping
*
@param
form
*
@param
request
*
@param
response
*
@return
ActionForward
*/
public
ActionForward execute( ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response ) {
DynaActionForm regForm = ( DynaActionForm ) form;
String username = ( String )regForm.get(
"username"
);
String password = ( String )regForm.get(
"password"
);
Reg reg =
new
Reg( username, password );
regDAO
.save( reg );
return
mapping.findForward(
"success"
);
}
}
index.jsp
:
<%@
page
language
=
"java"
pageEncoding
=
"UTF-8"
%>
<%
response.sendRedirect(
"reg.jsp"
);
%>
reg.jsp
:
<%@
page
language
=
"java"
pageEncoding
=
"UTF-8"
%>
<%@
taglib
uri
=
"http://struts.apache.org/tags-bean"
prefix
=
"bean"
%>
<%@
taglib
uri
=
"http://struts.apache.org/tags-html"
prefix
=
"html"
%>
<
html
>
<
head
>
<
title
>
JSP for DynaActionForm form
</
title
>
</
head
>
<
body
>
<
html:form
action
=
"/reg"
>
username :
<
html:text
property
=
"username"
/>
<
html:errors
property
=
"username"
/><
br
/>
password :
<
html:password
property
=
"password"
/>
<
html:errors
property
=
"password"
/><
br
/>
<
html:submit
/><
html:cancel
/>
</
html:form
>
</
body
>
</
html
>
success.jsp
:
<%@
page
language
=
"java"
pageEncoding
=
"UTF-8"
%>
<%@
taglib
uri
=
"http://struts.apache.org/tags-bean"
prefix
=
"bean"
%>
<%@
taglib
uri
=
"http://struts.apache.org/tags-html"
prefix
=
"html"
%>
<!
DOCTYPE
HTML
PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN"
>
<
html:html
lang
=
"true"
>
<
head
>
<
html:base
/>
<
title
>
success
</
title
>
</
head
>
<
body
>
Hello,
<
bean:write
name
=
"regForm"
property
=
"username"
/>
!!
</
body
>
</
html:html
>
⑼ 最后将项目部署到MyEclipse自带的Tomcat容器上,开启服务器,之后报错:
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/pool/impl
/GenericObjectPool
原因是工具MyEclipse在建立SessionFactory的时候,少加一个包
commons-pool-1.3.jar ,补上去问题解决。
在浏览器中输入
http://localhost:8080/SS2HProject,输入用户名和密码,点击提交(Submit),之后可以看到成功页面:
之后查看一下数据库,数据已经保存进去了:
整个项目到此就全部完成了。