`
forchenyun
  • 浏览: 312678 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

spring+struts的集成

    博客分类:
  • Java
阅读更多

第一种集成方案

原理:在Action中取得BeanFactory对象,然后通过BeanFactory获取业务逻辑对象

缺点:产生了依赖,spring的类在action中产生了依赖查找。(注意和依赖注入的区别(前者主动))。

1springstruts依赖库配置

* 配置struts

--拷贝struts类库和jstl类库

--修改web.xml文件来配置ActionServlet

--提供struts-config.xml文件

--提供国际化资源文件

* 配置spring

--拷贝spring类库

--提供spring配置文件

2、在strutsAction中调用如下代码取得BeanFactory

BeanFactory factory = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());

使用listener配置beanfactory,将其初始化交给servlet,使其维持在ServletContext中,节省资源。(Listener初始化早于ServletWeblogic8除外))

<context-param>

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

<param-value>classpath*:applicationContext-*.xml</param-value>

</context-param>

<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

3、通过BeanFactory取得业务对象,调用业务逻辑方法

补充:(Struts1.x相关并和Spring集成)

扩展学习:

l Jbossjar包加载顺序(根据字母),因此可能使得有些包无法加载。

l 使用高级模板创建的jsp文件,由于有

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

------------

<base href="<%=basePath%>" />

因此,jsp中的目录都会从根目录下查找。

l Servlet Listener

ListenerServlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。当增加一个HttpSession时,就激发sessionCreated(HttpSessionEvent se)方法,这样就可以给在线人数加1。常用的监听接口有以下几个:

ServletContextAttributeListener监听对ServletContext属性的操作,比如增加、删除、修改属性。

ServletContextListener监听ServletContext。当创建ServletContext时,激发contextInitialized(ServletContextEvent sce)方法;当销毁ServletContext时,激发contextDestroyed(ServletContextEvent sce)方法。

HttpSessionListener监听HttpSession的操作。当创建一个Session时,激发session Created(HttpSessionEvent se)方法;当销毁一个Session时,激发sessionDestroyed (HttpSessionEvent se)方法。

HttpSessionAttributeListener监听HttpSession中的属性的操作。当在Session增加一个属性时,激发attributeAdded(HttpSessionBindingEvent se) 方法;当在Session删除一个属性时,激发attributeRemoved(HttpSessionBindingEvent se)方法;当在Session属性被重新设置时,激发attributeReplaced(HttpSessionBindingEvent se) 方法。

第二种集成方案

原理:将业务逻辑对象通过spring注入到Action中,从而避免了在Action类中的直接代码查询

(客户端请求---->代理action--->取得beanFactory--->getBean(..)创建action示例--->执行exctute方法)

1springstruts依赖库配置

* 配置struts

--拷贝struts类库和jstl类库

--修改web.xml文件来配置ActionServlet

--提供struts-config.xml文件

--提供国际化资源文件

* 配置spring

--拷贝spring类库

--提供spring配置文件

2、因为Action需要调用业务逻辑方法,所以需要在Action中提供setter方法,让spring将业务逻辑对象注入过来

3、在struts-config.xml文件中配置Action

* <action>标签中的type属性需要修改为

org.springframework.web.struts.DelegatingActionProxy

DelegatingActionProxy是一个Action,主要作用是取得BeanFactory,然后根据<action>中的path属性值

IoC容器中取得本次请求对应的Action

4、在spring配置文件中需要定义strutsAction,如:

<bean name="/login" class="com.bjsxt.usermgr.actions.LoginAction" scope="prototype">

<property name="userManager" ref="userManager"/>

</bean>

* 必须使用name属性,name属性值必须和struts-config.xml文件中<action>标签的path属性值一致

* 必须注入业务逻辑对象

* 建议将scope设置为prototype,这样就避免了struts Action的线程安全问题

分享到:
评论

相关推荐

    intellij环境下maven项目spring+struts集成空模板

    为了方便大家开发,特意制作了intellij环境下maven项目spring+struts集成空模板。直接导入intellij就可以用,模板下有个简单的小例子。对于学习spring+struts集成、以及希望快速开发的人来说都是不错的资源

    spring+struts集成学习笔记和项目源码

    在提供的"spring+struts集成学习笔记和项目源码"中,你将有机会深入理解这些概念,通过实际操作来学习如何将Spring的优秀特性与Struts的高效处理机制结合起来,构建出高效稳定的Web应用。源码分析和实践操作是加深...

    基于注解的Spring+Struts2+Mybatis+Maven项目

    【基于注解的Spring+Struts2+Mybatis+Maven项目详解】 在现代Web开发中,Spring、Struts2、Mybatis和Maven是四个非常重要的组件,它们各自负责不同的职责,共同构建了一个高效、灵活且易于维护的Java Web应用。这个...

    图书管理系统spring+struts+hibernate

    《图书管理系统spring+struts+hibernate》是一款基于Java技术栈开发的图书管理软件,其核心框架包括Spring、...对于学习和理解Java Web开发,特别是Spring、Struts和Hibernate的集成应用,这是一个很好的实践案例。

    Spring+Struts2+hibernate+Redis整合

    通过Action类和拦截器,可以实现与Spring的无缝集成,同时也可以利用Spring的缓存功能,将频繁访问的数据存储在Redis中。 3. **Hibernate框架**:Hibernate是Java领域的一个对象关系映射(ORM)框架,它简化了数据库...

    ssh框架整合详细步骤(spring+struts2+hibernate)

    **Step10:Struts2与Spring的集成** - 在`struts.xml`中,将Action的Class属性修改为Spring的Bean名称,利用Spring的IOC特性实现Action的实例化和依赖注入。 ##### 第三部分:Hibernate与Spring进行整合 **Step11...

    CXF2.1.3+spring3.0+struts2.3.4

    【标题】"CXF2.1.3+spring3.0+struts2.3.4" 描述了集成这三大框架实现Web服务的场景。CXF是一个开源的服务框架,它允许开发人员创建和消费各种Web服务。Spring是Java企业级应用的核心框架,提供了依赖注入和面向切面...

    Jpa+Spring+Struts集成步骤详解

    下面,我们将详细介绍如何进行Jpa、Spring和Struts的集成。 1. 集成JPA环境步骤: JPA是Java标准的ORM(对象关系映射)规范,它提供了一种在Java应用程序中操作数据库的方式。首先,我们需要在项目中引入JPA的依赖...

    spring+struts+ibatis

    此外,还需要设置好数据源、事务管理器以及各框架之间的集成点,如使用Spring的DelegatingFilterProxy实现Struts2的过滤器配置。 总的来说,"spring+struts+ibatis"是一个成熟的Java Web开发解决方案,它提供了良好...

    spring +struts + hibernate 例子

    Spring、Struts和Hibernate是Java开发中非常经典的三大框架,它们分别在不同的层面上解决了Web应用中的各种问题。Spring作为一款全面的后端框架,提供了依赖注入、AOP(面向切面编程)、事务管理等功能;Struts则...

    spring+struts2+mybatis实例

    综上所述,这个实例项目展示了如何在Java Web环境中集成Spring、Struts2和MyBatis框架,通过Struts2的拦截器实现特定业务逻辑,利用Log4j进行日志记录,以及Spring如何管理整个应用程序的生命周期和数据访问。...

    Spring+Struts2+JPA

    **Spring+Struts2+JPA 整合详解** 在Java Web开发中,Spring、Struts2和JPA是三个非常重要的框架。Spring作为一个全面的轻量级框架,提供了依赖注入(DI)和面向切面编程(AOP)等功能;Struts2是一个强大的MVC框架...

    Spring+Struts2+MyBatis完整框架

    Struts2与Spring的集成使得我们可以利用Spring的IoC容器管理Struts2中的Action类,进一步降低了耦合度。 MyBatis是一个持久层框架,它简化了SQL操作,将SQL语句与Java代码分离,提供了映射框架,使得开发者可以直接...

    hibernate+spring+struts一个简单例子

    Spring还包含许多模块,如Spring JDBC、Spring ORM(支持Hibernate等ORM工具)、Spring MVC等,可以方便地集成其他框架。 3. **Struts**:是基于MVC(Model-View-Controller)设计模式的Web应用框架,主要用于处理...

    spring+struts1+hibernate+jbpm实例

    它可以定义、执行和监控复杂的业务流程,并且与Spring和其他Java框架有很好的集成。在这个实例中,jbpm-demo可能包含了一个具体的业务流程示例,展示了如何使用JBPM来定义和执行一个流程,比如员工请假审批流程。 ...

    Spring+struts+hibernate经典注册

    Spring、Struts和Hibernate是Java开发中的三大框架,它们各自负责不同的职责,组合起来可以构建出功能强大且架构清晰的企业级应用。在这个“Spring+Struts+Hibernate经典注册”项目中,我们将深入探讨这三个框架如何...

    自己的spring+struts2+mybatis Demo

    标题 "自己的spring+struts2+mybatis Demo" 暗示了这是一个使用Spring、Struts2和MyBatis三个框架构建的Web应用程序示例。这个项目可能是为了教学或者实践目的,展示了如何将这三个流行的技术集成在一起以创建一个...

    Spring+Struts2+iBatis简要说明

    Spring还提供了与iBatis的集成,使得事务管理和DAO层的数据库操作得以统一管理。 Struts2是MVC模式的具体实现,主要处理HTTP请求和响应,控制业务逻辑的流转。通过`struts-config-XXX.xml`配置文件,开发者可以定义...

    Spring+Struts2+Hibernate三大框架开发校园精品课程网源代码

    此外,Spring还提供了与Hibernate的集成,简化了数据访问层的开发。 2. Struts2框架:Struts2是一款基于MVC(Model-View-Controller)设计模式的Web框架,用于处理HTTP请求并将其转发到相应的业务逻辑。在本项目中...

    spring+struts2+mybatis整合

    5. **集成MyBatis与Spring**:使用Spring的SqlSessionTemplate或SqlSessionDaoSupport来使MyBatis与Spring容器集成,这样可以从Spring管理的Bean中直接调用MyBatis的Mapper接口。 6. **编写业务逻辑**:在Spring...

Global site tag (gtag.js) - Google Analytics