`
yongjian1092
  • 浏览: 40788 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

一个完整的Struts框架Web结构的实现

 
阅读更多

2.1一个完整的Struts框架Web结构

2.1.1 form表单(可以动态的生成):

提取相应的用户信息,并通过配置文件找到相应的路径,
由相应的action进行跳转处理;form表单是和用户在浏览器上输入的信息相对的。

2.1.2 formAction(处理表单的动作):

处理不同页面间业务逻辑任务,实现页面间信息的交互跳
转。当用户提交了一个form之后,可能会有多种行为,而此时用formAction来处理
不同行为所产生的结果,查询服务器中数据库,并做出相应的回应跳转。

2.1.3 config-struts:

配置form表单文件,相关路径的配置;form表单可以动态生成(具体
下边会详细讲解)。

2.1.4 *.jsp文件:

直接可以呈现给用户的视图层文件。

2.1.5.FormTo(传输对象):

在form表单和formAction中起着桥梁作用。因为一个form可能会
对应着多个formAction,需要有个句柄对象,来供不同的formAction操作。
其中config-struts是关键!!!
其实,FormTo可以不用。尤其是在action中转发的动作比较多时,用起来反而不方便。
下图是笔者在做学生选课系统时,采用Struts框架整体结构的截图:

这里选择NetBeans工具,配置文件目录下的文件除了struts-config.xml是手工配置外,其他的都是自动的生成;源包目录下的第二项也是自动生成的

2.2 form表单的动态创建

下边我们就来简单的谈一下子如何动态的创建form表单:
首先: 在config-struts配置文件<form-beans>中 增加(只是简单的举例)


其中name是form表单的名字(应该和formAction中创建的form表单的实例相同);
type指明了是动态创建表单,包含了DyanActionForm的完整路径和类名.
<form-property>可以设置表单的属性,其中上述两个属性必不可少.此处<form-property>中属性的设置需要注意两点:
首先、其中name属性要和用户提交表单的name属性一一对应,而type一般是固定的;
其次、在action动作处理中利用DynaActionForm来创建form表单实例(注意该实例的名字要和config-struts中的name一致);最后通过form表单实例来取用户提交的数据.
下边就是在action动作处理中应该添加的生成表单和创建表单实例的例子:


2.3 Struts的配置文件(config-struts)

其实看过上边的论述,大家应该明白其实struts框架的编写就需要彻底的弄懂两部分的内容:一种是,struts配置文件的编写;另一种是,struts表单的动作处理.
下表我们就先来讲述struts的配置文件的编写
即config-struts的配置:
注释:其实配置文件在struts框架中有两个:一个是web.xml(这个配置文件在所有的java web项目中都会有,而且在netBeans中自动生成web.xml配置),另一个是就是和struts框架相关配置文件必须有而且特有的文件config-struts
结合NetBeans工具来谈个人经验:
当在NetBeans中创建了一各struts项目时,会自动生成好多的config-struts内容(其实大多数都不用,用户可以根据增加的需要来自己配置,并保留基本的结构即可)
下边通过一个例子简单阐述一下子:


其中的<struts-config>是根元素,其包括两个主要的属性:

2.3.1 <action-beans>描述系统中的ActionForm对象

(可以是静态的也可以是动态的)
如果是创建静态的<form-bean>时:
<form-bean>的格式
<form-bean name=” ” type=” ”/>
其中name是表单的类名,type是表单的全路径和类名.
总之,<action-beans>说明了用户提交表单的信息的字段属性,当用户提具体信息之后,可以在formAction中生成具体的实例进行具体的处理。
在用静态的创建表单的时候,常常需要formTo传输对象,写起来比较麻烦(有兴趣读者请自学相关资料来深入了解formTo),所以我们一般使用的是上述的动态的创建表单.

2.3.2 <action-mapping>描述了转发路径

其中input 是用户所提交表单的jsp页面的在本地的文件名字;
name 指定该表单的类名;
path是指定该表单提交经过处理后,在浏览器页面所显示的文件名字此处注意两点:第一,该处没有后缀,且前边有/; 第二:该处的名字要与input所提交页面的表单的action的名字相同(但action处需要加后缀.do, 浏览器在解析时,会根据web.xml自动去掉后边的.do然后在config-struts中找对应的路径).
Type指定了表单类的完整路径和类名;
Scope指定了该请求所适用的范围;一般用request;
Forward指定了该请求页面要与那些页面进行打交道(即进行请求转发),其有两个属性:第一,name属性指定是action中的prompt所指代的哪个字符串,第二,path是根据第一个的name属性来跳转到哪个页面(有请求转发和重定向;要注意该处的path是本地的jsp带后缀的文件名字).

2.4 处理表单的动作FormAction

其实,在config-struts配置文件的过程中,大家应该发现这样的问题:
首先、配置文件中只是动态的创建了表单,那么用户提交的表单又怎么知道自动的填充配置文件中创建的表单呢?
其次、在配置文件中的映射部分,那些有关用户提交完表单所要到达的目标页面是如何处理的?
下边我们通过struts中另一个必不可少的部分formAction动作处理来进行讲解:
formAction动作其实和servlet的大同小异,只要掌握的Struts思想会JSP和Servlet,相信应该不会有问题。
当然说再多也无用,只要读者感兴趣去实践,相信实践出真知会在您那里得到验证!
下边就是笔者在用struts框架做学生选课系统的loginForm的一个处理动作代码loginAction.java


//动态创建实例表单;

提取用户输入的信息,并加入到动态创建的表单中。


根据配置文件config-struts映射文件中跳转指令forward中的name字段的值来进行相应的跳转。
如果对servlet很熟悉的话,那么实现formAction这部分并不难。只要明白上边三个关键部分,其他的处理几乎和JSP+Servlet项目中的代码重复。

2.5 小结

本篇讲述了在web开发过程中Struts的主要组成部分,以及个部分是如何实现的。如果搞懂了form表单、formAction、config-struts之间的工作过程:
Config-struts中有form表单的字段属性,跳转路径。其中form表单,是在用户提交了信息之后,被实例化,并通过formAction动作处理,对应config-struts中forword中的name字段的值,来决定跳转到那个页面。
对JSP和servlet很熟悉,做出struts框架web开发是不是难事!





分享到:
评论

相关推荐

    struts框架的基本实现

    Struts框架是Java Web开发中常用的一个开源MVC框架,由Apache软件基金会维护。它提供了一种组织应用程序的方式,使得开发者可以将业务逻辑、控制流程和表现层分离,从而提高开发效率和代码可维护性。在"struts框架的...

    基于Struts框架的Web系统实现

    ### 基于Struts框架的Web系统实现 ...通过上述介绍可以看出,基于Struts框架的Web系统实现方法能够有效地利用JSP标记技术和MVC模式的优势,为开发者提供了一个高效、灵活的开发框架,有助于构建复杂的Web应用程序。

    Struts框架结构的Java Web开发技术基础与实践教程》上

    Struts框架是Java Web开发中的一个关键组成部分,它是一个基于MVC(Model-View-Controller)设计模式的开源框架,由Apache软件基金会维护。在Java Web应用开发中,Struts框架帮助开发者组织代码,实现业务逻辑与用户...

    一个运用了struts框架的学生请假系统

    总的来说,这个学生请假系统是一个典型的Java Web应用,使用Struts框架进行控制层的实现,结合MyEclipse提升开发效率,依托SQL Server 2008存储数据。通过解压并分析"leave.sql"和"leave"文件,可以深入理解其内部...

    基于struts框架mvc模式应用的实现

    本文主要探讨Struts框架在MVC(Model-View-Controller)模式下的应用实现,旨在为读者提供一个深入理解Struts框架及其在Web开发中作用的机会。通过详细解析MVC模式的基本原理以及Struts框架的核心组成部分,本文旨在...

    重构mvc实现struts框架

    **标题解析:** "重构mvc实现struts框架" 这个标题表明了我们要探讨的主题是关于软件开发中的重构过程,特别关注的是如何从一个简单的MVC(Model-View-Controller)模型出发,逐步演进到实现Struts框架的初步形态。...

    Struts框架的原理的实现

    Struts框架是Java Web开发中常用的一个开源MVC框架,由Apache软件基金会维护。它提供了一种组织应用程序的方式,使得开发者可以更容易地构建基于HTTP协议的、可维护性高的Web应用。本文将深入探讨Struts框架的核心...

    浅析Struts框架下的Java Web应用.pdf

    浅析Struts框架下的Java Web应用 Struts框架是基于MVC模式的开源框架,它能够有效...Struts框架是一个功能强大、灵活和高效的Java Web应用框架,它能够提高系统开发和应用的效率,提高开发者的开发效率和应用效率。

    Struts完整框架打开即用

    Struts框架的主要目标是提供一个结构化的开发环境,帮助开发者创建易于维护、可扩展且具有良好组织结构的Web应用程序。"Struts完整框架打开即用"意味着该压缩包可能包含了一个预配置好的Struts2框架,开发者可以直接...

    struts框架详细介绍

    Struts框架是一个基于MVC(模型-视图-控制器)设计模式的Java Web应用程序框架,由Apache软件基金会的Struts项目开发。它旨在提供一种结构化的、可维护性高的开发方式,以帮助开发者构建Web应用。以下是Struts框架的...

    基于MVC模式Struts框架

    本文旨在深入探讨Struts框架如何实现MVC模式,以及如何通过一个具体的例子——全面预算管理系统中的预算资料模块,来展示Struts框架的强大功能。 #### MVC模式概述 MVC模式最早由Xerox PARC在20世纪80年代为编程...

    struts框架

    本文主要介绍Struts框架的原理、安装以及如何搭建一个基于Struts2框架的应用程序。 Struts2是Struts框架的最新版本,具有很多显著的改进和新特性。Struts2框架的核心是基于WebWork框架构建的,它采用拦截器模式来...

    基于Struts框架的Java Web应用开发研究.pdf

    Struts框架技术是Apache组织Jakarta项目的一个子项目,用以改善Web系统的结构。Struts由一组相互协作的类、Servlet以及JSP组成。Struts架构可以说是MVC设计模式的一种实现。在模型层(Model)和视图层(View)的实现...

    Struts框架分析与应用.pdf

    下面通过一个具体的例子来展示如何使用Struts框架实现一个简单的功能模块——查询学生基本信息。 1. **JSP页面(search.jsp)**:这个页面为用户提供了一个界面,用于输入查询条件(例如学生的学号),并通过Struts...

    spring3、struts2、mybatis结合的一个简单web实现

    总结起来,"spring3、struts2、mybatis结合的一个简单web实现"项目展示了如何将这些框架集成到一起,以构建一个完整的Java Web应用。Struts2处理请求,Spring管理业务逻辑和依赖,MyBatis处理数据持久化,而Tiles则...

    以Struts框架为基础的Java Web应用开发分析.pdf

    首先,Struts框架不是一种功能组件,而是一个软件开发的框架结构。它极大地简化了Java Web应用开发过程,有效减少了开发人员的工作量。在Struts框架下,开发人员主要负责编写、测试和调试应用程序特定的代码,而其他...

    基于Struts的Web系统开发技术及论文在线系统实现

    Struts框架是一个开源的Java Web应用框架,遵循MVC设计模式,用于简化Web应用程序的开发过程。它通过分离模型、视图和控制器,使得代码结构更加清晰,易于维护和扩展。Struts框架的优势主要体现在以下几个方面: - ...

    Struts框架应用于jsp中

    Struts框架是Java Web开发中的一个关键组件,它在JSP(JavaServer Pages)基础上提供了一种更规范、更易维护的MVC(Model-View-Controller)架构。标题"Struts框架应用于jsp中"表明我们将探讨如何在JSP应用程序中...

    搭建第一个struts2框架,实现简单那登录功能

    Struts2是一个强大的Java web应用程序框架,用于构建和维护可扩展、结构清晰的MVC(模型-视图-控制器)架构应用。它是由Apache软件基金会开发的,是Struts1的升级版,提供了更丰富的功能和更高的灵活性。在这个...

Global site tag (gtag.js) - Google Analytics