第十章 框架式编程和设计模式_第1页
第十章 框架式编程和设计模式_第2页
第十章 框架式编程和设计模式_第3页
第十章 框架式编程和设计模式_第4页
第十章 框架式编程和设计模式_第5页
已阅读5页,还剩37页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、框架式编程和设计模式框架式编程和设计模式重点:重点:框架式编程框架式编程1MVC编程思想编程思想 2structs概述与举例概述与举例 3难点:难点:MVC编程思想理解编程思想理解 1structs流程流程 210.1 框架式编程v什么是模式什么是模式 v什么是框架什么是框架 v为什么要用模式为什么要用模式 v为什么要用框架为什么要用框架 v常见的设计模式常见的设计模式v常见的常见的java框架框架 10.1 框架式编程v10.1.1 什么是模式 模式,即模式,即pattern。其实就是解决某一类问题的方法论。其实就是解决某一类问题的方法论。你把解决某类问题的方法总结归纳到理论高度,那。你把解

2、决某类问题的方法总结归纳到理论高度,那就是模式。就是模式。 Alexander给出的经典定义是:每个模式都描述了一给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作地使用那些已有的解决方案,无需在重复相同的工作。 模式有不同的领域,建筑领域有建筑模式,软件设模式有不同的领域,建筑领域有建筑模式,软件设计领域也有设计模式。当一个领域逐渐成熟的时候,计领域也有设计模式。当一个领域逐渐成

3、熟的时候,自然会出现很多模式。自然会出现很多模式。 10.1 框架式编程v10.1.2 什么是框架 框架,即框架,即framework。是整个或部分系统的可重用设。是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的骨架。前者是从应用方面而后者是从目的方面给出的定义。定义。 框架,其实就是某种应用的半成品,就是一组组件,框架,其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简

4、单说就是使用别人搭供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。不断升级的软件。 10.1 框架式编程v10.1.3 为什么要用模式 因为模式是一种指导,在一个良好的指导下,因为模式是一种指导,在一个良好的指导下,有助于你完成任务,有助于你作出一个优良的有助于你完成任务,有助于你作出一个优良的设计方案,达到事半功倍的效果。而且会得到设计方案,达到事半功倍的效果。而且会得到解决问题的最佳办法。解决问题的最佳办法。 10.1 框架式编程v10.1.4 为什么要用框架 因为软件系统发展到今天已

5、经很复杂了,特别是服务因为软件系统发展到今天已经很复杂了,特别是服务器端软件,设计到的知识,内容,问题太多。在某些器端软件,设计到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,他可以处理辑设计。而且框架一般是成熟,稳健的,他可以处理系统很多细节问题,比如,事物处理,安全性,数据系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所流控制等问题。还有框架一般

6、都经过很多人使用,所以结构很好,所以扩展性也很好,而且它是不断升级以结构很好,所以扩展性也很好,而且它是不断升级的,你可以直接享受别人升级代码带来的好处。的,你可以直接享受别人升级代码带来的好处。 框架一般处在低层应用平台(如框架一般处在低层应用平台(如J2EE)和高层业)和高层业务逻辑之间的中间层。务逻辑之间的中间层。 10.1 框架式编程v10.1.5 常见的设计模式 最常见的最常见的MVC模式。模式。 MVC模式是模式是1996年由年由Buschmann提出的:提出的: 模型(模型(Model):就是封装数据和所有基):就是封装数据和所有基于对这些数据的操作。于对这些数据的操作。 视图(

7、视图(View):就是封装的是对数据显):就是封装的是对数据显示,即用户界面。示,即用户界面。 控制器(控制器(Control):就是封装外界作用):就是封装外界作用于模型的操作和对数据流向的控制等。于模型的操作和对数据流向的控制等。 10.1 框架式编程v10.1.6 常见的JAVA框架 (1)WAF: 全称:全称:WEB APPLICATION FRAMEWORK 主要应用方面主要应用方面:EJB层层,(WEB层也有层也有,但是比较弱)。但是比较弱)。 主要应用技术主要应用技术:EJB等等 出处:出处:http:/ 简述:这是简述:这是SUN在展示在展示J2EE平台时所用的例子平台时所用的

8、例子PetStore(宠物商店系统宠物商店系统)里面的框架。是里面的框架。是SUN蓝皮书例蓝皮书例子程序中提出的应用框架。它实现了子程序中提出的应用框架。它实现了 MVC和其他良好和其他良好的设计模式。的设计模式。SUN的网站上有技术资料,最好下载的网站上有技术资料,最好下载PetStore来研究,来研究,WEBLOGIC里自带此系统,源码在里自带此系统,源码在beaweblogic700samplesserversrcpetstore。这。这是学习了解是学习了解J2EE的首选框架。的首选框架。 免费。免费。 10.1 框架式编程v10.1.6 常见的JAVA框架(2) Struts Stru

9、ts是一个基于是一个基于Sun J2EE平台的平台的MVC框架,框架,主要是采用主要是采用Servlet和和JSP技术来实现的。由于技术来实现的。由于Struts能充分满足应用开发的需求,简单易用能充分满足应用开发的需求,简单易用,敏捷迅速,颇受关注。,敏捷迅速,颇受关注。Struts把把Servlet、JSP、自定义标签和信息资源、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说模式,极大的节省了时间,所以说

10、Struts是一个非常不错的应用框架。是一个非常不错的应用框架。10.1 框架式编程v10.1.6 常见的JAVA框架(3)Spring Framework Spring是一个解决了许多在是一个解决了许多在J2EE开发中常见的问题的强大框架。开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。程而不是对类编程的良好习惯。Spring的架构基础是基于使用的架构基础是基于使用JavaBean属性的属性的Inversion of Control容器。然而,这仅仅是完容器。然而,这仅仅

11、是完整图景中的一部分:整图景中的一部分:Spring在使用在使用IoC容器作为构建完关注所有容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。架构层的完整解决方案方面是独一无二的。 Spring提供了唯一的提供了唯一的数据访问抽象,包括简单和有效率的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了框架,极大的改进了效率并且减少了可能的错误。效率并且减少了可能的错误。Spring的数据访问架构还集成了的数据访问架构还集成了Hibernate和其他和其他O/R mapping解决方案。解决方案。Spring还提供了唯一还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例

12、如的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或或者者JDBC事务提供一个一致的编程模型。事务提供一个一致的编程模型。Spring提供了一个用标提供了一个用标准准Java语言编写的语言编写的AOP框架,它给框架,它给POJOs提供了声明式的事务提供了声明式的事务管理和其他企业事务。这个框架足够强大,使得应用程序能够抛管理和其他企业事务。这个框架足够强大,使得应用程序能够抛开开EJB的复杂性,同时享受着和传统的复杂性,同时享受着和传统EJB相关的关键服务。相关的关键服务。Spring还提供了可以和还提供了可以和IoC容器集成的强大而灵活的容器集成的强大而灵活的MVC Web框框架。架

13、。 10.1 框架式编程v10.1.6 常见的JAVA框架(4)HibernateHibernate是一个开放源代码的对象关系映射框是一个开放源代码的对象关系映射框架,它对架,它对JDBC进行了非常轻量级的对象封装进行了非常轻量级的对象封装,使得,使得Java程序员可以随心所欲的使用对象编程序员可以随心所欲的使用对象编程思维来操纵数据库。程思维来操纵数据库。 Hibernate可以应用在可以应用在任何使用任何使用JDBC的场合,既可以在的场合,既可以在Java的客户的客户端程序实用,也可以在端程序实用,也可以在Servlet/JSP的的Web应应用中使用,最具革命意义的是,用中使用,最具革命意

14、义的是,Hibernate可可以在应用以在应用EJB的的J2EE架构中取代架构中取代CMP,完成,完成数据持久化的重任。数据持久化的重任。 10.2 MVC编程思想 10.2 MVC编程思想vMVC是什么是什么vMVC设计模式设计模式vMVC的优点的优点vMVC的缺点的缺点vMVC例子例子10.2 MVC编程思想vMVC是什么是什么MVC是一种目前广泛流行的软件设计模式,早在是一种目前广泛流行的软件设计模式,早在70年代年代,IBM就推出了就推出了Sanfronscisico项目计划,其实就是项目计划,其实就是MVC设计模式的研究。近来,随着设计模式的研究。近来,随着J2EE的成熟,它正的成熟

15、,它正在成为在在成为在J2EE平台上推荐的一种设计模型,也是广大平台上推荐的一种设计模型,也是广大Java开发者非常感兴趣的设计模型。开发者非常感兴趣的设计模型。MVC模式也逐渐模式也逐渐在在PHP和和ColdFusion开发者中运用,并有增长趋势。开发者中运用,并有增长趋势。随着网络应用的快速增加随着网络应用的快速增加,MVC模式对于模式对于Web应用的开应用的开发无疑是一种非常先进的设计思想,无论你选择哪种发无疑是一种非常先进的设计思想,无论你选择哪种语言,无论应用多复杂语言,无论应用多复杂,它都能为你理解分析应用模型它都能为你理解分析应用模型时提供最基本的分析方法,为你构造产品提供清晰的

16、时提供最基本的分析方法,为你构造产品提供清晰的设计框架,为你的软件工程提供规范的依据。设计框架,为你的软件工程提供规范的依据。 10.2 MVC编程思想vMVC设计模式设计模式MVC英文即英文即Model-View-Controller,即把一个,即把一个应用的输入、处理、输出流程按照应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个的方式进行分离,这样一个应用被分成三个层应用被分成三个层模型层、视图层、控制模型层、视图层、控制层层 10.2 MVC编程思想vMVC设计模式设计模式模型模型(Model):就是业务流程:就是业务流程/状态的处理以及业

17、务规则的制定。状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。目前流行的最主要的核心。目前流行的EJB模型就是一个典型的应模型就是一个典型的应用例用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的分利用现有的组件组件,但它不能作为应用,但它不能作为应用设计模型设计模型的框架。它仅仅的框架。它仅仅告诉

18、你按这种模型设计就可以利用某些技术组件,从而减少了技告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。对一个开发者来说,就可以专注于业务模型的设计术上的困难。对一个开发者来说,就可以专注于业务模型的设计。MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据。抽象与具体不能隔得太远,也不能太近。抽象与具体不能隔得太远,也不能太近。MVC并没有提供模型并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模

19、型的的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构重构和提高重用性。我们可以用和提高重用性。我们可以用对象对象编程来做比喻,编程来做比喻,MVC定义了定义了一个顶级类,告诉它的子类你只能做这些,但没法限制你能做这一个顶级类,告诉它的子类你只能做这些,但没法限制你能做这些。这点对编程的开发人员非常重要。些。这点对编程的开发人员非常重要。10.2 MVC编程思想vMVC设计模式设计模式 视图视图(View)代表用户交互界面,对于代表用户交互界面,对于Web应用应用来说,可以概括为来说,可以概括为HTML界面,但有可能为界面,但有可能为XHTML、XML和和Applet。随着应用的复杂

20、性。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,个应用可能有很多不同的视图,MVC设计模式设计模式对于视图的处理仅限于视图上数据的采集和处对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型务流程的处理。业务流程的处理交予模型(Model)处理。比如一个订单的视图只接受来处理。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型

21、。的输入数据和请求传递给控制和模型。 10.2 MVC编程思想vMVC设计模式设计模式 控制控制(Controller)可以理解为从用户接收请求可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,请求。控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受

22、请求后用户点击一个连接,控制层接受请求后, 并不并不处理业务信息,它只把用户的信息传递给模型处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。一个视图可能对应多个模型。 10.2 MVC编程思想10.2 MVC编程思想vMVC的优点的优点1.低耦合性。视图层和业务层分离,这样就允许更改视视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,图层代码而不用重新编译模型和控制器代码,同样,一个应用

23、的业务流程或者业务规则的改变只需要改动一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。,所以很容易改变应用程序的数据层和业务规则。 2.高重用性和可适用性 3.较低的生命周期成本4.快速的部署 5.可维护性。分熟视图层和业务逻辑层也使得分熟视图层和业务逻辑层也使得WEB应用应用更易于维护和修改更易于维护和修改 6.有利于软件工程化管理 10.2 MVC编程思想vMVC的缺点的缺点MVC的缺点是由于它没有明确的定义,所以完全理解的缺点是由于它没有明确的定义,所以完全

24、理解MVC并不是很并不是很容易。使用容易。使用MVC需要精心的计划,由于它的内部原理比较复杂,需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。所以需要花费一些时间去思考。 MVC并不适合小型甚至中等规模的应用程序,花费大量时间将并不适合小型甚至中等规模的应用程序,花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。应用到规模并不是很大的应用程序通常会得不偿失。 MVC设计模式是一个很好创建软件的途径,它所提倡的一些原则,设计模式是一个很好创建软件的途径,它所提倡的一些原则,像内容和显示互相分离可能比较好理解。但是如果你要隔离模型像内容和显示互相分离可能比较好

25、理解。但是如果你要隔离模型、视图和控制器的构件,你可能需要重新思考你的应用程序,尤、视图和控制器的构件,你可能需要重新思考你的应用程序,尤其是应用程序的构架方面。如果你肯接受其是应用程序的构架方面。如果你肯接受MVC,并且有能力应付,并且有能力应付它所带来的额外的工作和复杂性,它所带来的额外的工作和复杂性,MVC将会使你的软件在健壮性将会使你的软件在健壮性,代码重用和结构方面上一个新的台阶。,代码重用和结构方面上一个新的台阶。 10.2 MVC编程思想vMVC的例子的例子servlet.java(MVC中的中的C) package zz; import java.io.*; import ja

26、vax.servlet.*; import javax.servlet.http.*; public class servlet extends HttpServlet public voiddoGet(HttpServletRequest request, HttpServletResponse response)throws ServletException,IOException HttpSession session=request.getSession(); NameBean nameBean=new NameBean(); String name=request.getParame

27、ter(name); nameBean.setname(name); session.setAttribute(nameBean,nameBean); String add=/WEB-INF/classes/ShowName.jsp; RequestDispatcher dispatcher=request.getRequestDispatcher(add); dispatcher.forward(request,response); 10.2 MVC编程思想vMVC的例子的例子NameBean.java(MVC中的中的M) package zz; public class NameBean

28、private String name; public NameBean() public NameBean(String name) setname(name); public String getname() return name; public void setname(String name) =name; 10.2 MVC编程思想10.2 MVC编程思想vMVC的例子的例子ShowName.jsp(MVC中的中的V) 10.3 struts概述与举例 vStruts 1 简介及存在的问题 vWebWork简介 vStruts2框架处理流程 vStruts2和Str

29、uts1的对比vStruts2框架开发应用的过程 vStruts2编写Action vStruts2配置Action vStruts2下的helloworld 10.3 struts概述与举例vStruts 1 简介及存在的问题1.Model部分部分模型主要由底层的业务逻辑组件充当,它们提供数据库访问和业务逻辑的实模型主要由底层的业务逻辑组件充当,它们提供数据库访问和业务逻辑的实现。可以是现。可以是javaBean、EJB组件或者组件或者WebService服务服务,struts1没有为实没有为实现现Model组件提供任何支持组件提供任何支持2.View部分部分采用采用JSP实现,实现,Str

30、uts1提供了丰富的标签库,减少提供了丰富的标签库,减少JSP脚本的使用脚本的使用3. Controller由核心控制核心控制器由核心控制核心控制器-ActionServlet和用户自定义和用户自定义Action组合,由组合,由struts1框架提供支持框架提供支持缺陷缺陷1. 支持表现层技术单一支持表现层技术单一只支持只支持JSP,不提供与其它表现层技术整合,如,不提供与其它表现层技术整合,如FreeMarker Velocity2.与与Servlet Api 严重耦合,难于测试严重耦合,难于测试Action类包括类包括HtttpServletRequest、HttpServletRespo

31、nse3.代码严重依赖于代码严重依赖于Struts1 Api,属于侵入式设计,属于侵入式设计Aciton类必须继承类必须继承Action的基类的基类10.3 struts概述与举例vWebWork简介struts2是是webwork的升级,的升级,webwork到到struts2是一次是一次平滑的过渡平滑的过渡。它来自另一个开源组织:它来自另一个开源组织:opensymphony(交响乐交响乐)1.View它支持更多的表现层技术:它支持更多的表现层技术:velocity、freeMarker和和xslt等等2.Controller提供核心控制器提供核心控制器ServletDispatcher业

32、务逻辑业务逻辑Action:,无需与,无需与servlet api耦合,由耦合,由Action拦拦截器负责数据初始化截器负责数据初始化,它只是一个普通的实现了它只是一个普通的实现了webwork Action接口的接口的POJO(包含了一个包含了一个execute方方法法)10.3 struts概述与举例vStruts2框架处理流程 10.3 struts概述与举例vStruts2框架处理流程 1.用户请求用户请求2.核心控制器核心控制器FilterDispatcher根据请求决定调根据请求决定调用的用的Action3.struts2拦截器链自动对请求应用通用功能拦截器链自动对请求应用通用功能

33、4.回调回调Action的的execute方法方法5.execute方法返回处理结果方法返回处理结果10.3 struts概述与举例vstruts2和struts1的对比1、Action类类struts1要继承一个抽象基类要继承一个抽象基类,属于抽象类编程而不是接口;属于抽象类编程而不是接口;struts2中中Action实现接口实现接口是不必需的,只要一个包含是不必需的,只要一个包含execute的的POJO类就要以作类就要以作struts2的的Action2、线程模式、线程模式struts1的的Action是单例模式并且必须是线程安全的,它用一个是单例模式并且必须是线程安全的,它用一个Ac

34、tion实例处理所有实例处理所有的请求;的请求;Struts2为每一个请求产生一个实例,没有线程安全的问题为每一个请求产生一个实例,没有线程安全的问题3、Servlet依赖依赖struts1的的Action严重依赖严重依赖Servlet Api,使得测试要依赖,使得测试要依赖web容器容器4、封装请求参数、封装请求参数struts1使用使用ActionForm对象封装用户请求参数,虽然支持使用动态的对象封装用户请求参数,虽然支持使用动态的ActionForm来简化来简化ActionForm开发,但依然要在配置文件中定义开发,但依然要在配置文件中定义ActionForm;struts2可以可以直

35、接使用直接使用Action的属性来封装用户请求参数,也可以使用的属性来封装用户请求参数,也可以使用Model对象来封装请求对象来封装请求参数,参数,Model却只是一个却只是一个POJO5、执行控制、执行控制struts1一个模块对应一个请求,一个模块对应一个请求,Action的资源必须是线程安全的,模块中的的资源必须是线程安全的,模块中的Action共享相同的生命周期;共享相同的生命周期;struts2支持通过拦截器堆栈为每一个支持通过拦截器堆栈为每一个Action创建不同的生创建不同的生命周期命周期(Action不是单例的不是单例的)6、表达式语言、表达式语言struts1整合了整合了JS

36、TL,可以使用,可以使用JSTL表达式语言。表达式语言。struts2可以使用可以使用JSTL,还整合了,还整合了一种更强大和灵活的语言:一种更强大和灵活的语言:OGNL(object graph notation languae) 10.3 struts概述与举例vStruts2框架开发应用的过程第一步:创建第一步:创建Web工程工程第二步:引入第二步:引入Struts的类库,核心的类库有的类库,核心的类库有ognl.jar、freemarker.jar、struts2-core.jar、webwork.jar,common-logging,这些类库最终都应该在,这些类库最终都应该在web-

37、inf/lib下面。下面。第三步:在第三步:在web.xml中声明中心控制器。中声明中心控制器。 struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /* 通过这样的配置,所有的请求都会发送给中心控制器。通过这样的配置,所有的请求都会发送给中心控制器。第四步:在工程中创建第四步:在工程中创建struts2的配置文件的配置文件struts.xml。配置我们编写的每个。配置我们编写的每个Action,还,还有请求与有请求与Action对应关系,执行结果(字符串)与响应界面的对应关系。一般从其他地方拷贝,对应关系,执行结果(字

38、符串)与响应界面的对应关系。一般从其他地方拷贝,不要自己写。不要自己写。第五步:编写第五步:编写Action,配置,配置Action。在开发过程中主要是这一步。在开发过程中主要是这一步。10.3 struts概述与举例vStruts2编写ActionAction类可以是普通的类,可以是实现类可以是普通的类,可以是实现Action接口的类接口的类,可以是继承,可以是继承ActionSupport的类。的类。Action接口是接口是execute方法和几个常量,通常不使用。方法和几个常量,通常不使用。ActionSupport实现了实现了Action接口,并且封装了对国接口,并且封装了对国际化和验

39、证的支持,如果项目需要使用验证和国际化际化和验证的支持,如果项目需要使用验证和国际化等功能,可以继承该类。等功能,可以继承该类。Action类中的方法(控制方法),方法的返回值是字符类中的方法(控制方法),方法的返回值是字符串,是逻辑名字,表示某个输出界面。方法没有参数串,是逻辑名字,表示某个输出界面。方法没有参数。对应每个请求都应该有这样一个方法。对应每个请求都应该有这样一个方法。为了获取输入信息,需要定义与输入元素名字相同的成为了获取输入信息,需要定义与输入元素名字相同的成员变量,并提供员变量,并提供set方法。为了输出,需要编写成员变方法。为了输出,需要编写成员变量来表示这些输出信息(在

40、控制方法中对成员变量赋量来表示这些输出信息(在控制方法中对成员变量赋值),并提供值),并提供get方法供框架调用。方法供框架调用。10.3 struts概述与举例vStruts2配置Action在在struts.xml中配置。主要包括两部分:请求与具体的中配置。主要包括两部分:请求与具体的Action的方的方法的对应关系;法的对应关系;Action中的控制方法返回的字符串与具体的响应中的控制方法返回的字符串与具体的响应界面的对应关系。界面的对应关系。请求与请求与Action方法的对应关系:方法的对应关系:name指出请求的名字,指出请求的名字,class指出指出Action类的名字,类的名字,

41、method指出指出方法的名字方法的名字 如果没有指定如果没有指定method方法,默认找方法,默认找Action中的中的execute方法方法也可以在请求中指定方法的名字也可以在请求中指定方法的名字login!login.action,“!”之前是请求的名字,之前是请求的名字,“!”之后是方法的名之后是方法的名字,这样在配置的时候就可以不指定方法的名字。字,这样在配置的时候就可以不指定方法的名字。执行结果的配置:执行结果的配置:/success.jsp10.3 struts概述与举例vStruts2下的helloworld使用:使用:JDK 1.5.0_17 + eclipse-jee-eu

42、ropa-winter-win32 + Tomcat 5.5 + struts-2.0.14-ga 下是下是Struts2 Hello World实例的文件内容。在实例的文件内容。在eclipse中新建一个动态中新建一个动态Web工程,命名为工程,命名为hello。 10.3 struts概述与举例 (HelloWorld.java) package tutorial;/ 导入创建一个导入创建一个Struts2 action必须扩展的一个类必须扩展的一个类import com.opensymphony.xwork2.ActionSupport;/* * 创建一个创建一个action HelloWorld * 创建一个创建一个Stru

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论