求一个简单的struts+sping+hibernate整合的demo~

t840101 2008-07-10 02:08:57
小弟我一直是做C/S的,现在想向B/S方向发展,对于开源的一些框架不是很熟,求一个简单的struts+sping+hibernate整合的demo,自己可以研究一下,数据库最好是SQL SERVER....谢谢啦~~~
...全文
285 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
phon_oy 2008-07-12
  • 打赏
  • 举报
回复
我的整合心得
以下是针对myeclipse的ide的

1.先建立连接,开发阶段用的jdbc连接,开发完毕后,换成数据库连接池,使用c3p0,proxool,不要用dbcp了,hibernate3.0对它已经不是很兼容了。

2.先添加hibernate包,不要hibernate自己生成的sessionFactory,在spring的applicationContext.xm中添加会更加方便,生成映射类,不需要它生成的dao,自己手动写database's crud 的dao接口。

3.添加spring的包,不用在添加spring的时候生成sessionFactory,在applicationContext.xm中添加dataSource数据源,在添加sessionFactory,到此可以删除,你的Hibernate.cfg.xml了,然后就是编写你的业务层和服务层了,因为spring是依赖注射的,在dao的目录下编写对database的crud的接口,在dao.hibernate的目录下去实现在dao的目录的接口,在service目录中编写对database的crud的接口,在service.impl中编写在service目录的接口,服务层的类并不直接操作数据库,而是通过调用到层去操作,然后在applicationContext中添加bean的形式把你编写的接口和类添加进来。

4,添加struts的包,在web层中去调用服务层操作数据库,在struts-config.xml中设置action类用spring来代理,这需要在struts-config.xml中添加插件,

<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="ContextConfigLocation"
value="/WEB-INF/action-servlet.xml" />
</plug-in>

并且将Action改为type="org.springframework.web.struts.DelegatingActionProxy",在WEB-INF下建立一个spring的配置文件: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">

</beans>

如果用到struts的表单验证,还需在struts-config.xml文件里添加一个插件

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/org/apache/struts/validator/validator-rules.xml,/WEB-INF/validations.xml" />
</plug-in>

并且在WEB-INF下新建validations.xml文件格式如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd">
<form-validation>

<global>
<constant>
<constant-name>phone</constant-name>
<constant-value>^\d{8}\d*$</constant-value>
</constant>

</global>
<formset>
<form name="systemUserForm">
<field property="userName" depends="required">
<msg name="required"
key="systemUSer.addSystemUser.userName" />
</field>
<field property="userPwd" depends="required">
<msg name="required"
key="systemUSer.addSystemUser.userPwd" />
</field>
<field property="userPwdChk" depends="required">
<msg name="required"
key="systemUSer.addSystemUser.userPwdChk" />
</field>
<field property="userPhone"
depends="required,mask">
<msg name="required" key="systemUSer.addSystemUser.userPhone" />
<msg name="mask" key="errors.phone" />
<arg name="mask" key="systemUSer.addSystemUser.display.length" position="1"/>
<arg name="required" key="systemUSer.addSystemUser.display.userPhone" position="0"/>
<arg name="mask" key="systemUSer.addSystemUser.display.userPhone" position="0"/>
<var>
<var-name>mask</var-name>
<var-value>${phone}</var-value>
</var>

</field>
<field property="userEmail" depends="required,email">
<msg name="required"
key="systemUSer.addSystemUser.userEmail" />
<msg name="email" key="errors.email"/>
<arg name="email" key="systemUSer.addSystemUser.display.userEmail" position="0"/>
</field>
</form>
<form name="loginForm">
<field property="userName" depends="required">
<msg name="required" key="systemUSer.login.userName" />
</field>
<field property="userPwd" depends="required">
<msg name="required" key="systemUSer.login.userPwd" />
</field>

</form>
<form name="incomeExpTypeForm">
<field property="incExpTyp" depends="required">
<msg name="required"
key="systemUSer.incomeExpensesType.incExpTyp" />
</field>

</form>
<form name="incomeExpensesForm">
<field property="incExpTypId" depends="required">
<msg name="required" key="IncomeExpenses.incExpTypId" />
</field>
<field property="incExpDesc" depends="required">
<msg name="required" key="IncomeExpenses.incExpDesc" />
</field>

<field property="incExpMn" depends="required,double">
<msg name="required" key="IncomeExpenses.incExpMn" />
</field>
</form>
</formset>

</form-validation>

好了整合完毕了,但是还有运行还有问题,因为还缺少一些包apache的commons-pool-1.3.jar,Spring 2.0 Web Libraries包,还有spring和Hibernate的asm包冲突,我的做法是删除Hibernate包中的asm.jar,asm-attrs.jar。

5.在web.xml中添加spring自带的监听器,主要目的是让application知道spring的存在,格式如下:

<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>

如果项目大,表多的话,我建议spring的配置文件可以分为好几个,可以在dao层,service层,web层分开建立

那样的话spring的配置文件会更加清晰,applicationContext_XXX.xml只要在web.xml中添加参数就可以了。

6.在web.xml中添加spring自带的字符过滤器,省的自己再去写一个了,格式如下:

<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
奇点交易 2008-07-11
  • 打赏
  • 举报
回复
Appfuse生成的网站架构...极赞,可以迅速开始开发的框架.
zhfeir 2008-07-10
  • 打赏
  • 举报
回复
给你放哪里啊!!
whetu 2008-07-10
  • 打赏
  • 举报
回复
本人的资源,不要资源分。
http://download.csdn.net/source/470141

67,537

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧