SSH——Struts2中引入Spring

一,为什么要使用Spring

          1,装配JavaBean

                  摒弃老旧的new方式,spring为我们提供了一种机制,使得创建javaBean以及设置javaBean属性的工作可以通过配置文件以及Spring框架本身来完成。这样,当某些地方需要改变时,修改Spring的配置文件即可。这个过程实际上就是Spring框架通过读取相应的配置文件中的内容,并根据这些配置自动装在javaBean对象,设置JavaBean的属性。

           2,整合第三方框架。

                     spring的设计理念就是尽可能整合第三方框架,使得这些被整合的技术更容易使用,更易于维护,从而大大降低程序开发的难度。

 二,struts2 中引入Spring

           0,引入spring的jar包

                                                

                    com.springsource.org.apache.log4j-1.2.15.jar

                    spring-beans-3.2.0.RELEASE.jar

                    spring-context-3.2.0.RELEASE.jar

                   spring-core-3.2.0.RELEASE.jar

                   spring-expression-3.2.0.RELEASE.jar

                   spring-web-3.2.0.RELEASE.jar

                   struts2-spring-plugin-2.3.15.3.jar

           1,配置spring监听器

                                在我们的web.xml中,加入如下配置:

                

    <!-- spring 监听器的配置 -->
   <listener>
    <listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
  </listener>

             

            ContextLoaderListener 这个类负责启动Web容器时,自动装配ApplicationContext的配置信息。

          2,applicationContext.xml 配置

                    我们在WEB-INF目录下面,建立applicationContext.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:context="http://www.springframework.org/schema/context"
	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.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context.xsd
	http://www.springframework.org/schema/aop
	http://www.springframework.org/schema/aop/spring-aop.xsd
	http://www.springframework.org/schema/tx
	http://www.springframework.org/schema/tx/spring-tx.xsd">

<!-- 装配AdditionCalc类 -->
<bean id="calculator" class="net.blogjava.nokiaguy.models.AdditionCalc">
	<property name="message">
		<value>{0}+{1}={2}</value>
	</property>
</bean>

</beans>

         我们的action类如下:

       

package net.blogjava.nokiaguy.models;

public class SpringCalcAction {

	private int operand1;
	private int operand2;
	//calculator属性由struts2插件自动装配,在spring配置文件中需要有同名的<bean>元素
	private Calculator calculator;

	public int getOperand1() {
		return operand1;
	}
	public void setOperand1(int operand1) {
		this.operand1 = operand1;
	}
	public int getOperand2() {
		return operand2;
	}
	public void setOperand2(int operand2) {
		this.operand2 = operand2;
	}
	public Calculator getCalculator() {
		return calculator;
	}
	public void setCalculator(Calculator calculator) {
		this.calculator = calculator;
	}

	public String execute(){
		//只需要调用Calculator对象的calc方法,在切换业务模型时候,不需要修改如下代码
		int value=calculator.calc(operand1, operand2);
		return "success";
	}
}

           在上面的Action类中,存在类型为Calculator 的属性calculator。这个类型是一个父类。在spring的配置文件中,我们为这个属性配置了装配类,当调用Action的时候,自动将子类实例装配到父类对象中。注意,spring中,bean的id要跟action中的属性名称保持一致。

时间: 2024-09-08 14:05:32

SSH——Struts2中引入Spring的相关文章

在SSH框架中使用Spring的好处(转)

  以下是我总结下今天笔试中SSh中的总结: 在SSH框架中spring充当了管理容器的角色.我们都知道Hibernate用来做持久层,因为它将JDBC做了一个良好的封装,程序员在与数据库进行交互时可以不用书写大量的SQL语句.Struts是用来做应用层的,他它负责调用业务逻辑serivce层.所以SSH框架的流程大致是:Jsp页面----Struts------Service(业务逻辑处理类)---Hibernate(左到右)    struts负责控制Service(业务逻辑处理类),从而控

在struts2中集成Spring

Spring的官方定义是:一个轻量级的IoC和Aop容器框架,它使用了一种叫做依赖注入的技术.所谓依赖注入,就是指将创建对象以及协议依赖对象之间合作的责任从对象自身中转移到"工厂"中去,这个"工厂"通常由IoC容器提供. Struts2与Spring的集成要用到Spring插件包,这个包是同Struts2一起发布的.Spring插件是通过覆盖(override)Struts2的ObjectFactory来增强核心框架对象的创建.当创建一个对象的时候,它会用Strut

struts2.0-ssh struts2中 action执行两次

问题描述 ssh struts2中 action执行两次 1 排除重复提交的可能 2 点击页面中的超链接,action 执行两次:但在地址栏中输出地址,action只执行了一次(这个让我很震惊!) 3 执行的action 方法名为add(), 不存在get默认执行的情况 解决方案 struts2 action执行两次的原因struts2 中action执行两次的问题struts2 json插件执行原理 action执行两次 解决方案二: 这个肯定是你代码出错了,你应该把使用的界面代码贴出来 解决

在SSH(struts2.21+hibernate3.3.2+spring2.5)整合中遇到一个问题:

问题描述 在SSH(struts2.21+hibernate3.3.2+spring2.5)整合中遇到一个问题:菜鸟求解~~知道的大师们给个解决方案把~~~目的:在容器启动后,自动从数据库中读出数据然后在WEB的application范围内写入数据 ,这样在index.jsp,里只要直接读取application数据就行了,不每次都过action.(都是一些一般不变的数据.且数据不多)试验:1.在把Action设为单例后,容器启动后会自动运行,不能访问spring里的bean,及在构造方法里打印

ssh整合-SSH框架中Spring的依赖注入问题

问题描述 SSH框架中Spring的依赖注入问题 我做了一个struts+hibernate3+spring的整合,我applicationContext .xml文件中已经配置了 <bean id=""loginAction"" class=""com.web.LoginAction""><property name=""userDao"" ref="&qu

java中的spring配置文件中引入context命名空间却不能使用context标签

问题描述 java中的spring配置文件中引入context命名空间却不能使用context标签 myeclipse中spring配置文件的 命名空间 为什么导入了相对应的命名空间但是 相对应的标题 却不能使用 求大神 解决方案 http://zhidao.baidu.com/link?url=CYTl2LDpKwI4j4Dgi2W7vI8OltUewUkwn1A8dW_7-LDXMNPJzc2ieqDzv33rIzF4W2s2Ss5B7SeSsn_UPoGXYqCmZb-kcdotYkwhe

myeclipse中的web项目引入spring框架的文件夹结构?

问题描述 myeclipse中的web项目引入spring框架的文件夹结构? 最近作毕设,使用的是spring框架,文件夹的结构大概是.dao,.dao.Impl,db,form,service service.Impl,socket等,我想知道这个结构是固定的么,这些包的意义是什么, 请大神赐教. 解决方案 不是固定的,一般有entity ,dao ,service ,controller 四层.你上面的几个意识应该是数据层接口,数据实现类,数据库链接,form就不知道了,业务层接口,业务层实

SSH——Struts2引入配置

                         MVC架构与传统的WebForm从代码上感觉,主要还是请求被服务器收后怎么个处理流程的问题.对于传统WebForm,客户端访问时候,输入的是页面的地址,请求通过处理管道,然后请求对象被交给页面的后台代码生成类处理(.NET),处理的结果以标签形式被绑定到页面上:或者是访问页面之后,在页面加载中加入AJAX代码,异步获取数据,将数据绑定到页面:这两种方式都是以页面为中心的:出现MVC之后,服务端代码的关注点就不在页面上了.客户端请求的时候,请求的是

SSH框架网上商城项目第24战之Struts2中处理多个Model请求的方法_java

1. 问题的提出 Struts2中如果实现了ModelDriven<model>接口就可以将传来的参数注入到model中了,就可以在Action中使用该model,但是如果现在有两个model都需要在同一个Action中使用该咋整呢?比如上一节我们完成了在线支付功能,但是支付完成了还没结束,我们需要接收从第三方那边反馈回来的信息,比如成功支付后,我们需要给付款方发送邮件和短信等.所以我们还需要在payAction中获取从第三方传过来的参数,由于从第三方传过来的参数与我们传过去的参数是不同的,所