`

Struts2与Spring整合

阅读更多
【先引入struts2、spring相关的jar】
首先需要在web.xml文件中做如下配置:
<context-param>
    	<param-name>contextConfigLocation</param-name>
    	<param-value>/WEB-INF/applicationContext*.xml,classpath*:applicationContext*.xml</param-value>
  </context-param>
  
  <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
  <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>

比较简单,作用就是引入struts2与spring

下面我们来写一个登陆用的Action,代码如下:
public class LoginAction {

	private ILoginService loginService;
	private String userName;
	private String password;

	public String execute(){
		
		if(loginService.login(userName, password))
			return Action.SUCCESS;
		
		return Action.INPUT;
	}

        // setter and getter methods...
}

Struts2中的action已经不像Struts1.x中那样必须要继承一个Action了,这样比较简单,更像一个POJO了,而且可以看到,原来Struts1.x 处理函数中servlet相关的api已经消失不见了,这样我们就可以脱离web容器来对其进行相关的单元测试了,看上去爽了不少吧...

上面的action中我们调用了ILoginService 的login方法,该接口的定义如下:
public interface ILoginService {

	boolean login(String userName, String password);

}


他的实现也比较简单,我们简单的来判断用户名与密码是否时我们所给定的字符串,如果是,返回true,否则,返回false。通过接口,我们完全可以屏蔽掉底层的实现,这样我们可以快速的搭建好项目的框架,以后我们如果需要将login方法中的逻辑进行真正业务上的处理,对前台调用的地方来说都是完全透明的,该方法简单实现如下:
public class LoginService implements ILoginService {

	/* (non-Javadoc)
	 * @see org.darkness.struts2.service.ILoginService#login(java.lang.String, java.lang.String)
	 */
	public boolean login(String userName, String password) {

		if ("darkness".equals(userName) && "sky".equals(password)) {
			return true;
		}

		return false;
	}
}


接下来我们需要在项目的src目录下面新建一个struts.xml,代码如下:
<struts>
	<package name="struts2" extends="struts-default">
		<action name="login" class="loginAction">
			<result name="input">/login.jsp</result>
			<result name="success">/welcome.jsp</result>
		</action>
	</package>
</struts>

他就是将我们刚才定义的一个action配置到了struts文件当中,这样,LoginAction的生命周期就交由struts来进行管理了。注意到这个配置文件中的class="loginAction",这个action怎么不是一个class类了?别急,看到下面就可以知道,原来我们将这个loginAction的创建交由spring去管理了。下面来看看我们的spring文件中的配置:
<beans>
	<bean id="loginService"
		class="org.darkness.struts2.service.LoginService" />

	<bean id="loginAction"
		class="org.darkness.struts2.action.LoginAction" scope="prototype">
		<property name="loginService" ref="loginService" />
	</bean>
	
</beans>

该配置比较简单,我就不做详细说明了,需要大家注意的一点就是,loginAction Bean中的scope="prototype",该配置用来告诉spring,每访问一次这个类,你就给我新创建一个实例,这样可以避免多用户登陆时的线程安全问题。

好了,大体上Struts2与spring的配置差不多就这个样子,下面我们来编写一个测试页面:
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:form action="login">
    <s:textfield key="userName" label="用户名"/>
    <s:password key="password" label="密 码"/>
    <s:submit/>
</s:form>

该表单提交给login action去处理,如果成功就跳转到welcome.jsp,否则还停留在本页面。
完成手工,部署该项目测试一下...咦,出错了?
到struts2的下载文件中找到struts2-spring-plugin-2.0.11.1.jar,把它扔进lib后再看看效果



分享到:
评论

相关推荐

    Struts2与Spring整合的demo

    下面我们将深入探讨Struts2与Spring整合的相关知识点。 1. **Struts2框架**: - Struts2是一个基于MVC设计模式的Web应用框架,用于简化Java Web应用的开发。 - 它提供了强大的Action类,负责处理请求并调用业务...

    struts2与spring2的整合

    本文将深入探讨Struts2与Spring2的整合过程及其背后的原理。 首先,Struts2是一个基于MVC设计模式的Web应用框架,它主要负责处理HTTP请求,提供强大的动作(Action)和结果(Result)管理,以及丰富的插件系统。...

    Struts2与spring整合事例

    **Struts2与Spring整合的优势** 1. **解耦合**:通过Spring的依赖注入,Action类可以从容器获取依赖的服务,降低了Action和具体实现的耦合。 2. **统一管理**:Spring可以管理Struts2的Action实例,实现Action的单例...

    Struts2与Spring2框架整合实例

    6. **测试**:标签"testsh firstss"可能暗示这是一个测试项目,因此在整合完成后,我们需要编写单元测试和集成测试,确保Struts2与Spring2之间的交互正确无误。 7. **SSTest**:这个文件可能是项目的主要测试类或...

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

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

    struts2与spring整合需要的struts的插件struts2-spring-plugin-2.3.8.jar

    这个插件是在strtus2和spring集成必备的一个插件

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

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

    struts2+spring练习

    4. **Struts2与Spring集成**:为了结合这两个框架的优点,我们需要配置Struts2的Spring插件。这将使Struts2能够从Spring容器中获取Action实例,实现Action的依赖注入。配置通常包括修改`struts.xml`中的`&lt;package&gt;`...

    struts2-spring-2.5.14.1.jar

    这个版本(2.5.14.1)是Struts2与Spring整合的一个较新的发行版,包含了源代码和帮助文档,为开发者提供了深入学习和调试的资源。 **Struts2** 是一个基于MVC(Model-View-Controller)架构的Web应用框架,它主要...

    Struts2与Spring集成所需Jar包

    4. **Spring MVC**:虽然Spring本身提供了MVC框架,但在与Struts2集成的情况下,通常不使用Spring MVC,而是用Struts2作为控制器。不过,如果项目中已经使用了Spring MVC,那么`spring-webmvc.jar`也是必要的。 5. ...

    Struts2+Spring框架集成实例

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

    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和Hibernate整合的jar包

    5. **整合Struts2与Spring**:使用Spring-Struts2的插件,比如struts2-spring-plugin-*.jar,这样Action可以被Spring管理,实现依赖注入。在struts.xml中,通过`&lt;spring:bean&gt;`标签声明Action。 6. **处理冲突**:...

    Struts2和Spring整合

    3. **Struts2与Spring整合的意义**:整合这两个框架的主要目的是利用Struts2的优秀控制层和视图层处理,结合Spring的强大依赖注入和事务管理功能,提高代码的可测试性和解耦性。同时,通过Spring管理Struts2的Action...

    Struts2整合Spring、JPA

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

    整合struts2和spring

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

    struts2整合spring jar包

    4. **FilterDispatcher**:在Struts2与Spring整合时,通常会使用`StrutsSpringObjectFactory`替换默认的`DefaultActionProxyFactory`。为此,我们需要在web.xml中配置`StrutsPrepareAndExecuteFilter`而非传统的`...

    struts2-spring-plugin-2.2.1.jar

    **Struts2与Spring的集成** 在没有Struts2-Spring-Plugin的情况下,要在Struts2应用中使用Spring,需要手动配置Action类与Spring Bean之间的关联。而有了这个插件,配置过程变得更加简单。以下是Struts2-Spring-...

    struts2与spring的整合

    为了演示Struts2与Spring整合的效果,这里定义了一个简单的业务接口`ChatService`及其实现类`ChatServiceImpl`: ```java // ChatService.java public interface ChatService { Set&lt;String&gt; getUserNames(); } //...

Global site tag (gtag.js) - Google Analytics