`

Struts2+Hibernate+Spring框架搭建(三)

阅读更多
三:搭建Spring
1.添加Spring的Jar包



2.添加Struts2,Spring插件的Jar包



3.添加Oracle10g 数据库的Jar包



4.使用Spring来管理struts2的Action,DAO层,Service层
1)在原来web.xml基础之上添加Spring的监听器
 
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <filter>
     <filter-name>struts2</filter-name>
     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  
  <filter-mapping>
     <filter-name>struts2</filter-name>
     <url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <listener>
      <!--监听器在default情况下读取的是:/WEB-INF/applicationContext.xml -->
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
  <context-param>
      <param-name>contextConfigLocation</param-name>
        <!-- 
		<param-value>
			/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml
		</param-value>
		 -->
		<!-- 监听器启动后会读取classpath目录下面的beans.xml文件 -->
      <param-value>classpath:beans.xml</param-value>
  </context-param>
  
  
</web-app>


2)修改loginAction的内容
package com.wl.struts.action;

import com.opensymphony.xwork2.ActionSupport;
import com.wl.po.Student;
import com.wl.service.studentService;

@SuppressWarnings("serial")
public class loginAction extends ActionSupport {

	private studentService stuService;
	
	public studentService getStuService() {
		return stuService;
	}

	public void setStuService(studentService stuService) {
		this.stuService = stuService;
	}

	@Override
	public String execute() throws Exception {

		Student stu=new Student();
		stu.setId("10");
		stu.setStuName("Zhangsan");
		stu.setStuAge(29);
		stu.setStuGrade("A");
		stu.setStuNo("201017");
		stu.setStuSex("male");
		stuService.saveStudent(stu);
		return SUCCESS;
	}

}

3)在Src目录下新建bean.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"
       xmlns:contentx="http://www.springframework.org/schema/content"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/content
           http://www.springframework.org/schema/content/spring-content-2.5.xsd">

  <!-- configure the sessionFactory -->
  <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="configLocation">
        <value>classpath:hibernate.cfg.xml</value>
    </property>
  </bean>
  
  <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
      <property name="sessionFactory" ref="sessionFactory"></property>
  </bean>
  
  <!-- manager the dao -->
  <bean id="studentDao" class="com.wl.dao.impl.studentDaoImpl">
     <property name="sessionFactory" ref="sessionFactory"></property>
  </bean>
  
  <!-- manager the service  -->
  <bean id="studentService" class="com.wl.service.impl.studentServiceImpl">
     <property name="stuDao" ref="studentDao"></property>
  </bean>
  
  <!-- manager the action in struts2 -->
  <bean id="loginAction" class="com.wl.struts.action.loginAction" scope="prototype">
     <property name="stuService">
        <ref bean="studentService"/>
     </property>
  </bean>  
</beans>

4)这时部署项目到Tomcat,运行Tomcat,结果如下


点击“test Action”操作,报500错


说明未将studentService注入到loginAction中。

A:这个问题的原因是:loginAction没有真正的纳入Spring的管理当中
Spring的bean.xml配置文件的确对loginAction做了配置
  <!-- manager the action in struts2 -->
  <bean id="loginAction" class="com.wl.struts.action.loginAction" scope="prototype">
     <property name="stuService">
        <ref bean="studentService"/>
     </property>
  </bean> 

但是Struts.xml配置文件中
<package name="login" namespace="/" extends="struts-default">
       <action name="login" class="com.wl.struts.action.loginAction">
           <result name="success">/success.jsp</result>
           <result name="error">/error.jsp</result>
       </action>
   </package>

没有用到Spring管理的loginAction,而是用类名重新引用的。loginAction
B:解决这个问题的方法:
修改Struts.xml的配置信息:
<package name="login" namespace="/" extends="struts-default">
       <action name="login" class="loginAction">
           <result name="success">/success.jsp</result>
           <result name="error">/error.jsp</result>
       </action>
   </package>

将原来的class="com.wl.struts.action.loginAction" 替换为class="loginAction",其中的loginAction就是Spring中定义的id为loginAction的bean。
备注:
Spring对Struts的Action管理配置中不能忘记 scope="prototype"
默认情况下,Spring从bean工厂所取得的实例为Singleton(bean的singleton属性) Singleton: Spring容器只存在一个共享的bean实例,默认的配置。 Prototype: 每次对bean的请求都会创建一个新的bean实例;二者选择的原则:有状态的bean都使用Prototype作用域,而对无状态的bean则应该使用singleton作用域。
在ssh2 项目中,struts2的action交由spring管理的时候,spring默认是singleton的,而struts2的action显然是有状态的,所以必须显示设置为scope="prototype",prototype为原型模式,每次action请求过来都会创建一个action但是对那些Dao的实现类推介scope="singleton" ,因为这些类没有状态,用singleton只需维护一个实例,显然性能高一些。

5)重新部署项目,启动Tomcat后,点击“test Action”连接后控制条结果如下:


但是从数据库中查找数据,数据没有添加成功。
A: 问题原因:缺少对事务的管理,数据未持久化到数据库中
B:解决的方法:添加对事务的管理,在bean.xml文件中添加配置信息
  <!-- Transaction configuration Information -->
   <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
     <property name="sessionFactory" ref="sessionFactory"></property>
  </bean>
  
  <tx:advice id="txAdvice" transaction-manager="transactionManager">
      <tx:attributes>
          <tx:method name="*" propagation="REQUIRED" rollback-for="java.lang.Exception" />
      </tx:attributes>
  </tx:advice>
    <!-- 执行com.wl.service包及其子包下面的任何类的以Student结尾的任何方法 -->
    <aop:config>
      <aop:advisor pointcut="execution(* com.wl.service..*.*Student(..))" advice-ref="txAdvice" />
  </aop:config>

现在重新启动Tomcat后,点击“test Action”连接后,就会将数据持久化到数据库中。
  • 大小: 2.3 KB
  • 大小: 1005 Bytes
  • 大小: 1.2 KB
  • 大小: 9.7 KB
  • 大小: 6.8 KB
  • 大小: 684 Bytes
  • Spring_Jar.rar (4.4 MB)
  • 描述: 用到的Spring的Jar包
  • 下载次数: 129
  • Oracle-jar.rar (1.4 MB)
  • 描述: 用到的OracleJar包
  • 下载次数: 62
  • FirstSshProject_001.rar (16.2 KB)
  • 描述: Struts2+Hibernate+Spring框架搭建的整个工程(不包含Jar包)
  • 下载次数: 99
分享到:
评论
3 楼 seachen 2011-06-24  
OK了,我忘记加struts2-spring-plugin-2.1.8.1.jar了
2 楼 seachen 2011-06-24  
OK了,我忘记加struts2-spring-plugin-2.1.8.1.jar了
1 楼 seachen 2011-06-24  
将原来的class="com.wl.struts.action.loginAction" 替换为class="loginAction",其中的loginAction就是Spring中定义的id为loginAction的bean之后。
再启动tomcat ,
在控制台显示struts.xml配置文件出错。

Caused by: Action class [loginAction] not found - action - file:/D:/apache-tomcat-6.0.28/webapps/ssh/WEB-INF/classes/struts.xml:7:49
	at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.verifyAction(XmlConfigurationProvider.java:409)
	at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:354)
	at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:468)
	at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:264)
	at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111)
	at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:193)
	at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55)
	... 31 more

相关推荐

    Struts2+hibernate3.2+Spring2.0架构搭建

    ### Struts2+Hibernate3.2+Spring2.0架构搭建详解 #### 一、环境搭建与配置 在本教程中,我们将详细讲解如何搭建基于Struts2+Hibernate3.2+Spring2.0的软件架构。这个组合常被称为SSH(Struts-Spring-Hibernate)...

    Java Web整合开发实战:基于Struts 2+Hibernate+Spring(PDF)

    Java Web整合开发实战--基于Struts 2+Hibernate+Spring.pdf 1章 Web的工作机制 2章 搭建Java Web开发环境 3章 JSP及其相关技术 2篇 表现层框架Struts技术 4章 Struts快速上手 5章 解密Struts之核心文件 6章 ...

    struts2+hibernate+spring框架搭建

    1.struts2+hibernate+spring框架搭建 jar包和数据库都在里面 2.做了个简单的添加数据到数据库的例子,直接解压然后导入,部署就可运行 3.MVC模式,对扩展和维护都有好处 4.扩展的时候直接写配置文件就可以了,很...

    最新版本的Struts2+Spring4+Hibernate4框架整合

    整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6。 此外,还有:log4j、slf4j、junit4、ehcache等知识点。 项目...

    struts2.0+hibernate3.0+spring3.5框架搭建

    struts2.0+hibernate3.0+spring3.5框架搭建 通俗易懂,适合初学者;里面有struts2.0+hibernate3.0+spring3.5框架搭建的详细配置 详细:http://itba.taobao.com 如有不懂联系:QQ:294647378

    Struts2+Hibernate+Spring框架搭建(一)

    Struts2、Hibernate和Spring是Java Web开发中的三大框架,它们各自负责不同的职责,共同构建了一个强大的企业级应用架构。本篇文章将详细讲解如何利用这三个框架进行整合搭建,旨在为初学者提供一个清晰的入门指南。...

    java8+tomcat8+struts2.5+spring4.3+hibernate5.2框架搭建详细过程

    ### Java8 + Tomcat8 + Struts2.5 + Spring4.3 + Hibernate5.2 框架搭建详细过程 #### 一、环境配置与准备 在搭建一个基于Java8 + Tomcat8 + Struts2.5 + Spring4.3 + Hibernate5.2 的项目前,首先需要对开发环境...

    eclipse搭建(Struts2.5+Spring5.0+hibernate5.2)整合框架Demo实例

    本教程将详细介绍如何使用Eclipse IDE搭建一个基于Struts2.5、Spring5.0和Hibernate5.2的整合框架,提供一个可运行的Demo实例。这个组合是Java企业级开发中常见的技术栈,它们各自负责不同的职责:Struts2作为前端...

    Struts2+Hibernate5+Spring5.rar

    Struts2、Hibernate5和Spring5是Java Web开发中的三个重要框架,它们分别负责MVC模式中的控制层、持久化层和应用层管理。这个压缩包"Struts2+Hibernate5+Spring5.rar"显然是一个集成这三个框架的开发资源集合,帮助...

    Struts2+Spring+hibernate中对action的单元测试环境搭建[总结].pdf

    搭建 Struts2+Spring+Hibernate 框架中的 Action 单元测试环境需要解决三个主要问题:如何测试 Action?如何解决 JPA 中的 Lazy 机制?如何做用户 Session 管理?通过使用 StrutsSpringTestCase 和 junit4.jar,可以...

    Struts1.3+Spring4.x+Hibernate4.x框架整合实现对书籍的增删改查(含分页)

    Struts1.3、Spring4.x和Hibernate4.x是经典的Java Web开发框架组合,被称为SSH。这个项目展示了如何将这三个框架整合起来,实现一个完整的书籍管理应用,包括书籍的增加、删除、修改和查询功能,并且包含了分页展示...

    Struts1.2+Spring2.5+Hibernate3.2框架搭建(一)

    文档"Struts1.2+Spring2.5+Hibernate3.2框架搭建(周禄康).doc"和"Struts1.2+Spring2.5+Hibernate3.2框架搭建(原版)(周禄康).doc"可能包含了详细的步骤和示例代码,帮助读者理解如何实际操作。"Struts+...

    struts2+spring+hibernate+easyui管理框架

    Struts2+Spring+Hibernate+EasyUI 是一个经典的Java Web开发框架组合,广泛应用于企业级应用的构建。这个管理系统利用这些技术的特性,提供了一种高效、稳定且易于维护的解决方案。 **Struts2** 是一个强大的MVC...

    struts2+spring4+hibernate4工程搭建源码

    这个"struts2+spring4+hibernate4工程搭建源码"提供了使用这三个框架集成开发的示例代码,对于学习和理解它们的集成应用具有重要的参考价值。 Struts2是Apache基金会的一个开源项目,作为MVC框架,它主要用于处理...

    Maven项目ssh Struts2+hibernate+Spring+maven框架.zip

    - Spring MVC是Spring框架的一部分,可以替代Struts2作为MVC层,但在这个项目中,两者是并存的,协同工作。 4. **Maven**: - Maven是一个项目管理和综合工具,它管理项目的构建、报告和文档生成,以及依赖关系。...

    Myeclipse2017+Struts2+Hibernate4+Spring4+Oracle11的ssh框架搭建核心包.zip

    SSH框架是Java EE开发中广泛使用的三大开源框架——Struts2、Spring4和Hibernate4的组合,它们分别负责表现层、业务层和服务层的管理。本核心包是针对MyEclipse2017集成开发环境,配合Oracle11数据库进行项目开发的...

    Struts2+Hibernate+Spring3整合jar包

    这个"Struts2+Hibernate+Spring3整合jar包"包含了一系列必要的库文件,使得开发者能够快速地搭建一个集成了这三大框架的项目。以下是对这些框架及其整合的关键知识点的详细解释: 1. **Struts2**: - **Action和...

    Struts2.1.8+Hibernate3.3+Spring3.0环境搭建

    Struts2.1.8+Hibernate3.3+Spring3.0是经典的Java Web开发框架组合,也被称为SSH(Struts2、Spring、Hibernate)。这个环境的搭建涉及到多个步骤,涵盖了MVC(Model-View-Controller)框架、持久化框架和依赖注入...

Global site tag (gtag.js) - Google Analytics