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....这种方式导入包,会出现上面那种错误,需要按上面的方法去解决!

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

  1. Spring与Struts框架整合

    Spring与Struts框架整合 Struts,用Action处理请求 Hibernate,操作数据库 Spring,负责对象创建 Spring与Struts框架整合的关键点在与:让Struts框架 ...

  2. spring+springMVC+mybatis简单整合

    spring+springMVC+mybatis简单整合, springMVC框架是spring的子项目,所以框架的整合方式为,spring+Mybatis或springMVC+mybatis. 三大 ...

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

    学了非常久的spring+mybatis+struts.一直都是单个的用他们,或者是两两组合用过,今天总算整合到一起了,配置起来有点麻烦.可是配置完一次之后.就轻松多了,那么框架整合配置具体解释例如以 ...

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

    SpringMVC又一个漂亮的web框架,他与Struts2并驾齐驱,Struts出世早而占据了一定优势,下面同样做一个简单的应用实例,介绍SpringMVC的基本用法,接下来的博客也将梳理一下Str ...

  5. spring的struts简单介绍

    之前一段时间学习了springmvc+mybatis+spring框架,突然对之前的struts东西有点陌生, 所以这里简单记录下温故而知新的东西吧. 1.  首先建立一个Dynamic Web Pr ...

  6. Spring Boot 最简单整合Shiro+JWT方式

    简介 目前RESTful大多都采用JWT来做授权校验,在Spring Boot 中可以采用Shiro和JWT来做简单的权限以及认证验证,在和Spring Boot集成的过程中碰到了不少坑.便结合自身以 ...

  7. spring与redis简单整合

    项目结构 整合需要的依赖 <dependencies> <dependency> <groupId>org.springframework</groupId& ...

  8. spring+hibernate+struts整合(2)

    spring和struts2的整合 1:配置Web.xml文件 <filter> <filter-name>struts2</filter-name> <fi ...

  9. Spring+Hibernate+Struts(SSH)框架整合

    SSH框架整合 前言:有人说,现在还是流行主流框架,SSM都出来很久了,更不要说SSH.我不以为然.现在许多公司所用的老项目还是ssh,如果改成流行框架,需要成本.比如金融IT这一块,数据库dao层还 ...

随机推荐

  1. classmethod,staticmethod

    '''1 绑定方法: 在类内部定义的函数,默认就是给对象来用,而且是绑定给对象用的,称为对象的绑定方法 绑定对象的方法特殊之处: 应该由对象来调用,对象来调用,会自动将对象当作第一个参数传入 绑定到类 ...

  2. (01背包)Buy the souvenirs (hdu 2126)

    http://acm.hdu.edu.cn/showproblem.php?pid=2126 Buy the souvenirs Time Limit: 10000/1000 MS (Java/Oth ...

  3. 线段树区间覆盖 蛤玮打扫教室(zzuli 1877)

    http://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1877 Description   现在知道一共有n个机房,算上蛤玮一共有m个队员,教练做了m个签,每 ...

  4. android textview支持多种格式跳转

    http://www.linuxidc.com/Linux/2011-08/40530p2.htm 1.android:autoLink属性,使TextView中链接手机号码/网页/邮件/地图 and ...

  5. unidbgrid单元格操作

    unidbgrid单元格操作 //GRID里回车替换TABfunction cellkeydown(sender, td, cellIndex, record, tr, rowIndex, e, eO ...

  6. easyUi DataGrid 显示日期列,时间为空也可,的正常显示,及普通居中列情况

    $('#tt').datagrid({                url: '@Url.Content("~/kpi/FindList")',                w ...

  7. 迁移桌面程序到MS Store(3)——开机自启动

    迁移桌面程序的时候,有可能你会遇到这么个需求——开机自启动.Windows传统桌面程序的传统陋习.不论什么奇葩软件都想要开机自启动,默认就给你打开,一开机哐哐哐什么雷,什么企鹅都蹦出来,也不管你用不用 ...

  8. ionic 2.x 3.x 打包 压缩

    大家都知道Ionic项目ionic serve生成的js css 非常庞大,小有1m多,大有几m,文件如此大load页面的时候需要较长时间的加载,特别在生产环境中,灰常不利于用户体验. 因此我们需要进 ...

  9. 【转】javascript深入理解js闭包

    原文:http://www.jb51.net/article/24101.htm 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.变量的作 ...

  10. 201621123018《java程序设计》第12周作业总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 面向系统综合设计-图书馆管理系统或购物车 使用流与文件改造你的图书馆管理系统或购物车. 2.1 简述如何 ...