服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

struts应用实例:helloapp应用


  本章讲解了一个简单的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) 

扫描关注微信公众号