spring与struts简单整合案例

Spring,负责对象对象创建

Struts, 用Action处理请求

Spring与Struts框架整合,

关键点:让struts框架action对象的创建,交给spring完成!


步骤:

1)引入struts .jar相关文件

a、引入struts .jar相关文件

  commons-fileupload-1.2.2.jar
  commons-io-2.0.1.jar
  commons-lang3-3.1.jar
  freemarker-2.3.19.jar
  javassist-3.11.0.GA.jar
  ognl-3.0.5.jar
  struts2-core-2.3.4.1.jar
  xwork-core-2.3.4.1.jar

b、spring-core  相关jar文件

commons-logging-1.1.3.jar
    spring-beans-3.2.5.RELEASE.jar
    spring-context-3.2.5.RELEASE.jar
    spring-core-3.2.5.RELEASE.jar
    spring-expression-3.2.5.RELEASE.jar 

c、spring-web 支持jar包

spring-web-3.2.5.RELEASE.jar                   【Spring源码】

  struts2-spring-plugin-2.3.4.1.jar      【Struts源码】

2)配置:

struts.xml                   【struts路径与action映射配置】

<?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="user" extends="struts-default">

		<action name="user" class="userAction" method="execute">
			<result name="success">/index.jsp</result>
		</action>

	</package>

</struts>

bean.xml               【spring ioc容器配置】

a . bean-dao.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:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	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/aop
         http://www.springframework.org/schema/aop/spring-aop.xsd
         http://www.springframework.org/schema/tx
     	 http://www.springframework.org/schema/tx/spring-tx.xsd">

	<bean id="userDao" class="com.gqx.dao.UserDao" scope="singleton" lazy-init="false"></bean>

</beans>

b、bean-service.xml 同上,将对象加入IOC容器

<bean id="userService" class="com.gqx.service.UserService">
		<property name="userDao" ref="userDao"></property>
</bean>

c、bean-action.xml

<bean id="userDao" class="com.gqx.dao.UserDao" scope="singleton" lazy-init="false"></bean>

web.xml

【核心过滤器: 引入struts功能】

【初始化spring的ioc容器】

具体配置可 以查看源码的api

    <!-- 1. struts配置 -->
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<!-- 2. spring 配置 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>WEB-INF/classes/bean-*.xml</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

3)、代码 

项目截图

userDao

package com.gqx.dao;

public class UserDao {

	public void save() {
		System.out.println("DB:保存用户");
	}
}

userService

public class UserService {

	//IOC容器注入
	private UserDao userDao;
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}

	public void save() {
		userDao.save();
	}
}

userAction

public class UserAction extends ActionSupport {

	// springIOC容器注入
	private UserService userService;
	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	public String execute() {
		userService.save();
		return SUCCESS;
	}
}

 4)、访问http://localhost:8080/struts-spring/user

就可以看到控制台如下的信息


Bug

按照

java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener  错误解决方案

种错误意思很明确:找不到“ org.springframework.web.context.ContextLoaderListener”这个类,ContextLoaderListener这个类是在spring-web.jar包下,我仔细检查了项目jar环境,发现该jar包确实存在,而且也能找到编译后的ContextLoaderListener.class文件。

在网上找到的回答解决了问题,如下

如果你是maven项目,tomcat在发布项目的时候没有同时发布maven依赖所添加的jar包,你需要设置一下eclipse:项目 —> 属性 -> Deployment Assembly -> Add -> Java Build Path Entries -> 选择Maven Dependencies -> Finish -> OK把对应的Maven依赖包也发布到tomcat,调试时会自动把那些jar发布到指定目录下,tomcat也能找到那些jar了。

网上有去查了一下原因,如下:Java虚拟机是根据Java ClassLoader(类加载器)决定如何加载Class。  系统默认提供了3个ClassLoader    Root ClassLoader,ClassPath Loader,Ext ClassLoader  我们也可以编写自己的ClassLoader,去加载特定环境下的Jar文件。    能不能加载Jar,加载哪里的Jar,是由ClassLoader决定的。    问题可能是 导入的仅仅是jar包的引用,需要特殊的指定(类似快捷方式) 

如果是通过正常的WEB-INF/lib下引入jar包,会正常的显示,默认会buildPath,如果是通过项目->属性->java Build Path->Add library->user Library....这种方式导入包,会出现上面那种错误,需要按上面的方法去解决!
时间: 2024-10-12 22:11:01

spring与struts简单整合案例的相关文章

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-

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

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

Spring+SpringMVC+Hibernate简单整合(转)

SpringMVC又一个漂亮的web框架,他与Struts2并驾齐驱,Struts出世早而占据了一定优势,下面同样做一个简单的应用实例,介绍SpringMVC的基本用法,接下来的博客也将梳理一下Struts2和SpringMVC的一些异同,通过梳理和旧知识的联系,让学习的成本变低,花很短的时间就可以了解一门貌似新的技术,其实本质没变. 原文http://langgufu.iteye.com/blog/2088355 下面开始实例,这个实例的需求是对用户信息进行增删改查.首先创建一个web项目te

spring的struts简单介绍

之前一段时间学习了springmvc+mybatis+spring框架,突然对之前的struts东西有点陌生, 所以这里简单记录下温故而知新的东西吧. 1.  首先建立一个Dynamic Web Project, 下面是我建立的StrutsDemo项目目录,使用的是maven构建的, 自己又增加了几个文件夹 2. 给出pom.xml文件: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http

MyBatis+Spring+Maven的简单整合Demo

本文主要是示范基于Maven的MyBatis+Spring的简单使用,其中主要涉及到的是MyBatis的配置使用,另外还有部分log4j的配置使用. 项目概述 本文项目是基于MyEclipse.JDK1.7.MySQL进行开发的,主要功能是通过MyBatis实现对User这个Bean类进行增删改查操作. 先展示下整个项目的结构: 新建web project 如图所示(勾选Maven支持): 一路next,勾选产生web.xml 最后生成的项目pom.xml文件中会有很多乱七八糟的<depende

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

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

flex3+struts 1.3+spring+ibatis 2.x整合代码实例

原创整理不易,转载请注明出处:flex3+struts 1.3+spring+ibatis 2.x整合代码实例 代码下载地址:http://www.zuidaima.com/share/1778657261997056.htm 经过两天工作闲余时间的奋战,终于flex3+struts 1.3+spring +ibatis 2.x 整合成功,下面介绍下详细的步骤和核心代码: IDE:myeclipse (当然:前提是FLEX+java整合成功的情况下,关于flex+java整合的文章就比较多,go

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是