版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学习要点下载和安装StrutsStruts实现MVC的机制Struts的组件包MyEclipse中的Struts开发环境应用Struts技术开发用户管理程序Struts的工作流程和典型配置返回9.1Struts概述9.1.1
框架简介1.Struts框架Struts实际上也是一个MVC框架,用于快速开发JavaWeb应用。Struts实现的重点在C(Controller,包括ActionServlet/RequestProcessor和定制的Action;也为V(View)提供了一系列定制标签。但Struts很少涉及M(Model),所以Struts可以采用Java实现的任何形式的商业逻辑。Struts提供了一种方法,可以在一个Web应用程序中一起使用JSP和Servlels。它的目的是要解决完全由JSP或完全由Servlet实现的应用程序中固有的问题。下一页返回9.1Struts概述2001年7月,Struts1.0正式发布。该项目也成了ApacheJakarta的子项目之一,也是开源软件。Struts是在JSPModel2的基础上实现的一个MVC架构。它有一个中心控制器,采用XML定制转向的URL,采用Action来处理逻辑。Struts的优点主要集中体现在两个方面:Taglib和页面导航。目前Struts1发展到了基于Webwork2.0的Struts2。2.其他框架技术1)HibernateHibernate是一个免费的开源Java包,它使得与关系数据库打交道变得十分轻松,就像数据库中包含每天使用的普通Java对象一样,同时上一页下一页返回9.1Struts概述不需要考虑如何将其从数据库表中取出(或放回到数据库表中)。Hibernate是一种“数据库一对象”映射的解决方案,就是只要写一条SQL语句,就自动把SQL语句的结果封装成对象。2)Spring
Spring是一个轻型容器,其核心是Bean工厂,用以构造所需要的M。在此基础之上,Spring提供了AOP(Aspect一OrientedProgramming,面向对象的编程)的实现,用来提供非管理环境下声明方式的事务、安全等服务;对Bean工厂的扩展更加方便实现J2EE的应用;DAO/ORM的实现方便r进行数据库的开发;WebMVC和SpringWeb提供rJavaWeb应用的框架和与其他流行的Web框架进行集成。上一页下一页返回9.1Struts概述9.1.2Struts实现MVC的机制Struts实际上是MVC模式的具体实现,在Struts框架中,将模型、视图和控制器这些概念对应到了不同的Web组件中,模型由JavaBean组件或EJB组件实现,视图由一组JSP文件与Struts标签库实现,控制器由ActionServlet和Action实现。
图9-1显示了Struts实现的MVC框架。
(1)视图。Struts框架中的视图部分依然可以采用JSP来实现。在这些JSP文件中没有业务逻辑,也没有模型信息,只有标签,这些标签可以是标准的JSP标签或客户化标签,如Struts标签库中的标签。通常将Struts框架中的actionFromBean也划分到试图模块中。action-FromBean实质上是一种JavaBean,除了具有一些JavaBean的常规上一页下一页返回9.1Struts概述方法之外,还包含一些特殊的方法,用于验证HTML表单数据以及将其属性重新设置为默认值。Struts框架利用actionFromBean来进行视图和控制层之间的表单数据的传递。Struts框架把用户输入的表单数据保存在actionFromBean中,然后将它传递给控制层,控制层可以对actionFromBean中的数据进行修改,JSP文件使用Struts标签将读取修改后的actionFromBean的信息,重新设置HTML表单。(2)模型。模型表示应用程序的状态和业务逻辑。对于大型应用,业务逻辑通常由JavaBean或EJB组件来实现。(3)控制层。Struts中的控制层部分是通过专门的Servlet来实现的。这种Servlet类(也称为ActionServlet)是Struts框架中的核心组件。它继承于javax.servlet.http.HttpServlet类,在MVC模型中扮演中央控上一页下一页返回9.1Struts概述制层的角色。ActionServlet主要负责接收HTTP请求信息,根据配置文件Struts——config.xml的配置信息,把请求转发给适当的Action对象。如果该Action对象不存在,ActionServlet会先创建这个Action对象。Action类负责调用模型的方法、更新模型状态并帮助控制应用程序的流程。对于小型简单的应用程序,Action类本身也可以完成一些实际的业务逻辑。对于大型应用程序,Aclion类充当用户请求和业务逻辑处理之间的适配器(Adaptor),其功能就是将请求与业务逻辑分开,Action类根据用户请求调用相关的业务逻辑组件。业务逻辑由JavaBean或EJB来完成,Action类侧重于控制应用程序的流程,而不是实现应用程序的上一页下一页返回9.1Struts概述逻辑。通过将业务逻辑放在单独的Java包或EJB中,可以提高应用程序的灵活性和可重用性。)当ActionServlet控制层收到用户请求后,把请求转发到一个Action实例。如果这个实例不存在,控制层会首选创建它,然后调用这个Action实例的execute方法。Action的execute方法返回ActionForward对象,它封装了把用户请求再转发给其他Web组件的信息。用户必须定义自己的Action类。(4)Struts的配置文件struts——config.xml。前面讲到一个用户请求是通过ActionServlet来处理和转发的,这就需要一些描述用户请求路径和Action映射关系的配置信息。在Struts中,这些配置映射信息上一页下一页返回9.1Struts概述都存储在特定的XML文件struts——config.xml中。在该配置文件中,每一个Action的映射信息都通过一个<action>元素来配置。这些配置信息在系统启动的时候,被读入内存,供Struts在运行期间使用。在内存中,每一个<action>元素都对应一个org.apache.struts.action.ActionMapping类的实例。上一页下一页返回9.1Struts概述9.1.3Struts的下载和示例程序运行案例一:下载Struts1并运行示例程序【案例功能】下载安装Struts1,运行示例程序。【案例日标】学习Struts1的下载和安装步骤以及示例程序的运行方法。【案例要点】Struts1的下载和安装,Struts1示例程序的运行,学习Struts1示例程序。【案例步骤】
(1)从ApacheSoftwareFoundation的网站上,下载Struts1的开发包。Struts的下载地址如下:hllp://struts.apache.org/download.cgi。主页如图9-2如示。上一页下一页返回9.1Struts概述(2)本书使用的Struts1的版本是1.3.10。下载FullDistribution压缩包(点击如图9-3的标注处),这是Struts的完整版本,包含了示例应用程序、文档以及Struts的源代码。(3)将下载的安装包Struts-1.3.10-all.zip解压。可以看到Struts-1.3.10目录下有4个子目录,分别为:apps,docs,lib和src。(4)将lib目录下的所有.Jar文件都复制到Struts发布目录的/WEB-INF/lib目录下(或者Tomcat的安装目录的common\lib下)。(5)将lib目录下的Struts.jar文件路径添加到环境变量CLASSPATH(或复制到JDK安装目录\ire\lib\ext文件夹中)。(6)Struts1安装配置完成。(7)运行示例程序。
上一页下一页返回9.1Struts概述①将解压后的Struts-1.3.10\apps文件夹中的Struts-cookbook-1.3.10.war文件复制到tomcat6.0\webapps文件夹中。②启动Tomcat,在浏览器中输入http://localhoslt:8080/Struts-cookbook-1.3.10/。示例程序运行结果如图9-4所示。点击SimpleformusingActionForm处的”Execute”链接,运行Simpleform程序,如图9-5所示。单击“Viewsource”链接,可查看对应的源代码,如图9-6所示。上一页下一页返回9.1Struts概述9.1.4Struts的组件包和视图相关的标签库1.StrutsApi中基本的组件包完整的Struts大约有15包,由近200个类组成,而且数量还在不断扩展。StrutsApi中基本的组件包有action,actions,config,util,taglib和validator,如表9-1所示。2.Struts中常用的标签Struts中常用的标签如表9-2所示。3.Struts组件包间的关系Struts组件包间的关系如图9-7所示。上一页返回9.2
简单的Struts应用9.2.1
案例一:应用MyEclipse搭建Struts开发环境【案例功能】在MyEclipse中搭建出Struts开发环境。【案例日标】学习在MyEclips中搭建Struts开发环境。【案例要点】MyEclipse的安装、MyEclipse的配置、在MyEclipse创建Web项目、在Web项目中导入Struts、生成Struts程序基本框架【案例步骤】
(1)在MyEclipse中创建Web项目。①启动MyEclipse,选择File
New
Projecl命令,打开NewProject对话框,再依次选择MyEclipse
JavaEnterpriseProjects
WebProject命令后单击Next按钮。如图9-8所示。
下一页返回9.2
简单的Struts应用②打开NewWebProject对话框,输入新项目名称ch09,然后单击Finish按钮,完成项目创建,如图9-9所示。(2)设置Struts设计模式的相关属性。①在MyEclips。的菜单栏中选择MyEclipse
ProjectCapbilities
AddStrutsCapabilities命令,为Web项目添加Struts属性。②打开New对话框,选中Strutsspecification中的Struts1.3单选按钮,将Basepackage
fornewclasses指定为com后单击Finish按钮,完成Struts设计模式相关属性的设置,如图9-10所示。上一页下一页返回9.2
简单的Struts应用9.2.2
案例二:应用Struts添加用户【案例功能】输入要添加的用户信息,单击“添加用户”按钮,在数据库中添加一条记录,并显示“添加用户成功”的信息。【案例日标】学习在MyEclips中创建Struts程序的方法和步骤。【案例要点】创建ActionForm类、创建Action类、创建字符转换的Convert类、编写主页、配置Struts-config.xml文件。【案例步骤】(1)利用第6章中6.3.1JavaBean数据库技术中创建的student.mdb数据库中的表uscer,作为该案例使用的数据库表。(2)创建Struts中的ActionForm类。上一页下一页返回9.2
简单的Struts应用①在MyEclips的菜单栏中选择File
New
Othe:命令,打开Selectawizard对话框,再选择MyEclipse
Web一Struts
Struts1.3Form命令,如图9-11所示。②打开NewForm对话框。在Usecase文本框中输入UserInfo,在Superclass下拉列表中选择org.apachestruts.action.ActionForm选项,如图9-12所示。③在图9-12中,单击Add按钮,添加Name和Type属性,如图9-13所示。④回到图9-12中,单击Finish按钮,完成ActionForm的创建。系统自动生成ActionForm类代码如下。【源码】UserInfoActionForm.java上一页下一页返回9.2
简单的Struts应用上一页下一页返回9.2
简单的Struts应用上一页下一页返回9.2
简单的Struts应用【代码说明】第1行:定义包名为com.actionForm。第2行:引入Struts框架中的org.apachestruts.action.ActionForm包。第7行-第22行:实现属性的getXXX和setXXX方法。第10行-第13行:设置连接属性(使用JDBC-ODBC桥接方式)。(3)创建进行编码转换的Convert类【源码】Convert.Java上一页下一页返回9.2
简单的Struts应用上一页下一页返回9.2
简单的Struts应用①在MyEclipse的菜单栏中选择File
New
Other命令,打开Selectawizard对话框,再选择MyEclipse
Web一Struts
Struts1.3
Struts1.3Action命令,如图9-14所示。②打开NewAction对话框。在Usecase文本框中输入AdminInfo,在Superclass下拉列表中选择org.apachestruts.action.Action;在Form选项卡中,单击Browse按钮,从打开的“选择ActionForm”对话框中选择“ActionForm”,如图9-15所示。③图9-15中,单击“Finish”按钮,完成Action的创建。系统自动生成Action类代码如下。【源码】UserInfoAction.java上一页下一页返回9.2
简单的Struts应用上一页下一页返回9.2
简单的Struts应用上一页下一页返回9.2
简单的Struts应用修改该源码为如下:【源码】AdminInfoAction.java上一页下一页返回9.2
简单的Struts应用上一页下一页返回9.2
简单的Struts应用【代码说明】①第1行:定义包名为com.Action。②第2行:引入Struts框架中的org.apache.Struts.Action.*包。③第4行:引入步骤(2)创建的com.actionForm.UserInloActionForm类④第5行:引入步骤(3)创建的com.dao.Convert类。⑤第7行:通过继承Action类创建UserInfoAction类。⑥第9-15行:声明与数据库操作相关的变量。⑦第16-28行:通过构造方法创建数据库连接。⑧第30-41行:实现executeUpdate方法实现对数据库的增加、修改和删除的操作。上一页下一页返回9.2
简单的Struts应用⑨第42-53行:重写execute方法,将UserInfoActionForm类中的输入信息添加到数据库中。⑩第54行:保存信息到“message”属性中。⑩第54行:关闭连接。⑩第54行:重定位到index.jsp(5)配置struts-config.xml【源码】
struts-config.xml上一页下一页返回9.2
简单的Struts应用上一页下一页返回9.2
简单的Struts应用【代码说明】①第5-8行:使用<form-beans>元素定义多个包ActionForm。②第11-16行:使用<action-mappings>元素定义多个Action。③第9行:使用<Action>子元素声明Action,主要属性含义如下。Name:指定要用到的ActionForm类的名称。该类的名称必须在<form-beans>元素中声明过。Path:和Action类匹配的请求页面相对路径。不包括后缀名(如.do)该相对路径必须以”/”开头。Scope:指明ActionForm实例的适用范围,默认范围为session。Forward:指定日标相应页面。上一页下一页返回9.2
简单的Struts应用④第17行:指定文件的属性。(6)填写添加用户主页面index.jsp。【源码】index.jsp上一页下一页返回9.2
简单的Struts应用上一页下一页返回9.2
简单的Struts应用【代码说明】①第9-18行:信息合法性验证。②第24行:创建表单。(7)运行结果如图9-16所示。在图9-16中输入记录后单击“添加”按钮,然后在Access中打开user表,可以看到已经添加一条记录,如图9-17所示。上一页返回9.3Struts的工作流程9.3.1Struts的工作流程对于采用Struts框架的Web程序,在Web应用程序启动时就会自动加载并初始化Action
Servlet,ActionServlet从Struts-config.xml文件中读取配置信息,然后将这些信息存放到各种配置对象中,例如,Action的映射信息存放在ActionMapping对象中。当ActionServlet接收到一个客户请求时,将执行如下流程。(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效的信息。(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中。
下一页返回9.3Struts的工作流程(3)根据配置信息决定是否需要进行表单验证。如果需要验证,就调用ActionForm的validate方法。(4)如果ActionForm的validate方法返回null或返回一个不包含ActionMessage的Ac-tionErrors对象,就表示表单验证成功;如果ActionForm的validate方法返回一个包含一个或多个ActionMessage的ActionErrors对象,就表示表单验证失败,此时ActionServlet将直接把请求转发给包含用户提交表单的JSP组件,在这种情况下,不会再创建Action对象并调用Action的execute方法。(5)ActionServlet根据ActionMapping实例包含的映射信息决定将上一页下一页返回9.3Struts的工作流程请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute方法。(6)Action的execute方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件。(7)ActionForward对象指向的JSP组件生成动态网页,返回给客户上一页下一页返回9.3Struts的工作流程9.3.2
Struts的典型配置(1)配置ActionServlet拦截用户请求。ActionServlet是核心控制器,是由Struts框架自动产生的,像过滤器一样会拦截所有用户的请求。但是这个过滤器必须要在web.xml文件中进行配置(一般情况下,Struts已经自动配置)。其内容如下:上一页下一页返回9.3Struts的工作流程上一页下一页返回9.3Struts的工作流程(2)配置ActionForm接受用户输入的数据。ActionForm是一个非常简单的JavaBean。在ActionForm里面有许多get和set方法,其目的就是为了封装从用户输入的数据。因此ActionForm通常与表单页面对应,每个表单对应一个ActionForm。表单中的输入项对应ActionForm的一个属性。Struts要求ActionForm必须要继承自org.apachestruts.action.ActionForm基类。同时,必须保证ActionForm中的属性名与表单中的元素名一致。所有的ActionForm必须要在Struts-config.xml中进行配置,内容如下:上一页下一页返回9.3Struts的工作流程上一页下一页返回9.3Struts的工作流程(3)Action的创建与配置。Action是系统的业务控制器,用于接收从ActionServlet转发过来的请求,并触发execute方法,可以在execute方法里面调用模型进行数据处理。Struts要求Action必须继承自org.apache.struts.action.Action基类。同时,所有的Action必须在Strts-config.xml中进行配置,内容如下:上一页下一页返回9.3Struts的工作流程注意:name并不是Action本身的名称,而是与之关联的ActionFortn的名称path是非常重要的属性。ActionS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T-CNFMA A003-2021 锯材四面刨光生产线技术要求
- 肇庆市2026-2027学年高考考前提分物理仿真卷(含答案解析)
- 工厂质检专员2026年上半年产品品控工作总结
- 暑期游泳场馆安全注意事项课件
- 2026年秋季高三提前开学第一课 冲刺期的作息与健康管理
- 2026年秋季心理学专业开学第一课 实习实践与能力提升课件
- 2026年北师大版小学三年级英语上册Lesson3《Thisismyfriend》完整教案
- 2026年北师大版初中英语下册第8单元《HealthyLife》完整教案
- 2025年基因编辑作物国际贸易政策
- 工程材料设备保管责任协议 项目部物资保管合同
- 氩弧焊焊接管理制度规范
- 会展策划书案例
- 实验室EHS安全培训内容课件
- 2025ACP临床指南:门诊预防发作性偏头痛的药物治疗解读课件
- 2025年“机器人+人工智能”工业应用研究报告
- 四川省绵阳市东辰学校2025-2026学年高一上学期第一次月考数学试题(含解析)
- 2025内蒙古巴彦淖尔市磴口县第三批社区工作者招聘60人笔试考试备考试题及答案解析
- 灭菌锅安全操作培训课件
- 非煤矿山机电安全培训
- 砌筑班组安全培训内容课件
- 直播劳动合同(标准版)
评论
0/150
提交评论