Struts+Spring整合方式
struts与spring整合方式有三种:
方式一:通过Spring的ActionSupport类实现。
方式二:通过Sping的DelegatingRequestProcessor类覆盖struts的requestprocessor实现。
方式三:通过Sping的DelegatingActionProxy类实现,将struts action管理委托给spring框架。
相同点:以上三种方式都需要在struts的配置文件struts-config.xml中注册spring的ContextLoaderPlugIn插件。即:
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/>
</plug-in>
不同点:
方式一:使用Spring提供的ActionSupport类,只需要使用Action继承Spring的ActionSupport类,即可实现Spring与struts的整合,使用起来简单方便,但是struts的Action与Spring耦合在一起,并且Struts的Action不在spring的控制之中,这样如果更换别的IOC容器,或想使用Spring的AOP都是比较困难的,而且如果是多个动作放在一个Action中,则这种方式就无能为了了!
方式二:使用Spring的DelegatingRequestProcessor类,需要在Struts的配置文件中,使用DelegatingRequestProcessor代替Struts的RequestProcessor类,并在Spring的配置文件中动作映射对应的Bean,可以很方便的转换而不用修改代码,这种方式的缺点是依赖于Struts的RequestProcessor类。
方式三:使用Spring的DelegatingActionProxy类,需要在Struts的配置文件中,定义动作映射的type属性为DelegatingActionProxy而不是类的实际名称,并在Spring的配置文件中定义和Struts配置文件动作映射对应的Bean,这种方式和Struts耦合性最小。
注:三者中,使用Spring的DelegatingActionProxy类来整合Spring和Struts的方式最为强大和灵活。
方式三的实例
login.jsp
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<html>
<head>
<title>JSP for LoginForm form</title>
</head>
<body>
<html:form action="/login">
username : <html:text property="username"/><html:errors property="username"/><br/>
password : <html:password property="password"/><html:errors property="password"/><br/>
<html:submit/><html:cancel/>
</html:form>
</body>
</html>
/StrutsLoginDemo/WebRoot/WEB-INF/struts-config.xml
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources />
<form-beans >
<form-bean name="loginForm" type="com.qdu.sun.struts.form.LoginForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="failed" path="/fail.jsp" />
<forward name="success" path="/success.jsp" />
</action>
</action-mappings>
<message-resources parameter="com.qdu.sun.struts.ApplicationResources" />
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/>
</plug-in>
</struts-config>
/StrutsLoginDemo/WebRoot/WEB-INF/applicationContext.xml
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="login" class="com.qdu.sun.struts.BO.LoginBO"/>
<bean name="/login"
class="com.qdu.sun.struts.action.LoginAction">
<property name="loginBean">
<ref bean="login"/>
</property>
</bean>
</beans>
/StrutsLoginDemo/src/com/qdu/sun/struts/action/LoginAction.java
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.qdu.sun.struts.action;
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 com.qdu.sun.struts.BO.LoginBO;
import com.qdu.sun.struts.form.LoginForm;
/**
* MyEclipse Struts
* Creation date: 08-05-2008
*
* XDoclet definition:
* @struts.action path="/login" name="loginForm" input="/login.jsp" scope="request" validate="true"
* @struts.action-forward name="failed" path="/fail.jsp"
* @struts.action-forward name="success" path="/success.jsp"
*/
public class LoginAction extends Action {
/*
* Generated Methods
*/
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
private LoginBO loginBean;
public LoginBO getLoginBean() {
return loginBean;
}
public void setLoginBean(LoginBO loginBean) {
this.loginBean=loginBean;
}
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
LoginBO login=getLoginBean();
if(login.validate(loginForm.getUsername(), loginForm.getPassword()))
{
request.setAttribute("username", loginForm.getUsername());
return mapping.findForward("success");
}
else
return mapping.findForward("failed");
}
}
Struts+Spring整合方式相关推荐
- ssh(Struts+spring+Hibernate)三大框架整合-简述
ssh(Struts+spring+Hibernate)三大框架配合使用来开发项目,是目前javaee最流行的开发方式,必须掌握: 注意: 为了稳健起见,每加入一个框架,我们就需要测试一下,必须通过才 ...
- Struts+Spring+Hibernate整合入门详解
标签: strutshibernatespringbeanactionimport 2007-08-12 16:05 36280人阅读 评论(13) 收藏 举报 分类: STRUTS&SPRI ...
- Spring整合Struts2框架的第一种方式(Action由Struts2框架来创建)。在我的上一篇博文中介绍的通过web工厂的方式获取servcie的方法因为太麻烦,所以开发的时候不会使用。...
1. spring整合struts的基本操作见我的上一篇博文:https://www.cnblogs.com/wyhluckdog/p/10140588.html,这里面将spring与struts2 ...
- Spring与Struts框架整合
Spring,负责对象对象创建 Struts,用Action处理请求 Spring与Struts框架整合,关键点:让struts框架action对象的创建,交给spring完成! 1.步骤: 引入ja ...
- spring 整合struts
1.例子:未被spring整合 struts.xml 的配置文件 <constant name="struts.enable.DynamicMethodInvocation" ...
- JAVAWEB开发之Spring详解之——Spring的入门以及IOC容器装配Bean(xml和注解的方式)、Spring整合web开发、整合Junit4测试
Spring框架学习路线 Spring的IOC Spring的AOP,AspectJ Spring的事务管理,三大框架的整合 Spring框架概述 什么是Spring? Spring是分层的Java ...
- struts+spring的配置方式总结
现在最流行的j2ee的程序,一般都是用struts+spring+hibernate框架做的,spring+hibernate的配置方式很简单,这里就不说了,下面对struts+spring的几种配置 ...
- Spring整合Mybatis之注解方式,(注解整合Junit)
Spring整合Mybatis之注解方式 我有一篇博客详细写了我自己使用xml的方法Spring整合MyBatis,现在我就把核心配置文件中的每个bean的配置使用注解的方式实现 注解整合MyBati ...
- spring 整合 mybatis 中数据源的几种配置方式
因为spring 整合mybatis的过程中, 有好几种整合方式,尤其是数据源那块,经常看到不一样的配置方式,总感觉有点乱,所以今天有空总结下. 一.采用org.mybatis.spring.mapp ...
最新文章
- 商汤招股书详解:40名教授250+博士3593位工程师,AI收入亚洲第一,一年15亿研发工资支出...
- 在 ASP.NET MVC 中使用 Chart 控件
- WinForm中Combobox绑定值问题
- 动态代理JDK于cglib
- linux龙芯自动挂载u盘,Windows Subsystem for Linux (WSL)挂载移动硬盘U盘
- .htaccess必须以ASCII模式上传
- Visual Studio调试之避免单步跟踪调试模式
- Echarts数据可视化全解注释
- 基于HTML5 WebGL 与 GIS 的智慧机场大数据可视化分析
- 天刀帐号角色服务器查询系统,天涯明月刀手游角色交易介绍-角色转移系统
- 51单片机单片机基础知识
- Python——动画精灵
- linux加静态路由命令,LINUX添加静态路由
- 802.11 - NDP反馈报告
- 实现人rou搜索的10个经典方法
- linux内核去掉pty,请问如何升级内核?高手请进!!!
- c语言s-next,memset_s - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
- 分布式缓存系统Redis原理解析
- zz纯数学课程科目与教材推荐
- 解决SQL Server报错:229、262、5123
热门文章
- redis基础类型:string
- cshop是什么开发语言_国内程序员那么多,为什么不开发一个属于自己的编程语言?...
- redis 缓存 淘汰
- 2.10 词嵌入除偏
- Pandas 文本数据方法 findall( )
- php递归面包屑,php实现面包屑导航例子分享,_PHP教程
- 计算机多功能发展,随着电子计算机向微型化和多功能化发展,它的体积大大缩小,成本大大降低。性能明 - 问答库...
- 理想的人才梯队体系特征:40页人才梯队建设实施方案,果断收藏
- Exchange 迁移 Public Folder 公共文件夹
- 在组织中管理 Windows Hello 企业版