SSH系列:(6)整合Spring和Struts

首先,Spring和Struts需要整合到java web当中去,因此需要在web.xml中对struts和spring进行注册

其次,Spring和Struts整合的关键是:Struts中的action类交由Spring的IOC容器创建。

(1)添加jar包

(2)配置

(3)action代码准备

(4)注册action(分别在Spring和Struts中)

(5)添加JSP页面

1、添加jar包

引入struts jar包和spring web的jar包


struts的jar包(struts-2.3.29)

commons-fileupload-1.3.1.jar

commons-io-2.2.jar

commons-lang3-3.2.jar

commons-logging-1.1.3.jar

freemarker-2.3.22.jar

javassist-3.11.0.GA.jar

ognl-3.0.17.jar

struts2-core-2.3.29.jar

xwork-core-2.3.29.jar


spring-web的jar包

spring-web-3.2.5.RELEASE.jar (属于spring)

struts2-spring-plugin-2.3.29.jar (属于struts2)

2、配置

2.1、在web.xml中注册Struts和Spring

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

	<!-- 注册Spring -->
	<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>

	<!-- 注册Struts -->
	<filter>
		<filter-name>struts</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts</filter-name>
		<url-pattern>*.action</url-pattern>
	</filter-mapping>

	<display-name>Tax System</display-name>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

2.2、添加struts.xml文件

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

<struts>
	<!-- 禁用动态方法访问 -->
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <!-- 配置成开发模式 -->
    <constant name="struts.devMode" value="true" />
	<!-- 配置拓展名为action -->
	<constant name="struts.action.extention" value="action" />
	<!-- 把主题配置成simple -->
	<constant name="struts.ui.theme" value="simple" />
	<!-- 设置创建对象的工厂 -->
	<constant name="struts.objectFactory" value="spring" />
    

<!--
     <package name="default" namespace="/" extends="struts-default">
        <action name="" class="">
            <result name="success"></result>
        </action>
    </package>
 -->    
</struts>

3、action代码准备

package com.rk.test.action;

import java.util.Map;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.rk.test.entity.Person;
import com.rk.test.service.PersonService;

public class PersonAction extends ActionSupport {
	private PersonService personService;
	public void setPersonService(PersonService personService) {
		this.personService = personService;
	}

	public String findById() throws Exception {
		String id = "4028d081564ba79401564ba7968e0000";
		Person p = personService.findById(id);
		ActionContext context = ActionContext.getContext();
		Map<String,Object> request = (Map<String, Object>) context.get("request");
		request.put("person", p);
		return Action.SUCCESS;
	}

}

4、注册action(分别在Spring和Struts中)

4.1、在spring中注册action类

将action类注册到bean-action.xml文件中。注意:action注册要使用scope="prototype"。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/tx
     	http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd">

	<bean id="personAction" class="com.rk.test.action.PersonAction" scope="prototype">
		<property name="personService" ref="personService"></property>
	</bean>

</beans>

将bean-action.xml注册到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"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/tx
     	http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd">

	<import resource="classpath:bean-base.xml"/>
	<import resource="classpath:com/rk/*/config/bean-*.xml"/>

</beans>

其实,我们并没有修改applictionContext.xml的内容,是因为下面这句

<import resource="classpath:com/rk/*/config/bean-*.xml"/>

因为它使用了“*”号来匹配

4.2、在struts中注册action类

将action类注册到struts-test.xml文件中

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

<struts>
     <package name="test_package" namespace="/test" extends="struts-default">
        <action name="psn_*" class="personAction" method="{1}">
            <result name="success">/WEB-INF/jsp/test/success.jsp</result>
        </action>
    </package>
</struts>

将struts-test.xml文件注册到struts.xml文件中

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

<struts>
	<!-- 禁用动态方法访问 -->
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <!-- 配置成开发模式 -->
    <constant name="struts.devMode" value="true" />
	<!-- 配置拓展名为action -->
	<constant name="struts.action.extention" value="action" />
	<!-- 把主题配置成simple -->
	<constant name="struts.ui.theme" value="simple" />
	<!-- 设置创建对象的工厂 -->
	<constant name="struts.objectFactory" value="spring" />
    
	<include file="com/rk/test/config/struts-test.xml"/>

<!--
     <package name="default" namespace="/" extends="struts-default">
        <action name="" class="">
            <result name="success"></result>
        </action>
    </package>
 -->    
</struts>

重点是添加了下面这一句

<include file="com/rk/test/config/struts-test.xml"/>

5、添加JSP页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
  </head>
  
  <body>
    <table border="1">
    	<tr>
    		<td>ID:</td>
    		<td>
    			<s:property value="#request.person.pId"/>
    		</td>
    	</tr>
    	<tr>
    		<td>姓名:</td>
    		<td>
    			<s:property value="#request.person.pName"/>
    		</td>
    	</tr>
    	<tr>
    		<td>版本:</td>
    		<td>
    			<s:property value="#request.person.pVersion"/>
    		</td>
    	</tr>
    
    </table>
  </body>
</html>

访问地址

http://127.0.0.1:8080/tax/test/psn_findById.action

显示结果

时间: 2024-11-11 22:39:18

SSH系列:(6)整合Spring和Struts的相关文章

eclipse整合Spring 4 + Struts 2.5 + Hibernate 4.2

本次搭建的SSH项目源码已上传到百度云盘.没有使用MAVEN,下载下来,在applicationContext配置下mysql,执行下test.sql脚本就可以运行了. 链接:http://pan.baidu.com/s/1nvqOcPj 密码:yv19 1. 配置Struts2 a. 拷贝Struts2 jar包 b. 设置JSP编码为UTF-8 c. 在web.xml添加struts2 Filter d. 添加struts.xml到src目录 e. 添加测试Action,测试Struts2是

【SSH系列】深入浅出spring IOC中三种依赖注入方式

spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则来消减计算机程序的耦合问题,控制反转一般分为两种类型,依赖注入和依赖查找,依赖什么?为什么需要依赖?注入什么?控制什么?依赖注入和控制反转是一样的概念吗?接触新的知识,小编的脑袋中全是大大的问号,不过没有关系,今天这篇博文,小编主要来简单的介绍一下在spring IOC中依赖注入的方法. 依赖注入和控制反转,目的是为了使类与类之间解耦合,提高系统的可扩展性和可维护性.我们可以从以下几个方面理解: a.参与者都

spring,hibernate,struts整合

SSH整合: Spring与Hibernate整合 Spring与Struts整合 整合步骤:---------------------------------------------->本人使用的是struts2.3.4.1   hibernate3.6.0  spring3.2.5 1.导入jar文件 1)struts jar文件-->如何找? -->去源码包中struts-2.3.4.1\apps\struts-blank.war -->使用压缩文件打开struts-blan

Spring与Struts框架整合

Spring,负责对象对象创建 Struts, 用Action处理请求 Spring与Struts框架整合, 关键点:让struts框架action对象的创建,交给spring完成! Spring与Hibernate整合: [SSH整合: Spring与Struts 关键点: action交给spring创建! Spring与Hibernate 关键点: sessionFactory对象交给spring创建! ] 步骤: 引入jar文件 1)引入struts .jar相关文件 2)spring-

条理清晰的搭建SSH环境之整合Struts和Spring

上文说到搭建SSH环境所需三大框架的jar包,本篇博客将通过修改配置文件整合Struts和Spring,下篇博客整合Hibernate和Spring即可完成环境搭建. 1.声明bean,新建TestAction.java,需要给类添加注解:@Controller 和 @Scope("prototype"): "使用@Controller注解标识TestAction之后,就表示要把TestAction交给Spring容器管理,在Spring容器中会存在一个名字为"te

条理清晰的搭建SSH环境之整合Hibernate和Spring

上篇博客整合了Struts和Spring,感觉很简单,这篇博客主要讲述Hibernate和Spring的整合. 如果说上篇博客中的整合是以为Spring的IOC可以管理对象,让Struts2里的对象管理变得更方便.那么Hibernate与Spring的整合的好处就是,可以将SessionFactory的实例交由Spring容器管理,那么我们只需要这一个实例就可以了.还有一点就是声明式的事务管理非常方便. 需要以下配置: 1.配置applicationContext.xml文件,添加配置sessi

【转】SSH中 整合spring和proxool 连接池

[摘要:比来做的一个项目中应用到了毗邻池技巧,大概我们人人比拟认识的开源毗邻池有dbcp,c3p0,proxool.对那三种毗邻池来讲,从机能战失足率来讲,proxool轻微比前两种好些.本日我首要简略] 最近做的一个项目中运用到了连接池技术,可能我们大家比较熟悉的开源连接池有dbcp,c3p0,proxool.对这三种连接池来说,从性能和出错率来说,proxool稍微比前两种好些.今天我主要简单的讲述一下proxool,我在项目中成功的配置和源码. 第一步:首先去http://proxool.

Spring与Struts整合

正常的spring与struts工程文件所需jar包及配置条件下,增加如下配置: struts.xml 增加:<constant name="struts.objectFactory" value="spring" /> 配置action的时候,class直接写spring配置文件(applicationContext.xml)中的bean的ID 增加:struts2-spring-plugin-2.3.28  Jar包即可: 注意在applicatio

Spring+mybatis+struts框架整合的配置具体解释

学了非常久的spring+mybatis+struts.一直都是单个的用他们,或者是两两组合用过,今天总算整合到一起了,配置起来有点麻烦.可是配置完一次之后.就轻松多了,那么框架整合配置具体解释例如以下. 1.导入对应的jar包 由于我们建造的是maven的web项目,全部我们在pom.xml中须要导入这些包. pom.xml 具体凝视 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&q