Struts1.3+Spring4.0+Hibernate4.3.5框架搭建
2014-09-26 19:47
411 查看
大部分实验室的项目采用的框架版本太旧了。这次,我尝试着自己搭建一个最简单的SSH架构,所用的版本都是现在最新的。搭建之前,看了一下别人的介绍的流程,照着做还是运行不通,可能是版本的问题吧。
毫无疑问,首先是下载相关的包了,当然去官网了,没的说,挑最新的下。不过那样就带了一个问题:包冲突。因为每个框架要想独立运行,都会包含一些必要的工具组件,如common-log.jar、log4j.jar,要是不同的框架所包括的工具组件的版本不一样,自然就冲突了。我已经把SSH架构所需的包上传上去,全部是官网下载,解决了包冲突问题。下载地址:http://download.csdn.net/detail/u013361010/7979729
首先要在项目配置文件中配置好struts和Spring,以便在项目启动的时候加载这些框架的配置文件,如下所示:
其中Controller标签的配置就是将Struts交给Spring管理,看下Spring的配置文件applicationContext.xml就知道:
这里要提醒注意就是hibernate.current_session_context_class这个属性的配置,再不能像单独运行Hibernate一样配置成thread。
OK,到此为止SSH的配置已经完了,下面讲几点此版本的SSH和低版本的区别。首先最大的区别是session的获取,不再是通过sessionFactory.openSession()方法。这个方法为每次操作创建一个session,而且不会自动关闭,必须手动进行进行关闭,相当麻烦。在此版本中会话的获取采用session.getCurrentSession(),比如当一个线程创建了一个session,而且还没有关闭,那么其他线程要使用session时,就会使用该线程的session,而不会再单独创建。另外这样获取的session在使用完之后会自动关闭,开发者不用担心。另外,此版的SSH必须注解配置和XML配值都采用org.springframework.orm.hibernate4.LocalSessionFactoryBean类,不做区分。最后最重要的一点是,此版本的SSH中必须做事务管理,否则回报:org.hibernate.HibernateException:
No Session found for current thread。异常。具体事务管理我会在其他的博文中详细介绍。
毫无疑问,首先是下载相关的包了,当然去官网了,没的说,挑最新的下。不过那样就带了一个问题:包冲突。因为每个框架要想独立运行,都会包含一些必要的工具组件,如common-log.jar、log4j.jar,要是不同的框架所包括的工具组件的版本不一样,自然就冲突了。我已经把SSH架构所需的包上传上去,全部是官网下载,解决了包冲突问题。下载地址:http://download.csdn.net/detail/u013361010/7979729
首先要在项目配置文件中配置好struts和Spring,以便在项目启动的时候加载这些框架的配置文件,如下所示:
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>熟悉SSH架构的人都应该知道,其中Struts和Hibernate是相互独立的框架,他们被Spring这个框架容器统一管理着,也就是所要将Struts和Hibernate交给Spring管理。为把Struts交给Spring管理,如下图所示:
<action-mapping <action path="/modify" input="/index.jsp" name="addForm" type="org.news.action.AddAction" > <forward name="success" path="/index.jsp"/> </action> </action-mappings> <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"></controller>
其中Controller标签的配置就是将Struts交给Spring管理,看下Spring的配置文件applicationContext.xml就知道:
<bean name="/modify" class="org.news.action.AddAction"> <property name="service" ref="service"/> </bean>这样,当浏览器要求请求“/modify.do”时,所要执行的的Action便是“
<span style="font-size:24px;">org.news.action.AddAction”而且其属性service会被自动注入。</span>再看Spring是如何管理Hibernate的
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="jdbcUrl" value="jdbc:sqlserver://localhost:2996;databaseName=newsDemo"/> <property name="driverClass" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/> <property name="user" value="sa"/> <property name="password" value="sa"/> </bean> <!-- 数据源配置end --> <!-- sessionFatory配置 begin --> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="annotatedClasses"> <list> <value>org.news.form.LoginForm</value> <value>org.news.form.AddForm</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop> </props> </property> </bean>
这里要提醒注意就是hibernate.current_session_context_class这个属性的配置,再不能像单独运行Hibernate一样配置成thread。
OK,到此为止SSH的配置已经完了,下面讲几点此版本的SSH和低版本的区别。首先最大的区别是session的获取,不再是通过sessionFactory.openSession()方法。这个方法为每次操作创建一个session,而且不会自动关闭,必须手动进行进行关闭,相当麻烦。在此版本中会话的获取采用session.getCurrentSession(),比如当一个线程创建了一个session,而且还没有关闭,那么其他线程要使用session时,就会使用该线程的session,而不会再单独创建。另外这样获取的session在使用完之后会自动关闭,开发者不用担心。另外,此版的SSH必须注解配置和XML配值都采用org.springframework.orm.hibernate4.LocalSessionFactoryBean类,不做区分。最后最重要的一点是,此版本的SSH中必须做事务管理,否则回报:org.hibernate.HibernateException:
No Session found for current thread。异常。具体事务管理我会在其他的博文中详细介绍。
相关文章推荐
- struts2.1.8+spring2.5.6+hibernate3.2框架搭建错误
- Struts + Spring + Hibernate基础框架搭建
- Struts2——SSH (Spring+Struts+Hibernate)框架搭建之配置文件序列一
- Struts+Spring+Hibernate框架搭建
- Hibernate hbm——SSH (Spring+Struts+Hibernate)框架搭建之配置文件序列五
- struts1.3 整合 spring 2.5 MVC 框架(一)
- struts1.2 + spring2.5 + hibernate3.2框架搭建一之工程总览
- Spring beans——SSH (Spring+Struts+Hibernate)框架搭建之配置文件序列三
- Struts Spring Hibernate 框架搭建并测试完毕,小结
- Struts Spring Ibatis整合框架搭建配置文档
- hibernate 4.1.2 + struts 2.3.1.2 + spring 3.1.1 详细介绍手动搭建框架的视频或文档架包的作用
- 详细解读Spring2.5 +Struts1.3 框架(使用Spring声明式事物管理和springjjdbc模板)
- spring 3.1.2+struts 2.3.2 + mybatis 3.1.1框架搭建(三)
- Spring——SSH (Spring+Struts+Hibernate)框架搭建之配置文件序列二
- Struts2.0.14+spring2.5+hibernate3.2 框架 搭建
- spring 3.1.2+struts 2.3.2 + mybatis 3.1.1框架搭建(一)
- struts1.3 整合 spring 2.5 MVC 框架
- 关于搭建spring struts ibatis框架
- Hibernate hbm 外键关联——SSH (Spring+Struts+Hibernate)框架搭建之配置文件序列六
- Hibernate——SSH (Spring+Struts+Hibernate)框架搭建之配置文件序列四