【先引入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整合的相关知识点。 1. **Struts2框架**: - Struts2是一个基于MVC设计模式的Web应用框架,用于简化Java Web应用的开发。 - 它提供了强大的Action类,负责处理请求并调用业务...
本文将深入探讨Struts2与Spring2的整合过程及其背后的原理。 首先,Struts2是一个基于MVC设计模式的Web应用框架,它主要负责处理HTTP请求,提供强大的动作(Action)和结果(Result)管理,以及丰富的插件系统。...
**Struts2与Spring整合的优势** 1. **解耦合**:通过Spring的依赖注入,Action类可以从容器获取依赖的服务,降低了Action和具体实现的耦合。 2. **统一管理**:Spring可以管理Struts2的Action实例,实现Action的单例...
6. **测试**:标签"testsh firstss"可能暗示这是一个测试项目,因此在整合完成后,我们需要编写单元测试和集成测试,确保Struts2与Spring2之间的交互正确无误。 7. **SSTest**:这个文件可能是项目的主要测试类或...
对于Struts2和Spring的配置,我们需要在`struts.xml`和`spring-context.xml`文件中进行相应的设置,例如定义Action类、配置Spring Bean以及指定Struts2与Spring的整合方式。同时,确保web.xml文件中配置了...
这个插件是在strtus2和spring集成必备的一个插件
整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6。 此外,还有:log4j、slf4j、junit4、ehcache等知识点。 项目...
4. **Struts2与Spring集成**:为了结合这两个框架的优点,我们需要配置Struts2的Spring插件。这将使Struts2能够从Spring容器中获取Action实例,实现Action的依赖注入。配置通常包括修改`struts.xml`中的`<package>`...
这个版本(2.5.14.1)是Struts2与Spring整合的一个较新的发行版,包含了源代码和帮助文档,为开发者提供了深入学习和调试的资源。 **Struts2** 是一个基于MVC(Model-View-Controller)架构的Web应用框架,它主要...
4. **Spring MVC**:虽然Spring本身提供了MVC框架,但在与Struts2集成的情况下,通常不使用Spring MVC,而是用Struts2作为控制器。不过,如果项目中已经使用了Spring MVC,那么`spring-webmvc.jar`也是必要的。 5. ...
3. **Struts2与Spring集成**:将Struts2和Spring整合可以实现更高效的控制流管理和业务逻辑处理。通常,我们会在Spring中定义Bean,然后在Struts2的Action类中通过@Autowired注解注入这些Bean,从而实现业务逻辑的...
Struts2-Spring-Plugin-2.3.4.jar 是一个专门为 Struts 2 框架和 Spring 框架整合而设计的插件,主要用于处理 Struts 2 和 Spring 之间的集成问题。在Java Web开发中,这两个框架经常一起使用,Spring 提供了依赖...
5. **整合Struts2与Spring**:使用Spring-Struts2的插件,比如struts2-spring-plugin-*.jar,这样Action可以被Spring管理,实现依赖注入。在struts.xml中,通过`<spring:bean>`标签声明Action。 6. **处理冲突**:...
3. **Struts2与Spring整合的意义**:整合这两个框架的主要目的是利用Struts2的优秀控制层和视图层处理,结合Spring的强大依赖注入和事务管理功能,提高代码的可测试性和解耦性。同时,通过Spring管理Struts2的Action...
Struts2整合Spring和JPA是企业级Java应用开发中常见的技术组合,它们分别负责不同的职责:Struts2作为一款成熟的MVC框架,主要用于处理Web层的请求与响应;Spring作为一个全面的轻量级框架,提供了依赖注入(DI)和...
将Struts2和Spring整合可以充分利用各自的优势,实现更加灵活、高效的应用开发。 整合Struts2和Spring主要涉及以下几个关键步骤: 1. **添加依赖**:首先,需要在项目的构建配置文件(如Maven的pom.xml或Gradle的...
4. **FilterDispatcher**:在Struts2与Spring整合时,通常会使用`StrutsSpringObjectFactory`替换默认的`DefaultActionProxyFactory`。为此,我们需要在web.xml中配置`StrutsPrepareAndExecuteFilter`而非传统的`...
**Struts2与Spring的集成** 在没有Struts2-Spring-Plugin的情况下,要在Struts2应用中使用Spring,需要手动配置Action类与Spring Bean之间的关联。而有了这个插件,配置过程变得更加简单。以下是Struts2-Spring-...
为了演示Struts2与Spring整合的效果,这里定义了一个简单的业务接口`ChatService`及其实现类`ChatServiceImpl`: ```java // ChatService.java public interface ChatService { Set<String> getUserNames(); } //...