- 浏览: 170404 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
yinvent:
谢谢,终于找到一个可以用的例子!
struts2学习之一简单范例 -
锅巴49:
学习了,不错.
使用 Spring 2.5 注释驱动的 IoC 功能 -
fooky:
你好,今天在配置spring secutiry3,想让系统先从 ...
spring security 配置文件小结(逐步深化到url级别) -
lj508:
你好啊 请教你个问题
我用那个纯jsp上传时
怎么运行时根本没 ...
Sturt2学习之十二---文件上传 -
641216927:
我还是一个struts2新手。
有个问题请教一下:
同时在t ...
struts2学习之一简单范例
一、原理:
在Action中取得BeanFactory对象,然后通过BeanFactory获取业务逻辑对象
1、spring和struts依赖库配置
* 配置struts
--拷贝struts类库和jstl类库
--修改web.xml文件来配置ActionServlet
--提供struts-config.xml文件
--提供国际化资源文件MessageResources.properties
* 配置spring
--拷贝spring类库
--提供spring配置文件
2、在struts的Action中调用如下代码取得BeanFactory
BeanFactory factory = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
//这个方法的前提是在web.xml中加入了如下的配置
/*<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>*/
//这个配置的作用是当spring启动时,最先调用listener,那么就会在容器中加入BeanFactory实例对象。以后需要使用时通过以下语句去拿就可以了。这样就不会重复生成BeanFactory 对象了
3、通过BeanFactory取得业务对象,调用业务逻辑方法
二、具体实例程序
1、applicationcontext-bean.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: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-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"> <bean id="userManager" class="com.bjsxt.usermgr.manager.UserManagerImpl"/> </beans>
2、web.xml加入部分
<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>
3、loginAction
package com.bjsxt.usermgr.actions; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.springframework.beans.factory.BeanFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import com.bjsxt.usermgr.forms.LoginActionForm; import com.bjsxt.usermgr.manager.UserManager; import com.bjsxt.usermgr.manager.UserManagerImpl; public class LoginAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { LoginActionForm laf = (LoginActionForm)form; //这里第一种userManager 的生成方式是用new的方式,没有用依赖注入 //UserManager userManager = new UserManagerImpl(); //userManager.login(laf.getUsername(), laf.getPassword()); //这里第二种userManager的生成方式是用的spring的工厂的方式,虽然用了依赖注入,但是这种方式也有他的缺陷 //打个比方如果需要在多个类中应用,那么需要生成多个BeanFactory的对象,所以有了下面的方法 //BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext-beans.xml"); //UserManager userManager = (UserManager)factory.getBean("userManager"); //userManager.login(laf.getUsername(), laf.getPassword()); //这个方法的前提是在web.xml中加入了如下的配置 /*<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>*/ //这个配置的作用是当spring启动时,最先调用listener,那么就会在容器中加入BeanFactory实例对象。以后需要使用时通过以下语句去拿就可以了 BeanFactory factory = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext()); //以下这句其实和上面那一句是一致的,只不过它让返回值更加明确了,ApplicationContext其实就是BeanFactory的一个子接口(功能更多) //ApplicationContext pc = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext()); UserManager userManager = (UserManager)factory.getBean("userManager"); userManager.login(laf.getUsername(), laf.getPassword()); return mapping.findForward("success"); } }
4、struts配置
从以下配置文件的 <action path="/login"
type="com.bjsxt.usermgr.actions.LoginAction"
name="loginForm"
scope="request" >
<forward name="success" path="/success.jsp"/>
</action>
可以看出,在这个方案中与下一个方案的区别,action还是通过struts实例化取得的,不是通过spring的IOC来创建action的,在这个方案中只是UserManagerImpl业务实现实现了IOC
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"> <struts-config> <form-beans> <form-bean name="loginForm" type="com.bjsxt.usermgr.forms.LoginActionForm"/> </form-beans> <action-mappings> <action path="/logininput" forward="/login.jsp" ></action> <action path="/login" type="com.bjsxt.usermgr.actions.LoginAction" name="loginForm" scope="request" > <forward name="success" path="/success.jsp"/> </action> </action-mappings> <message-resources parameter="MessageResources" /> </struts-config>
5、整体见附件
发表评论
-
使用 Spring 2.5 注释驱动的 IoC 功能
2010-08-04 11:04 1158级别: 初级 转自http://www.ibm.com/dev ... -
使用 Spring 2.5 基于注解驱动的 Spring MVC
2010-08-04 11:00 1087转自http://www.ibm.com/developerw ... -
spring security 学习 续一
2009-08-21 15:08 5061六、为了使用MD5对密码加密,我们需要修改一下配置文件。 ... -
spring security 配置文件小结(逐步深化到url级别)
2009-08-20 17:39 9134一 、方式一:用户名密码都在配置文件中。 <?x ... -
spring2.5+strut2.0+hibernate3.3集成
2009-08-15 16:15 1231一、准备jar包,见附件。 二、分布集成 1、先集成spr ... -
ssh或S2sh中因延迟加载出现问题解决方案
2009-08-15 15:29 1018解决方案:在web.xml中加入以下代码 使用spr ... -
S2SH或ssh中乱码问题解决方法一
2009-08-15 15:23 1059在web.xml中添加以下配置 <filter> ... -
Spring+JDBC集成学习笔记(可参考ppt附件38-46页)
2009-08-15 14:25 1845使用Spring+JDBC集成步骤如下 ... -
spring小结之配置二级缓存!
2009-08-15 13:36 1792一、spring二级缓存主要分为三步,可以参考附件程序理解: ... -
Spring和Struts和Hibernate集成
2009-03-31 11:53 7551、见附件 由于附件最大不超过10M 所以部分lib单独打包了 ... -
spring与struts集成方案二
2009-03-31 11:31 1047spring+struts的集成(第二种集成方案)一、原理 将 ... -
Spring学习笔记之九--声明式事务
2009-03-30 10:02 978一、事务的传播特性: 前六个是标准的,在.net中也有,后面 ... -
spring学习之八--Hibernate编程式事务
2009-03-30 00:06 1552采用编程式事务 程序示例: 1、以前单个事物的控制 1)Hib ... -
spring学习之七“AOP使用spring静态配置文件(CGLIB)”
2009-03-29 16:21 2832一、spring对AOP的支持(在JDK动态代理和CGLIB之 ... -
spring学习之六“AOP使用spring静态配置文件的实现”
2009-03-29 15:58 1098一、spring(采用配置文件的方式)对AOP实现 1、sp ... -
spring学习之五“AOP概念及使用Annotation的实现”
2009-03-27 15:14 1009一、静态代理 参见代码 二、动态代理 参 ... -
spring学习之四“自动装配”
2009-03-27 14:46 845一。根据名字自动装配: 前提一、设置default-auto ... -
Spring学习笔记之三“scope” --bean范围
2009-03-27 14:37 1497三、spring Bean的作用域: scope可以取值: ... -
Spring学习笔记之二“属性注入”
2009-03-27 14:15 943参见附件代码理解下文(附件中有更加详细的注解)一、普通的属性注 ... -
Spring学习笔记之一“why spring”
2009-03-27 09:54 879一、spring概述 2、在使用spring前 ...
相关推荐
Maven搭建spring_struts2_Hibernate项目源码,包括数据库,博客地址:http://blog.csdn.net/fengshizty/article/details/43794911
Spring_Struts_Ibatis_Mysql Demo
spring_struts集成spring_struts集成spring_struts集成
spring_struts2_mybatis_注解的小实例实现增删改查
Spring+Struts2_整合原理
使用maven集成spring,struts2,hibernate三大框架,mysql数据库 密码账号 都在配置文件里 不懂可以联系我qq:1193298924
[轻量级Java_EE企业应用实战_Struts2_Spring3_Hibernate整合开发
struts2.2.3_+_spring3.1.0_+_mybatis3.1.0集成简单.docx,我想免费让大家下载,可以不知道怎么设置,有知道的可以私信我
spring_struts1_hibernate
Struts2_Spring_Hibernate集成
spring_struts2_mybatis的配置文件以及架包,适合入门整合框架的童鞋们。
*架构struts2_spring2.5_ibatis2.3 *mysql5.0 *jdk 1.6 *带有所有jar包,可直接运行 本实例实现了用户登陆,用户信息CRUD相关操作。让你感受到了ibatis做o/r mapping的方便快捷。 下次集成dwr进来 create ...
讲述了关于连接池、eclipse、Struts、Spring、Hibernate、iBatis、XML、LOG4J等等的知识点
struts2_mybatis_spring_框架整合实例_数据库 源码中包括数据库文件 文档介绍
一个基于Spring4+Struts2+MyBatis(SSM)的小应用,有需要的可以下载源码学习。
spring_struts_hibernate集成(干净版)
struts1.3 hibernate3.2 spring2.5 mysql数据库 登陆检测+留言板实现增删改查
struts+spring+ibatis框架开发的小例子,适于初学者学习这样的框架开发
Struts_Spring__Hibernate_指导学生做ssh项目 简单易学_Struts_Spring__Hibernate_指导学生做ssh项目