`

spring(2):struts与spring整合

 
阅读更多

本节主讲将struts与spring进行整合:

1,新建一个WEB工程:工程名为strutsspring,在其src目录上新建struts.xml配置文件

     将struts相关的7个JAR包,拷至工程的WebRoot/Web-inf/lib目录下

    

2,配置 Web.xml文件,加上struts的过滤

<?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">
	<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>
</web-app>

 

经过以上两步配置,此工程已是标准的struts工程。

 

 修改Tomcat/conf/server.xml配置文件,加上

<Context path="/strutsspring" docBase="E:\workspace\strutsspring\WebRoot" reloadable="true"/>

 3,将spring相关的JAR包导入工程,将applicationContext.xml文件放入工程的web-inf目录下

4,将struts与spring整合:

    将struts lib目录下的struts2-spring-plugin-2.0.14.jar包复制到工程中,此包中只有一个class文件。

    修改web.xml文件,加入监听器,如下:

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

    启动tomcat服务器,启用完成。

 

 例子:下面用一个登录的例子,结合struts与spring开发

登录页面login.jsp, 要求输入用户名与密码

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix ="s" uri="/struts-tags"%>

<html>
  <head>
  </head>
  <body>
    <s:form action="login">
    	<s:textfield name="username" size="20" label="username"></s:textfield>
    	<s:password name="password" size="20" label="password"></s:password>
    	<s:submit></s:submit>
    </s:form>
  </body>
</html>

 

 定义一个接口,isLogin方法用于判断用户名与密码是否正确

package com.test.service;

public interface LoginService {
	public boolean isLogin(String username,String password);
}

 

实现类,当username为hello,password为world时,返回true,否则返回false

package com.test.service.impl;

import com.test.service.LoginService;

/*
 * 该类完成业务处理,向外暴露的是LoginService接口
 */
public class LoginServiceImpl implements LoginService {

	public boolean isLogin(String username, String password) {
		if("hello".equals(username) && "world".equals(password)){
			return true;
		}
		return false;
	}

}

 

 

action类中不处理业务逻辑,逻辑由LoginService 接口负责,其对象由spring负责生成

package com.test.action;

import com.opensymphony.xwork2.ActionSupport;
import com.test.service.LoginService;

public class LoginAction extends ActionSupport {
	private String username;
	private String password;
	private LoginService loginService;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public LoginService getLoginService() {
		return loginService;
	}
	public void setLoginService(LoginService loginService) {
		this.loginService = loginService;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	//下面这个loginService由spring生成
	public String execute() throws Exception {
		if(loginService.isLogin(username, password)){
			return "success";
		}else{
			return "error";
		}
	}
}

 

struts配置文件,此文件中不再负责生成action,改为由spring配置文件生成,class对应的值,必须对应spring配置文件中的bean id

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
	<package name="strutsspring" extends="struts-default">
		<!--下面这个class中的loginAction对应的是spring配置文件applicationContext.xml文件中声明的loginAction bean -->
		<!--现在由spring负责生成action-->
		<action name="login" class="loginAction">
			<result name="success">/success.jsp</result>	
			<result name="error">/error.jsp</result>
		</action>		
	</package>
</struts>

 

 spring配置文件,负责生成action及loginService对象

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>  
	<bean id="loginService" class="com.test.service.impl.LoginServiceImpl" scope="singleton"></bean>
	<bean id="loginAction" class="com.test.action.LoginAction" scope="prototype">
		<property name="loginService" ref="loginService"></property>
	</bean>
</beans>

 其中scope配置是重点!其范围如下图所示

 

一般无状态类应使用singleton,而action则建议使用request或prototype

无状态类是指只有方法,没有属性的类。

分享到:
评论

相关推荐

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

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

    spring与struts2整合

    Spring 和 Struts2 是两个...总之,Spring 和 Struts2 的整合利用了两者的优势,提供了一种强大的方式来构建可扩展、易于维护的 Java Web 应用。通过深入学习和实践,开发者可以掌握这种整合技巧,并在实际项目中应用。

    最新项目系统:Struts2+Spring4+Hibernate4三大框架整合

    总的来说,"最新项目系统:Struts2+Spring4+Hibernate4三大框架整合"为学习和实践Java Web开发提供了一个实用的平台,对于提升开发者的技术水平和项目经验具有极大的帮助。通过深入研究和实践,开发者可以掌握Java ...

    Java Web整合开发完全自学手册:Struts+Hibernate+Spring+Eclipse源码

    以国内使用最广泛的Struts为例,其新版本Struts2与前一版Struts1.x已经有了天壤之别。Hibernate也从2.0升级为3.X,近期Spring也最新推出了2.5版。读者如果再参考以前的版本书籍学习,无异于南辕北辙,而《JavaWeb...

    搞定J2EE:Struts_Spring_Hibernate整合详解与典型案例源代码

    以下章节源码[03] [04] [05] [08] [10] [11] [12] [13] [14] [15] [16]

    整合struts2和spring

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

    轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)3/4

    介绍了Java EE领域的三个开源框架:Struts 2、Spring和Hibernate。 这是第三部分,我上传的上限是60MB,所以不得不分包额!

    Spring与Struts 2整合.zip

    在"Spring与Struts 2整合.zip"这个压缩包中,可能包含了一系列的配置文件、源代码和示例项目,帮助开发者了解和学习如何将这两个框架有效地结合在一起。通过学习和实践这些材料,开发者可以掌握在实际项目中整合...

    轻量级 J2EE 企业应用实战:Struts+Spring+Hibernate整合开发(下).rar

    比较流行的一本书,在公司内很受欢迎 比较实用 下半部分,需与上半部分放在一起解压。

    Struts2整合Spring、JPA

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

    Spring与Struts2整合

    下面将详细介绍Spring与Struts2整合的相关知识点。 **一、整合背景** Spring和Struts2的整合主要基于两者的互补性。Spring提供了一种全面的业务层和持久层管理方案,而Struts2则专注于视图和控制层。整合这两者可以...

    Spring 基础和入门:Struts2+Spring整合

    **Struts2与Spring的整合** Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它提供了强大的控制层,帮助开发者构建可维护的、结构清晰的Web应用程序。而Spring则更倾向于提供业务逻辑和...

    MyClipse6.0\Struts2,Spring与Hibernate整合应用,学生成绩管理系统

    《Struts2、Spring与Hibernate整合应用:学生成绩管理系统》 在IT行业中,构建一个高效、稳定的Web应用程序常常需要整合不同的框架。本项目“学生成绩管理系统”就是基于Struts2、Spring和Hibernate三大主流Java ...

    DWR与SPRING,DWR与STRUTS2的整合

    综上所述,"DWR与SPRING,DWR与STRUTS2的整合"主题涵盖了现代Java Web开发中重要的三个方面:DWR的实时通信能力、Spring的全面后端支持和Struts2的MVC架构。通过整合这三者,开发者可以构建出具有高效交互、灵活管理...

    Struts2 hibernate spring 整合案例

    5. 配置Struts2:在struts.xml中配置Action,指定Action类和结果视图。Action类可以是Spring管理的Bean,这样Struts2可以通过Spring获取Action实例。 6. 创建视图:使用JSP或其他视图技术创建用户界面,Struts2会...

    spring+struts2整合源码

    当使用Spring整合时,Action类通常不再直接依赖于Service,而是通过@Autowired注解从Spring容器中注入Service。例如: ```java @Controller public class MyAction { @Autowired private MyService myService; ...

    struts2整合spring2的配置

    1. 导入的包 &lt;br&gt;l struts2的五个基础包:commons-logging-1.1.jar; &lt;br&gt;freemarker-2.3.8.jar; &lt;br&gt;ognl-2.6.9.jar; &lt;br&gt;struts-core-2.0.6.jar; &lt;br&gt;xwork-2.0.0.jar. &lt;br&gt;l spring的核心包:...

    Struts2与Spring整合的demo

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

    Spring整合集成Struts1.2最简单例子

    将Spring与Struts1.2整合,可以利用Spring的强大功能来管理Struts的Action和业务逻辑,提高代码的可测试性和可维护性。 4. **整合步骤** - **配置Spring**:首先创建Spring配置文件(如`applicationContext.xml`...

    Spring+Struts2+hibernate+Redis整合

    在IT行业中,SSH(Spring、Struts2、Hibernate)是一个经典的Java Web开发框架组合,而Redis则是一个高性能的键值存储系统,常用于缓存和数据持久化。将SSH与Redis整合,可以提升应用程序的性能和响应速度。下面将...

Global site tag (gtag.js) - Google Analytics