`

struts2和spring整合

阅读更多

一、需要的JAR文件SpringStruts2框架本身需要的JAR文件以及他所依JAR文件,比如commons-logging.jar等等,另外需要Struts2布包中的struts2-spring-plugin-x.xx.jar

 

二、整合:

分两:配置web.xml+整合struts.xmlapplicationContext.xml.

(1)web.xml中增加WebApplicationContext的相配置,

以下两配置方式本是一的。

1.         Servlet 2.3及以上版本可以使用听器,相配置如下:

<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>

如果spring配置文件被命名applicationContext.xml,并且放在WEB-INF下,不需要配置<context-param>,因ContextLoaderListenerWEB-INF找名applicationContext.xml的文件。

若要放于WEB-INF/classes/,或若存在多个Spring配置文件,需要上面的配置,且在<param-value>中依次列出,之以逗号隔

2.         Servlet 2.3以下版本由于不支持<listener>,需要配置<servlet>,格式如下:

<context-param>

              <param-name>contextConfigLocation</param-name>

              <param-value>/WEB-INF/classes/applicationContext.xml</param-value>

</context-param>

<servlet>

              <servlet-name>contextLoaderServlet</servlet-name>

              <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>

              <load-on-startup>1</load-on-startup>

</servlet>

由于Servlet配置只是了在容器启动时能启ContextLoaderServlet使其工作,而不需要引用Servlet,所以不需要配置<servlet-mapping>

 

(2)web.xml中完成加WebApplicationContext之后,接下来就可以做到SpringStruts2整合:就是将业务类具体映射放到spring中。

整合有两方法,分叙述如下:

1.         第一种实现方法:

        1)        struts.xml中,指定<action>class属性Spring配置文件中相beanid或者name。示例如下:

<action name=”LoginAction” class=”LoginAction”>

                     <result name=”success”>/index.jsp</result>

</action>

2)        Struts业务逻辑控制器映射声明定applicationContext.xml文件中。注意,业务逻辑控制器配置scope=”prototype”
示例如下:

<bean id=”LoginAction” class=”yaso.struts.action.LoginAction”>

                     <property name=”loginDao” ref=”LoginDao”/>

</bean>

2.         第二种实现方法:

与第一种实现方法相同,只是第一方式,是手注入依赖对象,里是采用autoWire来自注入依赖对象。

如下:

struts.xml中(同上):

<action name=”LoginAction” class=”LoginAction”>
   <result name=”success”>/index.jsp</result>
</action>

applicationContext.xml中:

<bean id=”LoginAction” class=”yaso.struts.action.LoginAction” scope="prototype" autoWire="byName">

 

情况下,插件使用by name的方式装配,可以通增加Struts2常量来修改匹配方式:置方式struts.objectFactory.spring.autoWire = typeName的装配参数如下:

a) name:等价于Spring配置中的autowire=”byName”是缺

b) type:等价于Spring配置中的autowire=”byType”

c)auto:等价于Spring配置中的autowire=”autodetect”

d)constructor:等价于Spring配置中的autowire=” constructor”

四、如果原先在Struts2中使用了多个object factory需要通Struts2常量式指定object factory,方式如下:struts.objectFactory = spring;如果没有使用多个object factory可以省略。

五、可以通过设增加Struts2常量来指定是否使用Spring自身的类缓存机制。可以定的值为truefalse,默认为true置方式struts.objectFactory.spring.useClassCache = false

六、至此,完成了两方式的整合。比较这整合方式,其本是一的。不同之在于,使用第二装配的方式,由于没有在Spring中配置业务逻辑控制器,所以需要其配置一些AOP的内容就很难实现了。

 

Spring Autowire装配

用中,我常常使用<ref>标签为JavaBean注入它依象。但是于一个大型的系个操作将会耗大量的源,我不得不花大量的时间和精力用于建和维护中的<ref>标签

Spring提供了一个自装配的机制,在定Bean<bean>标签有一个autowire属性,我可以通指定它来容器受管 JavaBean注入依赖对象。

 

<bean>autowire属性有如下六个取,他明如下:
1
No:即不启用自装配。Autowire
2
byName:通属性的名字的方式JavaBean象并其注入。比如说类Computer有个属性printer,指定其 autowire属性byName后,Spring IoC容器会在配置文件中id/name属性printerbean,然后使用Seter方法其注入。
3
byType:通属性的JavaBean象并其注入。比如Computer有个属性printerPrinter,那,指定其autowire属性byType后,Spring IoC容器会Class属性Printerbean,使用Seter方法其注入。
4 constructor:通byType,也是通过类找依赖对象。与byType的区在于它不是使用Seter方法注入,而是使用构造子注入。
5
autodetect:在byTypeconstructor选择注入方式。
6
default:由上级标签<beans>default-autowire属性确定。

注意:在配置bean<bean>标签Autowire属性的比其上级标签高,即是,如果在上级标签中定default- autowire属性byName,而在<bean>中定义为byTypeSpring IoC容器会先使用<bean>标签的配置。

下面通一个例子来明如何在用中使用自装配(工程代码见例程3.2)。新建一个java工程,其添加上Spring开发能力后,建一个ioc.test包,再分别创电脑类Computer)、主机Host)和示器Dispaly),为电脑类添加Host型的属性hostDisplay型的属性display,再添加一个run方法,让电脑可以运行一起来。属性代如下:

1package ioc.test;
2
3
/** *//**
4 * @author zhangyong
5*/

6public
class
Computer {
7        
8        
private
Host host;
9        
private
Display display;
10        
//电脑运行方法

11        
public void run(){
12                System.out.println(
"你好,我是电脑,正在运行!"
);
13                System.out.print(
"    "+host.run()+","
);
14                System.out.println(display.run());
15        }
16
//GeterSeter方法,省略

17}
18


1package ioc.test;
2
3public
class Host {
4        
public
String run(){
5                
return "我是主机,正在运行!"
;
6        }
7}
8


1package ioc.test;
2
3public
class
Display {
4        
public
String run(){
5                
return "我是示器,正在运行!"
;
6        }
7}
8

 

下面便是修改Spring的配置文件,IoC容器电脑装配主机示器了。分配置两个beanhostdisplay。再配置一个名computer1beanautowire属性设为byName,同理配置computer1computer3autowire属性分别设为byTypedefault,最后<beans>标签default-autowire属性autodetect。至此,配置工作已完成,可以看到,我并没有式的computer bean它注入依赖对hostdisplay配置代如下:

 

1<?xml version="1.0" encoding="UTF-8"?>
2<beans        default-autowire="autodetect"
>
3        <bean id=
"computer1" class="ioc.test.Computer" autowire="byName"
></bean>
4        <bean id=
"computer2" class="ioc.test.Computer" autowire="byType"
></bean>
5        <bean id=
"computer3" class="ioc.test.Computer" autowire="default"
></bean>
6        
7        <bean id=
"host" class="ioc.test.Host"
></bean>
8        <bean id=
"display" class="ioc.test.Display"
></bean>        
9</beans>
10

 

 

在可以建立一个测试类测试一下Spring候真的装配好了我需要的bean

1package ioc.test;
2
3
//import省略

4public
class TestMain {
5
6        
public static void
main(String[] args) {
7                ApplicationContext ac =
new
ClassPathXmlApplicationContext(
8                                
"applicationContext.xml"
);
9                
//byName

10                Computer computer1 = (Computer)ac.getBean(
"computer1");
11                System.out.println(
"autowire=\"byName\":"
);
12                computer1.run();
13                
14                
//byType

15                Computer computer2 = (Computer)ac.getBean(
"computer2");
16                System.out.println(
"autowire=\"byType\":"
);
17                computer2.run();
18                
19                
//default

20                Computer computer3 = (Computer)ac.getBean(
"computer3");                
21                System.out.println(
"autowire=\"default\":"
);
22                computer3.run();
23        }
24}
25

 

分享到:
评论

相关推荐

    Struts2和Spring整合

    Struts2和Spring是两个非常流行的Java开源框架,它们分别在MVC...以上就是关于“Struts2和Spring整合”的主要知识点,通过这样的整合,开发者可以充分利用两个框架的优点,实现更高效、更灵活的Java Web应用开发。

    struts2和spring整合包

    **Struts2和Spring整合** 整合Struts2和Spring的主要目标是利用两者的优点,创建一个更强大的MVC应用。整合步骤通常包括: 1. **配置Spring**:创建Spring的ApplicationContext配置文件,定义Bean及其依赖。 2. **...

    struts2和spring整合的例子

    Struts2 和 Spring 整合是为了在 Java Web 开发中结合两个强大的框架,提供更高效、灵活的应用程序架构。Struts2 是一个基于 MVC(Model-View-Controller)设计模式的开源 MVC 框架,它负责处理用户请求并驱动业务...

    整合struts2和spring

    将Struts2和Spring整合可以充分利用各自的优势,实现更加灵活、高效的应用开发。 整合Struts2和Spring主要涉及以下几个关键步骤: 1. **添加依赖**:首先,需要在项目的构建配置文件(如Maven的pom.xml或Gradle的...

    struts2和Spring整合需要的jar包

    下面将详细介绍整合Struts2和Spring所需的关键知识点。 首先,我们需要理解整合的目的。Struts2提供了强大的Action层处理,而Spring则擅长于业务逻辑管理和数据访问。整合这两者,我们可以将Struts2的动作控制与...

    struts2和spring和Hibernate整合的jar包

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自解决应用程序的不同问题,而将这三者整合在一起可以构建高效、灵活的企业级应用。Struts2作为MVC(Model-View-Controller)框架,负责处理用户请求...

    Struts2+Spring整合所需jar包

    下面我们将详细介绍Struts2和Spring整合所需的核心jar包及其作用。 1. **Struts2框架**: - **struts2-core.jar**:Struts2的核心库,包含了Action、Interceptor、Result等核心组件。 - **struts2-convention-...

    struts2与spring2的整合

    整合Struts2和Spring2的主要目标是将Spring的DI功能引入到Struts2的Action类中,使得Action类的依赖可以在Spring容器中被管理。这样,Action类不再需要自行创建依赖对象,而是通过Spring来获取,增强了代码的可维护...

    struts2.spring包

    总的来说,"struts2.spring" 包是实现 Struts2 和 Spring 整合的关键,它包含的 jar 文件能够让我们在享受 Struts2 的 MVC 简洁性和 Spring 的 DI、AOP 功能的同时,降低代码复杂度,提高开发效率。在实际项目中,...

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

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

    struts2-spring-plugin-2.3.4.jar

    Struts2-Spring-Plugin-2.3.4.jar 是一个专门为 Struts 2 框架和 Spring 框架整合而设计的插件,主要用于处理 Struts 2 和 Spring 之间的集成问题。在Java Web开发中,这两个框架经常一起使用,Spring 提供了依赖...

    Struts2+Spring框架集成实例

    3. **Struts2与Spring集成**:将Struts2和Spring整合可以实现更高效的控制流管理和业务逻辑处理。通常,我们会在Spring中定义Bean,然后在Struts2的Action类中通过@Autowired注解注入这些Bean,从而实现业务逻辑的...

    struts2.2.3集成spring时需要添加的jar包

    struts2.2.3集成spring时需要添加的jar包,struts2-spring-plugin-2.2.3.jar

    struts2和spring3注解整合问题

    1. **Struts2和Spring3的整合原理** - **Struts2**:主要负责处理HTTP请求,通过Action映射到业务逻辑,返回结果视图。Struts2支持基于XML的配置和注解方式定义Action。 - **Spring3**:提供了强大的DI和AOP功能,...

    Struts2整合Spring、JPA

    Struts2整合Spring和JPA是企业级Java应用开发中常见的技术组合,它们分别负责不同的职责:Struts2作为一款成熟的MVC框架,主要用于处理Web层的请求与响应;Spring作为一个全面的轻量级框架,提供了依赖注入(DI)和...

    struts2整合Spring和hibernate案例

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自在应用程序的不同层面发挥着重要作用。Struts2作为MVC(模型-视图-控制器)框架,负责处理请求和展示视图;Spring是一个全面的后端解决方案,提供...

    Struts2与Spring2框架整合实例

    7. **SSTest**:这个文件可能是项目的主要测试类或测试目录,包含了对整合后的Struts2和Spring2框架进行验证的代码。测试通常包括Action类的各个方法,以及Spring服务的调用。 通过以上知识点,我们可以理解Struts2...

    搭建SSH框架需要引入的Struts2包(log4j,spring-web,struts2-spring-plugin)

    对于Struts2和Spring的配置,我们需要在`struts.xml`和`spring-context.xml`文件中进行相应的设置,例如定义Action类、配置Spring Bean以及指定Struts2与Spring的整合方式。同时,确保web.xml文件中配置了...

Global site tag (gtag.js) - Google Analytics