今日更新
技术新闻
精彩专题
IBM软件技术专区
微软开发专区
技术文档中心
编程语言
网络通信
网络安全
LINUX/UNIX
软件工程与管理
数据库开发
WEB开发
企业应用与开发
移动开发
资源中心
原创专栏
开放系统世界
人才与培训
技术天地论坛
厂商列表
社区推荐

· 与陌生男人激情圣诞平..
· 与陌生男人激情圣诞平..
· 脱光衣服后还可以做朋..
· 连载当我们穷得只剩下..
· 什么样的女人最喜欢做..
· 消除男人怒气的四种方..
· “裸聊”能聊出些啥(..
· 两位大学波霸mm的爆笑..
赛迪网>>技术应用>>J2SE
Struts应用实例:Helloapp应用
作者:孙卫琴 来源:飞思科技 发布时间:2004.11.25
    本章讲解了一个简单的Struts应用例子helloapp应用,这个例子可以帮助读者迅速入门,获得开发Struts应用的基本经验。该应用的功能非常简单,接受用户输入的姓名<name>,然后输出"Hello <name>" 。开发helloapp应用涉及以下内容:

    分析helloapp应用的需求

    在开发应用时,首先从分析需求入手,列举该应用的各种功能,以及限制条件。helloapp应用的需求非常简单,包括如下需求:
    ·接受用户输入的姓名<name>,然后返回字符串"Hello <name> !"
    ·如果用户没有输入姓名就提交表单,将返回出错信息,提示用户首先输入姓名。
    ·如果用户输入姓名为"Monster",将返回出错信息,拒绝向"Monster"打招呼。
    为了演示模型组件的功能,本应用使用模型组件来保存用户输入的姓名。

    运用Struts框架

    下面把Struts框架运用到helloapp应用中。Struts框架可以方便迅速的把一个复杂的应用划分成模型、视图和控制器组件,而Struts的配置文件struts-config.xml则可以灵活的组装这些组件,简化开发过程。
    以下是helloapp应用的各个模块的构成:
    ·模型包括一个JavaBean组件PersonBean,它有一个userName属性,代表用户输入的名字。它提供了get/set方法,分别用于读取和设置userName属性,它还提供一个save()方法,负责把userName属性保存到持久化存储系统中,如数据库或文件系统。对于更为复杂的Web应用,JavaBean组件可以作为EJB或Web服务的前端组件。
    ·视图包括一个JSP文件hello.jsp,它提供用户界面,接受用户输入的姓名。视图还包括一个ActionForm Bean,它用来存放表单数据,并进行表单验证,如果用户没有输入姓名就提交表单,将返回出错信息。
    ·控制器包括一个Action类HelloAction,它完成三项任务:1.进行业务逻辑验证,如果用户输入的姓名为"Monster", 将返回错误消息;2.调用模型组件PersonBean的save()方法,保存用户输入的名字;3.决定将合适的视图组件返回给用户。

    除了创建模型、视图和控制器组件,还需要创建Struts的配置文件struts-config.xml,它可以把这些组件组装起来,使它们协调工作。此外,还需要创建整个Web应用的配置文件web.xml。

    创建JSP文件和ActionForm Bean
    本例中,视图包括两个组件:
    ·一个JSP文件:hello.jsp
    ·一个ActionForm Bean: HelloForm Bean
    下面分别讲述如何创建这两个组件。

    Struts框架的数据验证功能
    几乎所有和用户交互的应用都需要数据验证,而从头设计并开发完善的数据验证机制往往很费时。幸运的是,Struts框架提供了现成的、易于使用的数据验证功能。

    创建控制器组件:HelloAction.java
    控制器组件包括ActionServlet类和Action类。ActionServlet类是Struts框架自带的,它是整个Struts框架的控制枢纽,通常不需要扩展。Struts框架提供了可供扩展的Action类,它用来处理特定的HTTP请求,例程2-4为HelloAction类的源程序。

    创建模型组件:PersonBean.java
    PersonBean是一个非常简单的JavaBean,它包括一个userName属性,以及相关的get/set方法。此外,它还有一个业务方法saveToPersistentStore()。

    创建存放常量的Java文件
    HelloAction类和视图组件之间通过HttpServletRequest的setAttribute()和getAttribute()方法来共享request范围内的数据。下面再看一下HelloAction类调用HttpServletRequest的setAttribute()方法的细节。

    创建Web应用和Struts框架的配置文件
    对于Struts应用,它的配置文件web.xml应该对ActionServlet类进行配置,此外,还应该声明Web应用所使用的Struts标签库,本例中声明使用了三个标签库: Struts Bean、Struts HTML和Struts Logic标签库。

    发布和运行helloapp应用
    helloapp应用作为Java Web应用,它的目录结构应该符合Sun公司制定的Java Web应用的规范,此外,由于helloapp应用使用了Struts框架,因此应该把Struts框架所需的JAR文件和标签库描述文件TLD文件包含进来。

    小结

    本章通过简单完整的helloapp应用例子,演示了如何把Struts框架运用到Web应用的开发中。通过这个例子,读者可以掌握以下内容:
    ·分析应用需求,把应用分解为模型、视图和控制器来实现这些需求。
    ·利用Struts的标签库来创建视图组件。视图组件中的文本内容保存在专门的消息资源文件中,在JSP文件中通过Struts的bean:message标签来访问它,这样可以很方便的实现Struts应用的国际化,支持多国语言。
    ·Struts框架采用ActionForm Bean把视图中的表单数据传给控制器组件。ActionForm Bean被存放在request或session范围内,它能够被JSP组件、Struts标签以及Action类共享。
    ·数据验证分为两种类型:HTML表单验证和业务逻辑验证。表单验证由ActionForm Bean的validate()方法来实现。业务逻辑验证由Action类或模型组件来实现。
    ·ActionMessage可以表示数据验证错误,它被保存在ActionMessages(或其子类ActionErrors)集合对象中。ActionMessages对象被保存在request范围内,Struts的视图组件可以通过html:errors标签来访问它。
    ·Action类的execute()方法调用模型组件来完成业务逻辑,它还能决定把客户请求转发给哪个视图组件。
    ·模型组件具有封装业务实现细节的功能,开发者可以方便的把模型组件移植到远程应用服务器上,这不会对MVC的其它模块造成影响。
    ·通过调用HttpServletRequest或HttpSession的setAttribute()以及getAttribute()方法,可以保存或访问在request或session范围内的Java对象,从而实现视图组件和控制器组件之间信息的交互与共享。
    ·利用struts-config.xml文件来配置Struts应用。(T111)



本文选自飞思图书《精通Struts:基于MVC的Java Web设计与开发》




赛迪网推出“IT博客”,花不到一分钟就完成注册
评论】 【推荐】 【 】 【打印】 【关闭

·Linux专区· ·黑客攻防·
· Nessus 3.0:开源纯真时代的终结者?
· 如何建立安全的ProFTPD应用经验谈(一)
· Sun软件之开源不慌不忙,原因何在?
· Linux发行版制作过程中的各个步骤(一)
· OSDL以谨慎的态度看桌面Linux:前景乐观
· 回顾2005年的开源世界:简化易用&有保证
· Windows2000 系统内置安全命令的威力
· 微软图形再爆严重漏洞 可导致远程攻击
· “黑客之门”后门的魅力:感染与加载
· 从0到今:电脑病毒发展历史和常识
· 保障邮箱安全的几个不常用方法
· MSN 8 beta软件泄露?原来是病毒假冒
·中国信息化· ·成功案例·
· 中国制造业信息化工程风云榜入围名单公布
· “十一五”时期我国企业信息化建设趋势展望
· 3C公训:分析客户金字塔
· 王旭东:信产部将扶持培育本土跨国巨头
· “十一五”期间 电子商务将迎来发展热潮
· 中国信息化周刊:应急联动,任重道远
· 上证所:数据从整理到深度分析
· 用友GRP工资统发解决方案在六合的成功应用
· 打造通畅的电子口岸 提供全方位服务
· 澄西船厂:ERP建设需要理想吗?
· 智邦助力额尔古纳市政府信息化
· 信息化推进云南省社保整体平台建设
*姓  名: 更多资料 了解方案 认识厂商
*单位名称:
*联系电话:
*电子邮件:
    
◆ 相关文章   ◆ 站内热点推荐
· 网管员论坛
· 开发者之家
· WLAN无限未来
· 我是如何掉进C#的……
· 中国“人件”非正式调查

   
合作网站: IBM dW中国网站 LinuxAID 软件工程专家网 中国系统分析员 UMLChina MATRIX Mobile2008 JavaResearch 华储网 UML软件工程组织 中国JAVA手机网 JAVA中文站 金山在线 海量科技