- 浏览: 28864 次
- 性别:
- 来自: 上海
最新评论
集成struts,spring,hibernate时,对于初学者来说最大的麻烦就其繁琐的xml配置文件。现在三者都对基于注解的配置提供了良好的支持。在struts2中,使用convent plugin,得益于annotation和规约,配置过程得以大大减少。在spring2.5也可以使用@Autowired,进行注入,使用@Controller,@Service,@Repository注解,自动定义bean,还支持annotation风格的声明式事务支持,以及aspectJ类似的AOP。hibernate也可以使用JPA标准注解定义实体描述,避免使用mapping文件。
当然,对于annotation和xml风格的配置,谁更好,更多依赖个人兴趣。但使用annotation确实减少了很多配置工作量。本文采用annotation风格的配置,以TaskList为例子讲解struts2 spring hibernate的集成。项目文件见附件。
一:配置struts2。
首先在web.xml文件中配置filter Xml代码
1. <filter>
2. <filter-name>struts2</filter-name>
3. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 4. </filter> 5.
6. <filter-mapping>
7. <filter-name>struts2</filter-name> 8. <url-pattern>*.action</url-pattern> 9. </filter-mapping>
然后在classpath中创建struts.xml配置文件。 Xml代码
1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
3. "http://struts.apache.org/dtds/struts-2.1.dtd"> 4. <struts>
5. <constant name="struts.devMode" value="true" />
6. <constant name="struts.convention.default.parent.package" value="default-package" />
7. <constant name="struts.convention.package.locators" value="action" />
8. <package name="default-package" extends="convention-default"> 9.
10. <default-action-ref name="index" /> 11.
12. <action name="index" >
13. <result>/WEB-INF/content/index.jsp</result> 14. </action> 15.
16. </package> 17.</struts>
struts.devMode属性,配置启用调试,将有更多的错误信息输出,便于排错。struts.convention.default.parent.package属性,指定使用注解标注的控制器的默认包。可以在这个默认包中配置全局信息。
struts.convention.package.locators属性,为查找控制器包路径的关键字。如com.mycompany.action,com.mycompany.action.user,都会被struts2扫描。里面有继承至Action的类,或类名以Action结尾的类,都会做为Action处理。 <default-action-ref name="index" />指定了默认action,如果指定的action不存在则访问该action。
把struts2-spring-plugin-2.1.6.jar添加到classpath中,struts2会自动扫描struts-plugin.xml文件,该文件自动注册了
com.opensymphony.xwork2.ObjectFactory,完成和spring的集成。
二:配置spring
在web.xml中加入ContextLoaderListener,用以启动spring容器。用
contextConfigLocation指定spring配置文件路径,可以使用*通配符结尾。 Xml代码
1. <listener>
2. <listener-class>org.springframework.web.context.ContextLoaderListener
3. </listener-class> 4. </listener>
5. <context-param>
6. <param-name>contextConfigLocation</param-name>
7. <param-value>classpath:/applicationContext.xml</param-value>
8. </context-param>
配置applicationContext.xml Xml代码
1. <?xml version="1.0" encoding="UTF-8"?> 2. <beans> 3.
4. <context:component-scan base-package="persistence,service,action,aop"/> 5.
6. <aop:aspectj-autoproxy /> 7.
8. <tx:annotation-driven transaction-manager="transactionManager" /> 9.
10. <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" >
11. <property name="sessionFactory" ref="sessionFactory" />
12. </bean> 13.
14. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" >
15. <property name="configLocation" value="classpath:hibernate.cfg.xml" /> 16. </bean> 17.
18. <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate" >
19. <property name="sessionFactory" ref="sessionFactory" />
20. </bean> 21. 22.</beans>
<context:component-scan />指定Bean扫描的包,多个包逗号隔开,任何标注了@Component,@Controller,@Service,@Repository的类,都会被自动识别为bean。
<aop:aspectj-autoproxy />声明aspectj动态代理,启用注解驱动的aspectj配置。
<tx:annotation-driven />启用注解驱动的声明事务支持。
然后定义了sessionFactory和transactionManager,hibernateTemplate用来注入到Dao中,取代继承的方式使用spring对hibernate的集成支持。
三:hibernate配置
hibernate配置独立配置,方便修改。 Xml代码
1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 3. <hibernate-configuration> 4. <session-factory>
5. <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
6. <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
7. <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/sshdemo</property>
8. <property name="hibernate.connection.username">root</property>
9. <property name="hibernate.connection.password">root</property>
10. <property name="hibernate.hbm2ddl.auto">update</property>
11. <property name="hibernate.show_sql">true</property> 12. <property name="hibernate.format_sql">true</property> 13. <property name="hibernate.current_session_context_class">thread</property> 14.
15. <!-- 最大连接数 -->
16. <property name="hibernate.c3p0.max_size">20</property>
17. <!-- 最小连接数 -->
18. <property name="hibernate.c3p0.min_size">5</property> 19. <!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒 -->
20. <property name="hibernate.c3p0.timeout">120</property>
21. <!-- 最大的PreparedStatement的数量 -->
22. <property name="hibernate.c3p0.max_statements">100</property>
23. <!-- 每隔120秒检查连接池里的空闲连接 ,单位是秒--> 24. <property name="hibernate.c3p0.idle_test_period">120</property>
25. <!-- 当连接池里面的连接用完的时候,C3P0一下获取的新的连接数 -->
26. <property name="hibernate.c3p0.acquire_increment">2</property>
27. <!-- 每次都验证连接是否可用 -->
28. <property name="hibernate.c3p0.validate">true</property> 29.
30. <mapping class="domain.Task" /> 31. </session-factory>
32.</hibernate-configuration>
四:TaskList Demo
详细代码查看附件,附件一使用maven构建。进入目录,使用mvn jetty:run启动项目,记住创建sshdemo mysql数据库。附件二为Eclipse项目,包含所有依赖包。
当然,对于annotation和xml风格的配置,谁更好,更多依赖个人兴趣。但使用annotation确实减少了很多配置工作量。本文采用annotation风格的配置,以TaskList为例子讲解struts2 spring hibernate的集成。项目文件见附件。
一:配置struts2。
首先在web.xml文件中配置filter Xml代码
1. <filter>
2. <filter-name>struts2</filter-name>
3. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 4. </filter> 5.
6. <filter-mapping>
7. <filter-name>struts2</filter-name> 8. <url-pattern>*.action</url-pattern> 9. </filter-mapping>
然后在classpath中创建struts.xml配置文件。 Xml代码
1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
3. "http://struts.apache.org/dtds/struts-2.1.dtd"> 4. <struts>
5. <constant name="struts.devMode" value="true" />
6. <constant name="struts.convention.default.parent.package" value="default-package" />
7. <constant name="struts.convention.package.locators" value="action" />
8. <package name="default-package" extends="convention-default"> 9.
10. <default-action-ref name="index" /> 11.
12. <action name="index" >
13. <result>/WEB-INF/content/index.jsp</result> 14. </action> 15.
16. </package> 17.</struts>
struts.devMode属性,配置启用调试,将有更多的错误信息输出,便于排错。struts.convention.default.parent.package属性,指定使用注解标注的控制器的默认包。可以在这个默认包中配置全局信息。
struts.convention.package.locators属性,为查找控制器包路径的关键字。如com.mycompany.action,com.mycompany.action.user,都会被struts2扫描。里面有继承至Action的类,或类名以Action结尾的类,都会做为Action处理。 <default-action-ref name="index" />指定了默认action,如果指定的action不存在则访问该action。
把struts2-spring-plugin-2.1.6.jar添加到classpath中,struts2会自动扫描struts-plugin.xml文件,该文件自动注册了
com.opensymphony.xwork2.ObjectFactory,完成和spring的集成。
二:配置spring
在web.xml中加入ContextLoaderListener,用以启动spring容器。用
contextConfigLocation指定spring配置文件路径,可以使用*通配符结尾。 Xml代码
1. <listener>
2. <listener-class>org.springframework.web.context.ContextLoaderListener
3. </listener-class> 4. </listener>
5. <context-param>
6. <param-name>contextConfigLocation</param-name>
7. <param-value>classpath:/applicationContext.xml</param-value>
8. </context-param>
配置applicationContext.xml Xml代码
1. <?xml version="1.0" encoding="UTF-8"?> 2. <beans> 3.
4. <context:component-scan base-package="persistence,service,action,aop"/> 5.
6. <aop:aspectj-autoproxy /> 7.
8. <tx:annotation-driven transaction-manager="transactionManager" /> 9.
10. <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" >
11. <property name="sessionFactory" ref="sessionFactory" />
12. </bean> 13.
14. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" >
15. <property name="configLocation" value="classpath:hibernate.cfg.xml" /> 16. </bean> 17.
18. <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate" >
19. <property name="sessionFactory" ref="sessionFactory" />
20. </bean> 21. 22.</beans>
<context:component-scan />指定Bean扫描的包,多个包逗号隔开,任何标注了@Component,@Controller,@Service,@Repository的类,都会被自动识别为bean。
<aop:aspectj-autoproxy />声明aspectj动态代理,启用注解驱动的aspectj配置。
<tx:annotation-driven />启用注解驱动的声明事务支持。
然后定义了sessionFactory和transactionManager,hibernateTemplate用来注入到Dao中,取代继承的方式使用spring对hibernate的集成支持。
三:hibernate配置
hibernate配置独立配置,方便修改。 Xml代码
1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 3. <hibernate-configuration> 4. <session-factory>
5. <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
6. <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
7. <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/sshdemo</property>
8. <property name="hibernate.connection.username">root</property>
9. <property name="hibernate.connection.password">root</property>
10. <property name="hibernate.hbm2ddl.auto">update</property>
11. <property name="hibernate.show_sql">true</property> 12. <property name="hibernate.format_sql">true</property> 13. <property name="hibernate.current_session_context_class">thread</property> 14.
15. <!-- 最大连接数 -->
16. <property name="hibernate.c3p0.max_size">20</property>
17. <!-- 最小连接数 -->
18. <property name="hibernate.c3p0.min_size">5</property> 19. <!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒 -->
20. <property name="hibernate.c3p0.timeout">120</property>
21. <!-- 最大的PreparedStatement的数量 -->
22. <property name="hibernate.c3p0.max_statements">100</property>
23. <!-- 每隔120秒检查连接池里的空闲连接 ,单位是秒--> 24. <property name="hibernate.c3p0.idle_test_period">120</property>
25. <!-- 当连接池里面的连接用完的时候,C3P0一下获取的新的连接数 -->
26. <property name="hibernate.c3p0.acquire_increment">2</property>
27. <!-- 每次都验证连接是否可用 -->
28. <property name="hibernate.c3p0.validate">true</property> 29.
30. <mapping class="domain.Task" /> 31. </session-factory>
32.</hibernate-configuration>
四:TaskList Demo
详细代码查看附件,附件一使用maven构建。进入目录,使用mvn jetty:run启动项目,记住创建sshdemo mysql数据库。附件二为Eclipse项目,包含所有依赖包。
发表评论
-
RMI (Remote Method Invocation)远程方法的简单调用
2015-04-12 22:28 886RMI介绍:JNDI 就是一个注册表,服务端将服务对象放入到注 ... -
Sftp java类的应用(包括密钥连接)
2015-04-12 10:05 5175Sftp java类的应用(包括密钥连接) 使用:jsch- ... -
ssh java类的连接与远程命令执行(包括密钥连接)
2015-04-11 22:40 3417ssh java类的连接与远程命令执行(包括密钥连接) 首先 ... -
java Debug工具的应用
2015-04-11 22:34 368在代码片段添加一个不断点 Debug As 来执行 F5:进入 ... -
用java 获取当前系统信息的
2015-04-11 22:33 886public static void main(String[ ... -
java异常处理的(try catch或throws):
2015-04-11 22:31 7341. 出现了一个不是语法错误,而是不符合业务逻辑的情况,我们可 ... -
xml文件和java对象之间转换
2015-04-11 22:28 1836xml文件和java对象之间转换 例: package com ... -
Web应用中防止用户重复登录的简单实现方法 .
2014-11-29 11:06 1833Web应用中防止用户重复登录的简单实现方法 . 主要使用app ... -
java log4j示例
2014-05-27 09:45 424首先导入 --log4j.jar开发包 1.log4j.pr ...
相关推荐
关于ssh的注解配置,通过学习此文档,了解ssh的配置问题
ssh2注解配置,全部是注解配置,struts2和hibernate3和spring2.5全部是注解配置,,访问路径为http://localhost:8080/mytest/student/findAll.action
很全的ssh全注解环境搭建,各个配置文件,以及dao层,业务层,action控制层
spring+struts2+hibernate3,开发deom,很简洁,很齐全的代码功能
struts2+hibernate+spring很详细的全注解资源配置
简单的实现SSH零配置的功能,完全注解的形式,对与初学者来说是个很好的例子,技术点不多只是单词的陌生多查下就好了
对初学者很好的框架学习项目SSH 详细注解采用heibernate注解完成
SSH框架整合,全jpa注解真正的零配置。 struts2.3.8 spring3.2 hibernate4.1.9. 带有分页,全局异常,权限拦截器,session过滤等功能。 内有jar包。导入开发工具后部署既可跑起来。已做了简单的数据库操作功能。供...
eclipse开发工具,spring+hibernate+struts2,注解配置。
本项目是由一个简单的例子,贯穿SSH的集成。并且使用java的高级特性Annotation(注解),对框架进行零配置。
SSH 整合原代码 包括2种方式:注解&xml;配置 (已测试, 原创) 包含所需的lib
SSH整合,纯注解,包含事务,零配置,代码高度复用
SSH全注解零配置整合(官方最新包) struts2.3.16 spring4.0.2 hibernate4.3.4 jquery2.1.0
整合使用最新版本的三大框架(即Struts2...参考文档:(感谢下边的两位原创作者,另外我在结合两个优点的基础之上,把所有的配置换成了注解的配置方案。) http://blog.csdn.net/songanling/article/details/22454973 ...
上一个下载内容中的jar包不全,还有这三个jar包
在SSH中使用事物包括SSH的搭建和配置;事务的配置;注释详细。(完整项目)
SSH框架整合,全jpa注解真正的零配置。 struts2.3.8 spring3.2 hibernate4.1.9. 带有分页,全局异常,权限拦截器,session过滤等功能。 内有jar包。导入开发工具后部署既可跑起来。已做了简单的数据库操作功能。供...
SSH整合各个配置文件配置的方法,有注释,便于大伙理解。
ssh分页功能 前后台代码简洁易懂,所有代码都有注释,对session进行处理,分页不会被卡住,希望对学习ssh框架整合的童鞋有所帮助
在SSH中使用事物包括SSH的搭建和配置;事物的配置;注释详细 详细:http://itba.taobao.com