频道直达:新闻 - 组网 - 安全 - 服务器 - 存储 - 系统 - 应用 - 开发 - 数据库 - 前沿 - 技术人 - 培训 - 求职 - 读书 - 教程 - 专题 - 产品 - 案例 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

基于Stripes框架进行Java Web开发(1)

作者: Mark Eagle/朱先忠编译 出处:51CTO.com 2007-03-23 18:36    砖    好    评论   进入论坛
阅读提示:Stripes框架是一个新型Java web 2.0开发框架,与JSF等新型框架可形成比较(类似于STRUTS之于SPRING)。本文是一篇简单案例分析文章,通过一个具体例子来分析新型Stripes Web开发框架如何区别于其它框架而形成自己的优势。

【51CTO.com独家特稿】Mark Eagle是美国乔治亚州亚特兰大市MATRIX Resources有限公司的一位资深软件工程师,拥有Sun公司的SCP和SCWCD认证。Mark本人非常喜欢使用开源软件进行软件开发,并且多次积极参与过Hibernate,Spring及Proxool等著名开源工程。

一、简介

Stripes是一个开源的,基于Action的Java web框架。传统型Java web开发强调通过松耦合的设计达到灵活开发之目的,这导致了产生多种配置文件,额外对象以及其它零碎的资源。显然,这些问题提升了众多开发人员的学习曲线,从而降低了开发效率。基于这些原因,一些Java开发者求助于另外的非Java开发框架—例如Ruby on Rails或者Django。而象Stripes这样的新型Java web开发框架,从支持流线式开发框架的成功中获取了大量现成的经验。本文中,我们将通过一个具体的案例来探讨Stripes是如何区别于其它基于Action的Java web框架(例如Struts),而同时又实现了例如Ruby on Rails框架所具备的简单性。

下图1展示了基于Stripes框架开发的典型应用程序中事件及组件间的通常流程。

图1:典型的Stripes流程

如你所见,这也正是我们从一个典型的MVC框架下所想得到的东西。在Stripes及其它基于行为的框架之间的一个主要区别在于,它没有提供外部配置文件。很快我们将会看到,在配置方面,Stripes借助于注解和约定(convention)等技术进一步简化了开发过程。

二、构建你的第一个Stripes行为

下面,让我们通过创建一个“Hello World”示例来理解Stripes框架是如何把诸多内容结合到一起的。其中,HelloWorldAction类负责提示用户输入自己的姓名,然后把它们显示于一个单独的视图中。首先,我们来编写控制器Java类。

public class HelloWorldAction implements ActionBean {   
@ValidateNestedProperties({
@Validate(field = "firstName", required = true,
on = {"hello"}),
@Validate(field = "age", required = true, minvalue = 13,
on = {"hello"})
})
private Person person;
private ActionBeanContext context;
@DefaultHandler
public Resolution index() {
return new ForwardResolution("Hello.jsp");
}
public Resolution hello() {
return new ForwardResolution("SayHello.jsp");
}
public void setPerson(String person) {this.person = person;}
public String getPerson() { return person;}
public void setContext(ActionBeanContext c) {this.context = c; }
public ActionBeanContext getContext() {return context; }
}

在此,这个控制器类十分类似于一个实现了一个称为ActionBean的Stripes特定接口的POJO(普通Java对象)。注意,所有的Stripes行为都需要实现这个接口,以便允许StripesDispatcher servlet把一个ActionBeanContext对象注入到当前提供服务的行为中。该ActionBeanContext对象允许你存取servlet API对象—例如请求,响应和servlet上下文。大多数情况下,在一个Stripes应用程序中没有必要存取这些低级别的API对象。该ActionBeanContext类还允许你取得关于当前行为的状态信息,而且还可以从当前行为中添加参考消息和错误消息。注意,ActionBeanContext域及其存取器(accessor)可以存储在一个基类中,因为所有的Stripes行为都会要求这样的实现。

对于该控制器类的其它内容,我相信任何一位Java开发者都应该熟悉。Person对象及相应的存取器将用于把所有人的姓名信息读写到我们的视图中。尽管这是一个简单的嵌套对象,但是Stripes还允许使用Java集合,泛型和index属性等实现更为复杂的数据绑定。既然Stripes可以处理复杂的数据绑定,那么,你的域(domain)对象也可以重用于需要它们的其它层中。例如,我们可以很容易地实现经由Stripes收集一个域(domain)对象中的信息,并且使用其它POJO框架(例如Hibernate或EJB 3)进行永久性存储。

另外,还应注意,在此,一个简单的Stripes校验注解已被添加到person域中以确保当调用hello方法时用户输入了姓名信息。如果该用户没有输入这些要求的域,那么他们将被返回到源页面并且显示出一个与这个校验相关的错误消息。仅当要求hello事件时才检查这个校验—这是通过注解属性(on={"hello"})指定的。Stripes还将基于校验类型和域名友好地生成一个缺省的错误消息。例如,如果当提交表单时没有提供要求的Person对象的firstName域,那么用户将看到下列结果:

Person First Name is a required field.

这条消息是系统通过把对象图形组件当作Person.firstName而构建的,从而使之更具可读性。如果必要的话,可以重载这些校验错误消息以便提供更多的定制。


共4页: 1 [2] [3] [4] 下一页
【内容导航】
关于 Stripes  Web  框架  Java
专题
企业Web安全威胁在线评估系统
Java实用开发全集
开源框架Eclipse发展历程
Java类的基础教程专题
Java发展动态专题
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Java基础教程 (查看81120次)
·UML类图详解 (查看72587次)
·C++是垃圾语言?! (查看42719次)
·C#技术开发指南 (查看40290次)
·UML统一建模语言 (查看39225次)
·Java编程开发手册 (1198个砖)
·Java基础教程 (431个砖)
·C#技术开发指南 (311个砖)
·.NET开发手册 (254个砖)
·PB开发教程 (223个砖)
·Java编程开发手册 (658个好)
·Java基础教程 (578个好)
·.NET开发手册 (282个好)
·PB开发教程 (213个好)
·Delphi开发技术手册 (200个好)
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。