- 浏览: 204966 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
feihumingyue:
nice 很好啊
JSF中如何使用FacesContext类 -
wgcniler:
请问如果传到存储过程的参数是一个嵌套表的话该怎么写?自定义的o ...
spring中调用存储过程 -
wgcniler:
请问如果传到存储过程的参数是ARRAY,但ARRAY的元素不是 ...
spring中调用存储过程 -
bengan:
谢谢楼上的提示
关于出现僵尸信号SIGBAT或者EXC_BAD_ACCESS的解决方案 -
gypgyp:
用xcode的菜单:product/profile,弹出窗口中 ...
关于出现僵尸信号SIGBAT或者EXC_BAD_ACCESS的解决方案
实例讲解spring整合struts的几种方式
1,使用Spring 的 ActionSupport
2, 使用Spring 的 DelegatingRequestProcessor 类。
3,全权委托。
无论用那种方法来整合第一步就是要为struts来装载spring的应用环境。 就是在 struts 中加入一个插件。
struts-config.xml中
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/>
</plug-in>
spring 的配置文件被作为参数配置进来。这样可以省略对web.xml 文件中的配置。确保你的applicationContext.xml 在WEB-INF目录下面
1,使用Spring的ActionSupport .
Spring 的ActionSupport 继承至 org.apache.struts.action.Action
ActionSupport的子类可以或得 WebApplicationContext类型的全局变量。通过getWebApplicationContext()可以获得这个变量。
这是一个 servlet 的代码:
public class LoginAction extends org.springframework.web.struts.ActionSupport {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
//获得 WebApplicationContext 对象
WebApplicationContext ctx = this.getWebApplicationContext();
LoginDao dao = (LoginDao) ctx.getBean("loginDao");
User u = new User();
u.setName(loginForm.getName());
u.setPwd(loginForm.getPwd());
if(dao.checkLogin(u)){
return mapping.findForward("success");
}else{
return mapping.findForward("error");
}
}
}
applicationContext.xml 中的配置
<beans>
<bean id="loginDao" class="com.cao.dao.LoginDao"/>
</beans>
这中配置方式同直接在web.xml文件配置差别不大。注意:Action继承自 org.springframework.web.struts.ActionSupport 使得struts和spring耦合在一起。
但实现了表示层和业务逻辑层的解耦(LoginDao dao = (LoginDao) ctx.getBean("loginDao"))。
2,使用Spring 的 DelegatingRequestProcessor 类
DelegatingRequestProcessor 继承自 org.apache.struts.action.RequestProcessor 并覆盖了里面的方法。
sturts-config.xml 中 <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/> 通过 <controller >来替代
org.apache.struts.action.RequestProcessor 的请求处理。
public class LoginAction extends Action {
//利用spring来注入这个对象。
private LoginDao dao ;
public void setDao(LoginDao dao) {
System.out.println("执行注入");
this.dao = dao;
}
public LoginDao getDao() {
return dao;
}
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
//这样一改这行代码似乎没有必要了。
//WebApplicationContext ctx = this.getWebApplicationContext();
//LoginDao dao = (LoginDao) ctx.getBean("loginDao");
User u = new User();
u.setName(loginForm.getName());
u.setPwd(loginForm.getPwd());
//直接用dao来调用spring会将这个对象实例化。
if(dao.checkLogin(u)){
return mapping.findForward("success");
}else{
return mapping.findForward("error");
}
}
}
这里的。
LoginAction extends Action 说明 struts 每有和spring 耦合。
看一下
applicationContext.xml 中的配置。
<beans>
<bean id="loginDao" class="com.cao.dao.LoginDao"/>
<bean name="/login" class="com.cao.struts.action.LoginAction">
<property name="dao">
<ref local="loginDao"/>
</property>
</bean>
</beans>
这里 name="/login" 与struts 中的path匹配 class="com.cao.struts.action.LoginAction" 与struts 中的type匹配还要为 LoginAction 提供必要的setXXX方法。 获得ApplicationCotext和依赖注入的工作都在DelegatingRequestProcessor中完成。
3,全权委托:
Action 的创建和对象的依赖注入全部由IOC容器来完成。 使用Spring的DelegatingAcionProxy来帮助实现代理的工作
org.springframework.web.struts.DelegatingActiongProxy继承于org.apache.struts.action.Action .
全权委托的配置方式同 方式 2 类似 (applcationContext.xml文件的配置和Action类的实现方式相同)。
<struts-config>
<data-sources />
<form-beans >
<form-bean name="loginForm" type="com.cao.struts.form.LoginForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<!-- type指向的是spring 的代理类 -->
<action
attribute="loginForm"
input="login.jsp"
name="loginForm"
path="/login"
scope="request"
type="org.springframework.web.struts.DelegatingActionProxy" >
<forward name="success" path="/ok.jsp" />
<forward name="error" path="/error.jsp" />
</action>
</action-mappings>
<message-resources parameter="com.cao.struts.ApplicationResources" />
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/>
</plug-in>
</struts-config>
不同之处
1, <action>中 type指向的是spring 的代理类
2, 去掉struts-config.xml中 <controller >
三种整和方式中我们优先选用全权委托的方式。
理由:
1,第一种使得过多的耦合了Spring和Action .
2,RequestProcessor类已经被代理 如果要再实现自己的实现方式(如:编码处理)怕有点麻烦。
总结一下:
整合工作中的步骤:
1,修改struts-config.xml
2, 配置applicationContext.xml
3, 为Action添加get/set方法 来获得依赖注入的功能。
1,使用Spring 的 ActionSupport
2, 使用Spring 的 DelegatingRequestProcessor 类。
3,全权委托。
无论用那种方法来整合第一步就是要为struts来装载spring的应用环境。 就是在 struts 中加入一个插件。
struts-config.xml中
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/>
</plug-in>
spring 的配置文件被作为参数配置进来。这样可以省略对web.xml 文件中的配置。确保你的applicationContext.xml 在WEB-INF目录下面
1,使用Spring的ActionSupport .
Spring 的ActionSupport 继承至 org.apache.struts.action.Action
ActionSupport的子类可以或得 WebApplicationContext类型的全局变量。通过getWebApplicationContext()可以获得这个变量。
这是一个 servlet 的代码:
public class LoginAction extends org.springframework.web.struts.ActionSupport {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
//获得 WebApplicationContext 对象
WebApplicationContext ctx = this.getWebApplicationContext();
LoginDao dao = (LoginDao) ctx.getBean("loginDao");
User u = new User();
u.setName(loginForm.getName());
u.setPwd(loginForm.getPwd());
if(dao.checkLogin(u)){
return mapping.findForward("success");
}else{
return mapping.findForward("error");
}
}
}
applicationContext.xml 中的配置
<beans>
<bean id="loginDao" class="com.cao.dao.LoginDao"/>
</beans>
这中配置方式同直接在web.xml文件配置差别不大。注意:Action继承自 org.springframework.web.struts.ActionSupport 使得struts和spring耦合在一起。
但实现了表示层和业务逻辑层的解耦(LoginDao dao = (LoginDao) ctx.getBean("loginDao"))。
2,使用Spring 的 DelegatingRequestProcessor 类
DelegatingRequestProcessor 继承自 org.apache.struts.action.RequestProcessor 并覆盖了里面的方法。
sturts-config.xml 中 <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/> 通过 <controller >来替代
org.apache.struts.action.RequestProcessor 的请求处理。
public class LoginAction extends Action {
//利用spring来注入这个对象。
private LoginDao dao ;
public void setDao(LoginDao dao) {
System.out.println("执行注入");
this.dao = dao;
}
public LoginDao getDao() {
return dao;
}
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
//这样一改这行代码似乎没有必要了。
//WebApplicationContext ctx = this.getWebApplicationContext();
//LoginDao dao = (LoginDao) ctx.getBean("loginDao");
User u = new User();
u.setName(loginForm.getName());
u.setPwd(loginForm.getPwd());
//直接用dao来调用spring会将这个对象实例化。
if(dao.checkLogin(u)){
return mapping.findForward("success");
}else{
return mapping.findForward("error");
}
}
}
这里的。
LoginAction extends Action 说明 struts 每有和spring 耦合。
看一下
applicationContext.xml 中的配置。
<beans>
<bean id="loginDao" class="com.cao.dao.LoginDao"/>
<bean name="/login" class="com.cao.struts.action.LoginAction">
<property name="dao">
<ref local="loginDao"/>
</property>
</bean>
</beans>
这里 name="/login" 与struts 中的path匹配 class="com.cao.struts.action.LoginAction" 与struts 中的type匹配还要为 LoginAction 提供必要的setXXX方法。 获得ApplicationCotext和依赖注入的工作都在DelegatingRequestProcessor中完成。
3,全权委托:
Action 的创建和对象的依赖注入全部由IOC容器来完成。 使用Spring的DelegatingAcionProxy来帮助实现代理的工作
org.springframework.web.struts.DelegatingActiongProxy继承于org.apache.struts.action.Action .
全权委托的配置方式同 方式 2 类似 (applcationContext.xml文件的配置和Action类的实现方式相同)。
<struts-config>
<data-sources />
<form-beans >
<form-bean name="loginForm" type="com.cao.struts.form.LoginForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<!-- type指向的是spring 的代理类 -->
<action
attribute="loginForm"
input="login.jsp"
name="loginForm"
path="/login"
scope="request"
type="org.springframework.web.struts.DelegatingActionProxy" >
<forward name="success" path="/ok.jsp" />
<forward name="error" path="/error.jsp" />
</action>
</action-mappings>
<message-resources parameter="com.cao.struts.ApplicationResources" />
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/>
</plug-in>
</struts-config>
不同之处
1, <action>中 type指向的是spring 的代理类
2, 去掉struts-config.xml中 <controller >
三种整和方式中我们优先选用全权委托的方式。
理由:
1,第一种使得过多的耦合了Spring和Action .
2,RequestProcessor类已经被代理 如果要再实现自己的实现方式(如:编码处理)怕有点麻烦。
总结一下:
整合工作中的步骤:
1,修改struts-config.xml
2, 配置applicationContext.xml
3, 为Action添加get/set方法 来获得依赖注入的功能。
发表评论
-
抽象语法树(AST)
2010-01-16 04:02 9646原文出自:http://blog.csdn.net/zhouh ... -
java虚拟机参数
2009-11-19 01:21 1107下面的讨论以Windows平台的Sun MicroSystem ... -
JVM 堆内存(heap)设置选项
2009-11-18 22:17 3055JVM 堆内存(heap)设置选项 参数格式 说 ... -
java堆栈
2009-11-15 11:12 1582java中堆栈(stack)和堆(heap) 一、堆栈(st ... -
Tomcat启动过程
2009-04-01 11:37 1154今天在独立的Tomcat中部 ... -
JSF如何使用ExternalContext类 2
2008-11-04 14:51 23653.3.8 获取CookiegetRequestCookie ... -
JSF如何使用ExternalContext类 1
2008-11-04 14:42 2333使用ExternalContext类提供 ... -
JSF中如何使用FacesContext类
2008-11-04 14:26 2228在Faces API中有两个类是要经常使用的. 一个是Face ... -
JSF Mbean
2008-09-04 20:23 1223首先从Model1中的JavaBean说起,大家知道,Mode ... -
JSF FacesContext 详解 三
2008-08-28 15:48 40973.3.6 访问Request对象里的参数名和值 getRe ... -
JSF FacesContext 详解 二
2008-08-28 15:47 2682JSF FacesContext 详解 二 3. ... -
JSF FacesContext 详解 一
2008-08-28 15:45 2208JSF FacesContext 详解 一 ... -
一个jsf的face-config.xml看不懂
2008-08-25 16:46 3514刚学习jsf,公司一个jsf工程里的face-config.x ... -
jar命令详解
2008-08-20 00:17 1217自己学习记录的资料 1. ... -
jmx使用实例(待加注析正式发布)
2008-08-20 00:00 0JMX 在JDK 1.5中已经是J2SE的一个标准组成部分了。 ... -
最近一个工作要用到jmx所以特意找了一些资料了解jmx,好的给大家分享
2008-08-19 16:29 1972JMX(Java Management Extension ... -
jsf的eclipse开发插件
2008-08-18 12:36 1187大家可以介绍个好的jsf eclipse开发插件吗?要支持js ... -
spring中调用存储过程
2008-08-06 02:27 4233org.springframework.jdbc.object ... -
关于使用hibernate的关联关系还是使用视图的问题
2008-08-02 02:07 1564现在做的工程是HHS框架结构的,在使用hibernate的数据 ... -
java序列化备份及还原
2008-07-29 21:05 1822今天工作遇到一个要把查询结果的List序列化保存到本地机,再上 ...
相关推荐
### Spring与Struts整合的三种主要方式 在Java Web开发领域,Spring框架和Struts框架都是非常重要的技术。Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)功能,为Java应用提供了轻量级的解决方案。而...
1. **Spring整合** - 在MyEclipse中添加Spring支持,选择相应的Spring版本和开发包,如Spring 1.2系列。 - 创建Spring配置文件(如`applicationContext.xml`),配置Bean定义,包括Service层、DAO层以及Action类等...
另一种整合方式是通过继承Spring的ActionSupport类,这使得开发者能够显式地使用getWebApplicationContext()方法获取Spring管理的bean。这种方式更适用于那些需要深度集成Spring特性的场景,比如AOP或更复杂的依赖...
在第一种整合方式中,Struts的`struts-config.xml`配置文件中,我们将`type`属性设置为`org.springframework.web.struts.DelegatingActionProxy`,这表示Struts的Action将由Spring来创建和管理。例如: ```xml ...
以下是三种整合 Spring 与 Struts 的方法的详细解释: 1. 通过 Spring 的 `ActionSupport` 类 这种方法是让 Struts 的 Action 类不再继承自 Struts 的 `Action` 类,而是继承 Spring 提供的 `ActionSupport` 类。...
3. **整合集成的原因** 将Spring与Struts1.2整合,可以利用Spring的强大功能来管理Struts的Action和业务逻辑,提高代码的可测试性和可维护性。 4. **整合步骤** - **配置Spring**:首先创建Spring配置文件(如`...
`struts2-spring-plugin.xml`配置Struts2与Spring的集成,确保Action类由Spring容器管理。`spring-context.xml`中,需要配置数据源、SessionFactory、事务管理器以及各业务层和DAO层的bean。Hibernate的`hibernate....
- 创建Struts配置文件,例如`struts-config.xml`,定义Action类和ActionForm类。 - 配置Action和ActionForward,定义请求的处理流程。 3. **集成步骤**: - 在Struts的Action类中,通过Spring的`@Autowired`注解...
MyBatis与Spring整合可以实现事务管理,提供动态SQL支持,并且可以方便地通过Spring的数据源配置,实现数据库连接的管理。 **Maven 3** 是一个项目管理和综合工具,通过POM(Project Object Model)文件管理项目的...
《Spring 3.2.6、Struts 2.3.15与MyBatis 3整合实战详解》 在Java Web开发领域,Spring、Struts和MyBatis是三大主流框架,它们各自承担着不同的职责,共同构建了一个强大的企业级应用开发环境。本DEMO以Spring ...
Spring 和 Struts2 是两个...总之,Spring 和 Struts2 的整合利用了两者的优势,提供了一种强大的方式来构建可扩展、易于维护的 Java Web 应用。通过深入学习和实践,开发者可以掌握这种整合技巧,并在实际项目中应用。
3. **使用DelegatingActionProxy代理Action**:在`struts-config.xml`中,所有Action的type属性改为`DelegatingActionProxy`,而非具体类名,然后在Spring配置文件中定义对应的bean。这是最灵活的整合方式,因为它...
这种整合方式通常用于Struts 2,也称为“Spring-Struts 2集成”。在这种模式下,Struts 2完全依赖于Spring来管理Action。首先,我们需要在Struts 2的配置文件(struts.xml)中启用Spring插件: ```xml ...
以下将详细阐述Spring与Struts整合的三种方式: 1. **使用Spring的ActionSupport** 这种方式是通过让Struts的Action类继承Spring的`ActionSupport`类,使Action类能够访问Spring的ApplicationContext。首先,在`...
在IT行业中,SSH(Spring、Struts2、Hibernate)是一个经典的Java Web开发框架组合,而Redis则是一个高性能的键值存储系统,常用于缓存和数据持久化。将SSH与Redis整合,可以提升应用程序的性能和响应速度。下面将...
在实际应用中,第一种和第二种方案通常用于初始化 Spring 容器,而第三种方案则更深入地将 Spring 的功能集成到 Struts 请求处理流程中。然而,使用 `ActionSupport` 类(方法一)会使得 Struts Action 与 Spring ...
##### 第一部分:Web工程集成Struts2框架 **Step01:创建Web工程** - 在开发环境中创建一个新的Web工程,如Eclipse或IntelliJ IDEA中通过New -> Web Project创建。 **Step02:完成Web工程与Struts2的整合开发** -...
3. **整合Struts2-Spring插件** 引入Struts2的Spring插件,该插件使得Spring管理的Action类可以在Struts2中直接使用。在struts.xml配置文件中启用该插件。 4. **Action类的配置** 创建Spring管理的Action类,通常...
6. **配置Struts2-Spring整合** - 添加Spring插件`struts2-spring-plugin-x.x.x.jar`到项目的类路径。 - 在`struts.xml`中使用`<package>`元素的`namespace`属性来区分不同模块,避免命名冲突。 - 配置Action类,...
3. **配置Struts 2**:在struts.xml中配置Action,将Spring管理的Bean注入到Action中。可以使用`<spring:bean>`标签或`struts-plugin.xml`中的`<struts:spring-plugin>`来实现Action的Spring托管。 4. **事务管理**...