1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 | 附件:整合过程word文档。s2sh无注解整合.zip与参考资料http: //115.com/lb/5lbfh77s# Spring+Struts2+Hibernate整合 整合过程 1 、 配置srping启动监听器,使spring容器在web应用启动的时候启动,在web.xml中( 参考文档:H:\struts- 2.2 . 1.1 \docs\WW\spring-plugin.html): <listener> <listener- class > org.springframework.web.context.ContextLoaderListener </listener- class > </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:bean.xml</param-value> </context-param> 2 、 由Spring来管理Action a、注解方式 @Component (value= "testAction" ) @Scope (value= "prototype" ) public class TestAction extends ActionSupport { public String test(){ System.out.println( "action........" ); return this .SUCCESS; } } b、也可以通过xml方式,把Action当作普通的bean 配置spring文件的头部引用:在spring-framework- 2.5 . 6 /docs/reference/html-single 输入XML查找然后复制 <beans xmlns= "http://www.springframework.org/schema/beans" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xmlns:aop= "http://www.springframework.org/schema/aop" xmlns:tx= "http://www.springframework.org/schema/tx" xsi:schemaLocation=" http: //www.springframework.org/schema/beans http: //www.springframework.org/schema/beans/spring-beans-2.5.xsd http: //www.springframework.org/schema/tx http: //www.springframework.org/schema/tx/spring-tx-2.5.xsd http: //www.springframework.org/schema/aop http: //www.springframework.org/schema/aop/spring-aop-2.5.xsd"> </beans> ( 1 )注入service到action中(注意:scope= "prototype" 表示不为单例模式,即每次执行增加或者修改操作都新创建一个action;property中的name值是 class 类中的变量) <bean id= "userAction" class = "com.action.UserAction" scope= "prototype" > <property name= "userService" > <ref bean= "userService" /> </property> </bean> ( 2 )读src下的属性文件的bean配置 <bean class = "org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" > <property name= "locations" > <value>classpath:myserver.properties</value> </property> </bean> 3 、 由Spring来管理Hibernate ( 1 )配置数据源,连接数据库:value中的值在myserver.properties文件中定义,注意变量名要一致 <bean id= "myDataSource" class = "org.apache.commons.dbcp.BasicDataSource" > <property name= "driverClassName" ><value>${jdbc.driverClass}</value></property> <property name= "url" ><value>${jdbc.url}</value></property> <property name= "username" ><value>${jdbc.user}</value></property> <property name= "password" ><value>${jdbc.password}</value></property> </bean> ( 2 )配置SessionFactory <bean id= "mySessionFactory" class = "org.springframework.orm.hibernate3.LocalSessionFactoryBean" > <property name= "dataSource" ref= "myDataSource" /> <property name= "mappingResources" > <list> <value>User.hbm.xml</value> </list> </property> <property name= "hibernateProperties" > <props> <prop key= "hibernate.dialect" >${hibernate.dialect}</prop> <prop key= "hibernate.show_sql" >${hibernate.show_sql}</prop> </props> </property> </bean> ( 3 )配置事务管理 模板化hibernate持久层 <bean id= "myTemplate" class = "org.springframework.orm.hibernate3.HibernateTemplate" > <property name= "sessionFactory" ref= "mySessionFactory" /> </bean> <bean id= "myTxManager" class = "org.springframework.orm.hibernate3.HibernateTransactionManager" > <property name= "sessionFactory" > <ref bean= "mySessionFactory" /> </property> </bean> <tx:advice id= "txAdvice" transaction-manager= "myTxManager" > <tx:attributes> <tx:method name= "*" propagation= "REQUIRED" /> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut id= "myServiceMethods" expression= "execution(* com.service.*.*(..))" /> <aop:advisor advice-ref= "txAdvice" pointcut-ref= "myServiceMethods" /> </aop:config> 定义Dao父类模板,要为抽象的,把模板化的hibernate持久层注入到dao中 <bean id= "baseDao" abstract = "true" > <property name= "hibernateTemplate" > <ref bean= "myTemplate" /> </property> </bean> 把dao注入到service层 <bean id= "userDao" class = "com.dao.impl.UserDaoImpl" parent= "baseDao" ></bean> <bean id= "userService" parent= "myProxy" > <property name= "target" > <bean class = "com.service.impl.UserServiceImpl" > <property name= "userDao" > <ref bean= "userDao" /> </property> </bean> </property> </bean> <!-- 配置事务代理机制 --> <bean id= "myProxy" class = "org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract = "true" > <property name= "transactionManager" ref= "myTxManager" /> <property name= "transactionAttributes" > <props> <prop key= "*" >PROPAGATION_REQUIRED</prop> </props> </property> </bean> ( 4 )Properties中sqlserver与mysql的连接方式 #jdbc.driverClass= "com.microsoft.jdbc.sqlserver.SQLServerDriver" jdbc.driverClass=com.mysql.jdbc.Driver #jdbc.url= "jdbc:sqlserver://127.0.0.1:3306;DatabaseName=test" jdbc.url=jdbc:mysql: //localhost:3306/test jdbc.user=root jdbc.password=root #hibernate.dialect= "org.hibernate.dialect.SQLServerDialect" hibernate.dialect=org.hibernate.dialect.MySQL5Dialect hibernate.show_sql= true 4 、 Hibernate的*.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.model.User" table= "SHOPUSER" > <id name= "id" column= "USER_ID" > <generator class = "native" /> </id> <property name= "userName" type= "java.lang.String" column= "USER_NAME" /> </ class > </hibernate-mapping> 5 、 Struts2的配置 ( 1 )写struts2.xml文件: 复制:struts- 2.2 . 1.1 \apps\struts2-blank\web-inf\classes\struts.xml,粘贴在项目src下,内容如下 <?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> <constant name= "struts.enable.DynamicMethodInvocation" value= "true" /> <constant name= "struts.devMode" value= "true" /> < package name= "default" namespace= "/" extends = "struts-default" > <action name= "userAction" class = "com.action.UserAction" method= "query" > <result name= "list" >/user_list.jsp</result> </action> </ package > </struts> ( 2 )导入包:struts- 2.2 . 1.1 \apps\struts2-blank\web-inf\lib下的所有包,粘贴在lib下 ( 3 )配置web.xml文件: 找到struts- 2.2 . 1.1 \apps\struts2-blank\web-inf\web.xml,复制其中的<filter>……</filter-mapping>,粘贴在项目中的web.xml中,如: <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> |
http://lihong11.iteye.com/blog/1917650