快速业务通道

将Struts应用迁移到Struts 2(二) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
简单,你只需要实现ModelDriven 接口(即实 现getModel()方法)就可以了,确保ModelDrivenInterceptor 拦截 器已作用于action。

除了会调用action中的setter外,model 首先检查是否有和 setter可以匹配当前的attribute名。如果在model中没有这个 attribute相应的setter,则会再在action上找相应的setter来设 值。

在BlogAction 的例子中我们可以看到如何很灵活地使用这些方 法,首先通过prepare() 方法根据Id获取相应的 Blog model object 或新建一个instance, 然后再根据把request中相应的属性 注入Blog instance中和action中。

以上的两个功能使得现在调用action那么简单 - 调用具体的业 务逻辑,和把数据设在HttpServletRequest供返回用。

public class BlogAction extends ActionSupport implements ModelDriven, Preparable, ServletRequestAware ...{ private int blogId; private Blog blog; private BlogService service = new BlogService(); private HttpServletRequest request; public void setServletRequest(HttpServletRequest httpServletRequest) ...{ this.request = httpServletRequest; } public void setId(int blogId) ...{ this.blogId = blogId; } public void prepare() throws Exception ...{ if( blogId==0 ) ...{ blog = new Blog(); } else ...{ blog = service.findById(blogId); } } public Object getModel() ...{ return blog; } public String save() ...{ service.create(blog); return SUCCESS; } public String update() ...{ service.update(blog); request.setAttribute("blog",blog); return SUCCESS; } public String remove() ...{ service.delete(blogId); return SUCCESS; } public String execute() ...{ request.setAttribute("blog",blog); return SUCCESS; } }

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

时间:2011-03-24

最后就是说说 list这个用例了。它同样需要访问 HttpServletRequest对象去返回数据给JSP,所以也需要实现 ServletRequestAware 接口。但是,因为它并不需要任何输入值, 所以就不需要实现其他的接口了。以下是它的具体实现:

public class ListBlogsAction extends ActionSupport implements ServletRequestAware ...{ private BlogService service = new BlogService(); private HttpServletRequest request; public void setServletRequest(HttpServletRequest httpServletRequest) ...{ this.request = httpServletRequest; } public String execute() ...{ request.setAttribute("bloglist",service.list()); return SUCCESS; } }

这样就完成了我们该实现的action代码了。 在下 一篇文章中,当我们新的Struts2用户界面结合时,我们还会进一 步简化action的代码。

在我们调用action之前,我们必须通过XML配置文件去配置它们 。

在Struts中, 我们习惯用在WEB-INF 目录的"struts- config.xml"配置文件,在这里我们需要配置action form和action 属性。在Struts2中, 用的是在classpath中的"struts.xml"配置 文件, 它看起来好象会稍微复杂一些,因为它需要在配置action 的同时也配置其拦截器。

在Struts中配置 form-beans 节点很容易, 只需要一个唯一的 名字,还有就是继承ActionForm类的class作为type。

<struts-config>    <form-beans>      <form-bean name="blogForm"    type="com.fdar.articles.infoq.conversion.struts.BlogForm"/ >    </form-beans>    ... </struts-config>

在我们的例子中,我们的配置 文件有3点不

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号