说明:
依赖注入(Dependency Injection)还有一个名字,即控制反转(Inversion of Control,IoC)。
什么是控制反转呢?
控制反转就是由容器控制对象之间的关系,而非传统现实中,由程序代码直接操控。控制权由应用程序转移到了外部容器,这种控制权的转移即控制反转。
什么是依赖注入?
依赖注入将对象创建和对象链接的责任从对象自身转移到了IoC容器,由容器在运行期间将对象之间的依赖关系注入到对象之中。
依赖注入和控制反转表述的是同一个意思。
开发步骤
1.将struts2提供的spring插间struts2-spring-plugin-2.0.11.jar和spring的jar包放到lib目录下。编写web.xml,配置spring监听器
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.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.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
2.编写spring的配置文件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"
xsi:schemaLocation ="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id ="userDao" class ="org.sunxin.struts2.persistence.dao.UserDao"/>
</beans>
3.修改RegistrterAction.java
package org.sunxin.struts2.action;
import java.util.Date;
import org.sunxin.struts2.persistence.dao.UserDao;
import org.sunxin.struts2.persistence.entity.User;
import com.opensymphony.xwork2.ActionSupport;
public class RegisterAction extends ActionSupport
{
private static final long serialVersionUID = 3970199804617664569L;
private User user;
private UserDao userDao;
/**
* 在构造方法中初始化UserDao对象
*/
/*public RegisterAction()
{
userDao = new UserDao();
}*/
public void setUserDao(UserDao userDao)
{
this.userDao = userDao;
}
/**
* 请求register!default.action,调用doDefault方法
*/
@Override
public String doDefault() throws Exception
{
return INPUT;
}
/**
* 调用UserDao的register方法注册用户
*/
@Override
public String execute() throws Exception
{
user.setRegDate(new Date()); //注意不要忘了设置注册日期
userDao.register(user);
return SUCCESS;
}
/**
* 为user对象提供getter方法
* @return
*/
public User getUser()
{
return user;
}
/**
* 为user对象提供setter方法
* @param user
*/
public void setUser(User user)
{
this.user = user;
}
}
分享到:
相关推荐
Struts2是一个流行的Java web框架,它提供了许多功能来简化应用程序开发,包括依赖注入(DI)。在使用Struts2时,有时可能会遇到依赖注入boolean类型属性时出现错误的问题。这个问题通常与框架对boolean类型的处理...
6. **Struts2 Spring Integration**:如果项目使用Spring框架进行依赖注入,那么这个插件是必须的,它使得Struts2可以与Spring无缝集成,管理Action的生命周期。 7. **Commons Logging**:Struts2依赖于Apache ...
然而,许多开发者会将两者结合使用,以利用Spring的依赖注入(DI)和面向切面编程(AOP)功能来增强Struts2应用的可维护性和灵活性。 6. **Spring4.x**:这个标签表明了Struts2可能与Spring 4.x版本兼容,Spring 4.x...
这个“Struts2+spring依赖注入+Hibernate+Dwr”的例子,是一个综合性的Web应用程序示例,旨在展示这四个技术如何协同工作。 Struts2作为MVC(模型-视图-控制器)框架,主要负责处理HTTP请求,调度控制流程,并将...
9. **struts2-spring-plugin.jar**(如果使用Spring):如果应用集成了Spring框架,这个插件使得Struts2可以与Spring无缝协作,进行依赖注入和管理Action实例。 以上每个JAR包都扮演着重要的角色,共同构建了Struts...
Struts、Hibernate和Spring是Java开发中非常流行的三大框架,它们各自在Web应用程序的不同层面上发挥作用:Struts处理MVC模式中的Controller部分,Hibernate负责数据持久化,而Spring则提供了全面的依赖注入...
8. **Spring集成**:如果项目使用Spring框架,`struts2-spring-plugin.jar` 可以帮助整合Struts2与Spring的依赖注入和事务管理。 9. **测试支持**:Struts2提供了测试工具,如`struts2-test-plugin.jar`,方便进行...
通过上述对比可以看出,Struts2相比Struts1在很多方面进行了改进和优化,尤其是在灵活性、可测试性以及对现代Web开发的支持上有着显著的优势。尽管如此,在某些特定的应用场景下,Struts1可能仍然有其适用之处。选择...
- **Struts2与Spring集成(struts2-spring-plugin)**:允许开发者使用Spring管理Action和其它依赖,实现依赖注入,提高代码的可测试性和解耦。 - **Struts2与i18n(internationalization)**:为多语言支持提供便利,...
5. **依赖注入**:Struts2支持依赖注入,可以方便地管理组件之间的依赖关系,提高代码的可测试性和可维护性。 6. **集成其他框架**:Struts2可以很容易地与其他流行框架(如Spring、Hibernate)进行集成,形成一个...
8. **Spring Framework**:虽然不是必须的,但很多项目会将Struts 2与Spring框架集成,实现依赖注入和事务管理。 9. **Tiles**:一个布局框架,可以帮助组织和复用页面结构,提高应用的可维护性。 在`lib`目录下的...
7. **Spring整合**:如果项目中使用了Spring框架,`struts2-spring-plugin.jar`可以帮助无缝集成,实现依赖注入和事务管理。 8. **Action的生命周期**:一个典型的Struts2 Action实例会经历创建、初始化、执行、...
6. **依赖注入测试**:Struts2支持依赖注入(DI),测试时应确保依赖项被正确地注入到Action类或其他组件中。 在使用Struts2单元测试jar包时,开发者可以利用JUnit等测试框架,结合Mockito、PowerMock等工具来编写...
10. **插件系统**:Struts2的插件机制使得扩展和定制变得容易,比如Spring插件可以实现依赖注入,i18n插件处理国际化问题。 11. **开发工具集成**:Eclipse、IntelliJ IDEA等IDE都有Struts2的插件,可以帮助开发者...
Struts2框架依赖于多个库,包括核心库、依赖注入、异常处理、国际化、插件支持等多个方面。这些库由不同的jar包提供,例如: 1. **Struts2 Core**: 这个jar包包含了Struts2框架的核心组件,如Action、Result、...
7. **依赖注入**:Struts2支持依赖注入(DI),可以通过注解或XML配置将服务注入到Action中,简化代码结构。 8. **国际化(i18n)**:Struts2提供对多语言的支持,可以在资源文件中定义不同语言的文本,方便应用的...
8. **依赖注入(Dependency Injection, DI)**:Struts2支持Spring的DI机制,可以方便地管理和注入Action类所需的依赖对象。 9. **异常处理**:Struts2提供了一套全面的异常处理机制,通过配置`...
7. **依赖注入(DI)**:Struts2支持依赖注入,使得对象之间的依赖关系可以通过配置文件进行管理,而不是硬编码。这样可以使代码更易于测试和维护。 8. **插件系统**:Struts2有丰富的插件支持,例如Struts2-...
而 Struts2 Action 可以通过依赖注入进行初始化和测试,提高了测试的便利性。 5. **输入数据的处理**: - Struts1 使用 ActionForm 来捕获用户输入,ActionForm 必须继承基类,有时会造成额外的类定义。Struts2 则...
这两个框架都是Java Web开发中的关键组件,Struts2负责控制层逻辑,Spring则提供了全面的依赖注入(DI)和面向切面编程(AOP)功能,以及对数据访问层的支持。 1. **Struts2框架**:Struts2是一个开源的MVC框架,...