您的位置:首页 > 编程语言 > Java开发

整合Spring2.5+Struts2.1+Hibernate3.2

2008-10-25 23:49 441 查看
在MyEclipse中新建一个项目,基于j2ee5,按以下步骤:

1、类库:

Struts:Commons-logging-x.x.x.jar、freemarker-x.x.x.jar、ognl-x.x.x.jar、xwork-x.x.x.jar、struts-2-core-x.x.x.jar、struts2-spring-plugin-x.x.x.jar

Hibernate:Hibernate3.2 Core Libraries、Hibernate 3.2 Annotations & Entity Manager(删除asm.jar、asm-attrs.jar、cglib-x.x.x.jar)

Spring:Spring 2.5 Aop Libraries、 Spring 2.5 Core Libraries、 Spring 2.5 Persistence Core Libraries、 Spring 2.5 Web Libraries

Database pool: commons-pool.jar、commons-dbcp.jar 或者 c3p0-x.x.x.jar

Database driver: mysql-connector-java-x.x.x.jar

2、web.xml

添加以下内容:

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>lazyLoadingFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>lazyLoadingFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter>
<filter-name>characterEncoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>characterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>actionContextCleanUp</filter-name>
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
</filter>
<filter-mapping>
<filter-name>actionContextCleanUp</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<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>

3、applicationContext.xml及jdbc.properties

在/WEB-INF下新建applicationContext.xml及jdbc.properties,内容如下:

<?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.5.xsd">
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="/WEB-INF/jdbc.properties"/>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mappingDirectoryLocations">
<list>
<value>classpath:/com/test/domain/hbm/</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.generate_statistics">true</prop>
</props>
</property>
</bean>
</beans>

jdbc.properties的内容如下:

jdbc.driverClassName=org.gjt.mm.mysql.Driver
jdbc.url=jdbc:mysql://localhost:3306/testssh
jdbc.username=root
jdbc.password=

4、src下添加login4j.properties、messageResource.properties、struts.properties、struts.xml

其中struts.properties的内容可以从struts2-core-x.x.x.jar的org.apache.struts2下的default.properties下拷过来,修改以下几项

struts.locale=zh_CN

struts.devMode = true #开发时高为true可以在调试时打印出更多信息,部署时设为false

struts.custom.i18n.resources=messageResource #国际化文件为messageResource.properties

其他采用默认即可

struts.xml的模板如下:(可直接从struts2-core-x.x.x.jar根目录下拷struts-default.xml的文档声明)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="testssh" namespace="/" extends="struts-default">
<action name="login" class="login">
<result name="success">/success.jsp</result>
<result name="input">/index.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>

log4j.properties内容如下:(只定义了输出Debug或以上级别信息到控制台)

#1区
#### Use two appenders, one to log to console, another to log to a file
log4j.rootLogger = debug, stdout
#2区
#Print only messages of priority WARN or higher for your category
#log4j.logger.TestLog4j= , R
#log4j.logger.TestLog4j.TestLog4j2=WARN
#3区
#### First appender writes to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
#4区
#### Second appender writes to a file
#log4j.appender.R=org.apache.log4j.RollingFileAppender
#log4j.appender.R.File=F://nepalon//classes//TestLog4j//example.log
# Control the maximum log file size
#log4j.appender.R.MaxFileSize=100KB
# Archive log files (one backup file here)
#log4j.appender.R.MaxBackupIndex=1
#log4j.appender.R.layout=org.apache.log4j.PatternLayout
#log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss}:%p %t %c - %m%n

5、src下的com.test.domain.hbm存放hibernate的表对象映射文件,如User.hbm.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.test.domain.User" table="test" catalog="testssh">
<id name="id" type="java.lang.Integer">
<column name="Id"/>
<generator class="increment"/>
</id>

<property name="username" type="java.lang.String">
<column name="name"/>
</property>

<property name="password">
<column name="password"/>
</property>
</class>
</hibernate-mapping>

类的Dao操作继承Spring的HibernateDaoSupport,并使用getHibernateTemplate()方法取得HibernateTemplate对象进行各种增删改查操作。

6、Struts2的Xwork验证框架配置文件,如LoginAction-validate.xml(ActionName-validation.xml),与相应Action放在同个目录下,在Jsp页面的<s:form />标签加上"validate=true"进行前台较验。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="name">
<field-validator type="requiredstring">
<message key="login.username.empty"/>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<message key="login.password.empty"/>
</field-validator>
</field>
</validators>

Ps:struts2的Xwork验证框架有些时候可以用有些时候又不行,感觉有些奇怪,就是无论输入什么值,都提示输入为空,而且在IE下前台无法自动生成正确的Js脚本。不知道是我配置有错还是Struts本身的问题,网上又找不到类似的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: