Java实战之STRUTS第一章 - 图文
更新时间:2024-03-18 12:24:01 阅读量: 综合文库 文档下载
- java实战之开发小游戏推荐度:
- 相关推荐
第一部分 Struts
第一章 MVC与Struts介绍
1.1 Model 2
在Servlet/JSP规范的0.92版本中描述了Model 2。当时,Model 2定义了如何在同一个应用程序中联合使用servlet和JSP的体系结构。在后面的版本中,Model 2这个术语没有再出现过,但是在Web开发者中还是使用该术语。
在Model2中,servlet处理数据存取以及控制流程,而JSP处理表现层。Model 2使得Java工程师和HTML开发者可以在同一个应用程序中都仅仅关注自己擅长的部分。对于一个符合Model 2要求的应用程序来说,其中一个部分的改变并不应当需要修改另外一个部分。HTML的开发者经常会改变页面的观感,但是这些修改并不影响后台servlet中的业务逻辑。
Struts框架就是建立在Model 2体系结构上的。在Struts中有一个控制器servlet,它负责处理流程,还有一系列的辅助类来负责数据存取工作。Struts提供了很多标签库,使得Struts可以很容易地使用JSP页面。
1.2 Struts概述
不要吃惊,我们现在仅仅是简述一些Struts的基本知识。这仅仅是一次关于Struts的快速介绍。在我们试图深入到Struts框架结构的具体细节前,我们从它的整体框架入手。
Struts使用Model 2体系结构。ActionServlet负责控制流程。另外一个Struts类:Action,负责存取业务逻辑类。当ActionServlet类从容器中获得一个请求时,它使用请求的URI(也称为路径)来决定是哪一个Action来处理该请求。一个Action可以检验输入的合法性、通过业务逻辑层来读取数据库或者其他数据服务中的信息。
要检验输入的合法性或者是使用该输入来来数据库中的内容,Action需要用户提交给它处理数据。为了避免每一个Action都要处理从请求中提取输入数据的操作。Struts将这些输入数据绑定到JavaBean中。每一个这样的输入Bean都是Struts中ActionForm类的子类。ActionServlet通过查看请求的路径就可以决定哪一个ActionForm用来包含输入数据。这些ActionForm类都应该是org.apache.struts.action. ActionForm的子类。
每一个HTTP请求都必须有一个HTTP响应。一般而言,Struts自己并不生成响应,而是将请求转发到其他的资源上去——例如JSP页面。Struts提供一个名为ActionFurward的类来将逻辑名保存到每个页面的路径。当业务逻辑部分已经执行完成后,Action会选择一个ActionForward,并且将它返回给总控servlet。总控servlet会使用在该ActionFurward中存储的物理路径来调用对应的页面来完成HTTP响应部分。
Struts将所有这些方面的细节信息都定义在ActionMapping对象中。每一个ActionMapping对象都对应于一个指定的路径。当该路径被请求时,总控servlet会获取对应的ActionMapping对象。该对象会告诉总控servlet该使用哪些Action、ActionForm、ActionFurward对象。
全部有关Action、ActionForm、ActionFurward以及ActionMapping的信息和其他的配置信息都在Struts-config.xml文件中声明。ActionServlet在启动的时候会读取该文件,并且创建包含所有这些配置对象的数据库。在运行时刻,Struts会使用这些对象,而不是文件本身。图1-1说明了这些组件是如何集成在一起的。
图 1-1 Struts 组件
1.3 Struts体系结构
现在,Web应用对于企业而言是非常重要的。如今,开发小组需要在有限的时间内构造出应用程序,但是,该应用程序也应当是正确的和可以长期运行的。
Java开发者有许多工具来开发表现层页面,这些工具包括JavaServerPage和Velocity模板。我们同时还有和数据库打交道的工具——例如JDBC和EJB。但是,如何将这些部分组合在一起呢?我们已经有了足够的组件了??还需要什么呢?
1.3.1 历史的回顾
在20世纪70年代后期,当图形用户界面刚刚出现时,软件架构师们发现应用程序可以被分成三个主要部分:处理数据的部分,生成屏幕图形和报表的部分以及处理用户和其他子系统之间交互的部分[Ooram]。在20世纪80年代初期,ObjectWorks/Smalltalk程序开发环境将这三层作为框架结构引入。在Smalltalk80中,处理数据的部分被称为模式(Model),表现层被称为视图(View),交互层被称为控制(Controller)。许多现代的开发环境,包括Java的Swing都使用Model/View/Controler(MVC)体系结构(参看图1-2)作为自己体系结构的基础。
图1-2 Model/View/Controler(MVC)体系结构
基于Java的Web开发人员可以使用JDBC和JSP这样的工具来处理模式层和视图层,但是如何处理控制层呢?
1.3.2 Struts介绍
Struts的中心部分是MVC中的控制层。Struts的控制层将模式层和视图层连接起来。该框架结构还包括一些其他功能,程序员可以利用这些功能来创建一个可伸缩的,足够酷的Web应用。Struts被称为是“不可见的组件”的集合,它帮助程序员将那些原始的素材,例如数据库和Web页面组合成一个真正的实际应用系统。
1.3.3 Struts控制层
Struts的控制层是一组可被编程的组件,程序员可以通过它们来定义自己的应用程序如何和用户打交道。这些组件可以通过逻辑名来隐藏那些很麻烦的,令人讨厌的细枝末节问题。开发人员可以通过配置文件来一次性地处理这些问题,然后就可以关注程序“干什么”而不是“如何干”。 用户通过超链接或者HTML表来和Web应用进行交互。超链接可以将用户导向显示数据和其他元素的页面,例如文本和图像的页面。而HTML表单则可以将用户数据提交给应用程序。
正如图1-3所示,Struts提供了可以用来定义超链接,表单和用户动作的组件。
Hyperlinks/ ActionForwards HTML forms/ ActionForms Custom actions/ Action classes 图1-3 主要的Struts组件
注意 Struts的组件是通过XML文件来进行配置。实际上,配置文件也是Struts框架结构的一个不可分割的组成部分。为了使得读者可以有一个全局的观念,我们将随着对每一个组件的介绍而介绍它们对应的XML元素。
1.超链接(Hyperlinks)
对于应用程序开发者而言,超链接是指向应用程序的某些资源。这些资源可能是Web页面或者是一个客户动作。同时,它也可能包含一些指定的参数。在Struts中,开发人员可以将一个超链接定义为一个ActionForward对象。这些对象同时还具有一个逻辑名和“Path”的属性。这使得开发人员可以设置Path属性,然后通过名字在ActionForward中使用它们。
ActionForward通常是定义在一个XML配置文件中,该文件是在Web应用启动时被Struts读取的。Struts使用这个XML定义文件来创建Struts的配置信息,其中就包含了一系列ActionForward对象。用来创建对应于起始页面的超链接的ActionForward对象的XML元素可能是如下定义:
JSP页面和其他组件都可以使用“welcome”这个对象。Struts框架结构会找到逻辑名为“welcome”的ActionForward,并且根据其中的path属性来转跳到相应的页面。这使得开发人员可以改变链接的目标页面而不需要改变使用该链接的那些组件。在大多数的Web应用程序中,一般都是在JSP和Java代码中对于目的页面的地址进行硬编码,这样经常会导致程序难于修改以及潜在的错误。在Struts应用程序中,这样的细节配置都可以在不需要改变页面或者Java类文件的情况下,在整个应用程序中被改变。
2.HTML表单
HTTP和HTML协议都提供了通过表单来提交数据的机制,但是如何处理这些数据就是程 序员的事情了。Struts框架结构提供了AetionForm类,它可以处理一个HTML表单中的输入数据,校验输入数据的合法性,在需要时通过提供给用户对应的提示或者消息来纠正错误的输入。
ActionForm具有一系列标准的方法来对数据进行校验和修改。Struts会自动地将JavaBean的属性和HTML表单的属性进行匹配。开发者定义ActionForm类,而Struts会自动处理其他的事情。
下面的类会自动地从HTML表单的元素中提取具有“username”名字的域,并且将其值赋给自己的username属性。
Public final class LogonForm extends ActionForm{ Private String username=null; Public String getUsername() { return(this.username);
} public void setUsername(String username) { this.Username=username; } } 对于表单中的其他域,也可以增加相应的属性。这使得其他的组件可以通过一个标准的JavaBean来获取需要的值。从而避免每一个组件都要和HTTP请求打交道。
ActionForm类是使用标准的Java类来创建的。Struts配置通过一系列的配置来查找ActionForm类。这些配置选项包括
正在阅读:
佛山市城市规划管理技术规定(2015年修订版) - 图文03-17
ICHQ904-14
秋色作文450字07-11
何新关于中国与美国未来的战略预言12-01
2008年政府采购工作要点07-18
基因工程中常用的酶及其功能分析11-28
校园防溺水个人心得体会2022年04-03
一年级下册生命与健康教案07-17
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 实战
- 图文
- STRUTS
- Java
- 福建省漳州市2014-2015学年高一上学期期末数学试卷
- 郑州大学远程教育《商务谈判》在线测试题大合集
- 作文范文之英语作文长大后想成为什么
- 浙江理工大学波动光学复习题
- 重庆大学数理统计大作业 - 论文
- 对首届云南师范大学研究生教学技能大赛的认识与思考
- 2018-2019学年第一学期部编版七年级历史上册期末考试试题及参考
- 湖北省黄石市2018年中考理综(物理部分)试题(word版,含答案)
- 第一章 有理数综合练习
- 有色集团公司2012年度工作会议总结讲话提纲
- 内蒙古土石方工程企业名录2018版289家 - 图文
- 火星时代3dmax特约教程:室内光影色彩的表现技法解析 - 图
- 支气管结核分型标准对电子支气管镜检查的指导价值
- 我国出版业资本运营研究现状综述 - 我国出版业资本运营研究现状
- 云南省邵通市盐津县滩头乡七年级数学下册 7.1.1 有序数对导学案
- 吉大15秋学期《外科护理学(含皮肤护理与外科护理实验)》在线作
- 国外室内设计网站大全港台及国内外著名设计网站(2012.6月已更新
- 安徽省蚌埠一中2015届高三上学期期中考试数学(理)试卷
- 烟塔合一技术在湿法脱硫净烟气排放中的应用
- P2P软件的实现+毕业论文 doc