将Struts应用迁移到Struts 2(二)

在上篇文章中,我们已经从较高层解释了整个框架的结构,请 求流程的基础,配置方式和Struts2和Struts1的不同之处。了解这 些后从Struts 应用 迁移到 Struts 2 不再是难事。

在这篇文章中,我们将会更详细地讲述如何由Struts 的action 转为Struts 2的action。

一个应用的例子

这个例子选择了大家都熟悉的 - weblog. 简单地介绍下这例子 的功能需求:

增加一个新的日志

察看一个日志

修改一个日志

删除一个日志

列出所有日至

增删修改(CRUD),是项目中最为普遍的应用。

业务逻辑类在Struts 和 Struts2 应用都是可共用的。如:

public class BlogService ...{
private static List<Blog> blogs = new ArrayList<Blog>();
public List<Blog> list() ...{ ... }
public Blog create(Blog blog) ...{ ... }
public void update(Blog blog) ...{ ... }
public void delete(int id) ...{ ... }
public Blog findById(int id) ...{ ... }
}

BlogService 只是个简单的业务逻辑类,并不是接口,Struts 和 Struts2 的action皆可调用其实例。虽然这样设计在实际项目 中会带来不必要的耦合,但我们的例子只是集中在讨论web层上, 所以无关重要。

QUOTE:

工具箱: 在第一篇文章中,我们谈论了在Struts2 actions中的 依赖注入的接口注入方式。这个是servlet 相关类 (HttpServletRequest, HttpServletResponse, PrincipalProxy, 等.)的主要注入方式,但这并不是唯一的方式。

Struts2 可以使用Spring框架作为默认的容器时,依赖注入的 setter方法就可用了。通过在action中加入setter方法(如下演示) , Struts2 框架将能从Spring框架中获得正确的信息,并通过 setter加载在action中。

public void setBlogService(BlogService service) ...{
this.blogService = service;
}

和接口注入方式类似,我们需要一个拦截器来帮助我们完成任 务,这就是 ActionAutowiringInterceptor 拦截器。这样我们的 业务逻辑类就通过Spring框架管理自动在action被调用之前注入到 Struts2得action中。有多种的配置参数(如by name, by type 或 automatically)可供选择,可以让对象和setter匹配的注入的方式 根据你的需要而定。

时间: 2025-01-21 12:45:04

将Struts应用迁移到Struts 2(二)的相关文章

将Struts应用迁移到Struts 2(一)

大多数人都会熟悉Struts, 无论是从项目实战中获得的经验还是从书中了解到的知识.在这一系列文章里,我们将通过一个由Struts迁移到Struts 2的简单应用例子向大家展现Struts 2的所有特征. 在我们开始介绍这个例子之前,你需要去了解一点Struts 2的背景知识.文章的第一部分将介绍Struts 2与Struts的核心架构的不同点,以助于更好地把所有概念联系起来.第二部分将深入探讨两者在actions上的差别.action相关的框架特征和action的配置.在文章最后一部分将会讲述

Struts 2中的struts.xml配置文件

是使用Struts2主要的配置文件,在这个文件中可以配置action,拦截器,result和reslut类型,视图以及视图类型等. 它是我们使用Sturts2开发工作的重点要关注的配置文件.struts.xml文件要放到在src源文件夹,源文件夹的东西将被编译 到classes文件夹下面.struts.xml文件的内容如程序清单所示. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configurati

基于struts的web应用开发总结(二)

一:打开模态框时showModual()方法并没有提供打开的窗体的title的参数,title要写在打开的模态框的jsp页面的<head></head>的内. 且要把<TITLE></TITLE>标签放在<HEAD></HEAD>中的最上边. 分析: 1 模式窗口比较特殊,所以对于title的位置比较敏感. 2 title标签本来就应该放在<HEAD></HEAD>中的最上边, 只不过普通的 窗口允许或者忽略了

Struts从零开始四、Struts中的国际化

一.概念 I18N作为"国际化"的简称,其来源是明文单词"internationlization"的首末字符"i"和"n"之间的字符数为18.随着全球经济的遗体化为一种主流的趋势,软件开发者应该开发出支持多国语言.国家化的web应用程序吧.也就是一个web应用程序在运行时能够根据客户端请求所来自的国家和语言的不同显示不同的用户界面.这样,当需要在应用程序中添加对一种新的语言的支持时,不需要对已有的软件返工,无需修改应用程序的程

struts 2-ajax请求到struts的action

问题描述 ajax请求到struts的action 我用ajax请求到struts的action进行数据的updatesql发送了,response返回也可以,但是无法commit我commit了也没有报错,但是数据就是写不到数据库了,然后这条SQL一直等待commit的状态,请问怎么回事.我在别的地方调用这update方法一点问题都没有 解决方案 下个断点看下.是不是事务锁住了 解决方案二: 看下事务的隔离机制.是不是这里有多个事务在执行. 解决方案三: 是不是锁表了?跟代码看下

Struts 2中的struts.properties配置文件

提供框架的很多属性,可以根据需要改变一些默认属性.默认属性文件default.properties,这个文件被存在struts2-core-x.jar的jar包中.例如请求一个action的默认后缀是.action所以请求地址是http://localhost:8080/Chapter01-FirstStruts2/Hello.action,我们可以改变这个后缀它的属性是struts.action.extension=action,为了改变这个属性我们可以在src源文件夹下面创建一个struts

Struts从零开始六、Struts的模块使用实例

在使用Struts框架时,每个请求都由Action去处理,并且还要在struts-config.xml中加以设定,这样以来做小项目还行,在大型网站的开发中,有很多小组负责不同的模块,如果每一个小组要对一个struts-config.xml进行设定,将会导致struts-config.xml的版本控制问题. 您可以为每个小组分配不同的struts-config.xml设定文件,方法是在ActionServlet参数的config参数后面加上后缀,如果是config/admin,那么相应的配置文件的

Struts从零开始五、Struts中验证数据实例

一.Struts的ActionForm的表单验证 ActionForm类用于在视图层和控制层之间传递HTML表单数据.控制层可以从ActionForm Bean中读取用户输入的表单数据,也可以把来自模型层的数据存放到ActionForm Bean中,然后把数据返回给视图.即ActionForm Bean从HTML表单中获取用户输入的数据并将传递给Action类,也可以把从业务层返回的数据用来填充ActionForm Bean,然后JSP页面用它来为HTML表单提供各种输出字段的数据.此外,Act

struts取值问题-struts使用DomainModel取值为什么必须提供一个空构造函数否则就会报错?

问题描述 struts使用DomainModel取值为什么必须提供一个空构造函数否则就会报错? java.lang.NullPointerException com.neusoft.action.UserAction.execute(UserAction.java:19) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMet