您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > Struts 培训教程
Struts培训教程1概述在这份教程中,我将介绍struts框架和与struts框架有关的技术。该教程主要分为以下几部分:MVC模式Struts的概念和体系结构Struts中主要技术的介绍用jBuilder8开发struts应用程序2MVC模式所谓的MVC模式,即模型—视图—控制器(model—view--controller)模式。其结构图如下:Model端在MVC中,模型是执行某些任务的代码,而这部分代码并没有任何逻辑决定它对用户端的表示方法。Model只有纯粹的功能性接口,也就是一系列的公开方法,通过这些公开方法,便可以取得模型端的所有功能。在struts框架中,Model端是用Action和EJB技术实现的。View端在MVC模式里,一个Model可以有几个View端,而实际上复数的View端是使用MVC的原始动机。使用MVC模式可以允许多于一个的View端存在,并可以在需要的时候动态的登记上所需要的View.Controller端MVC模式的视图端是与MVC的控制器结合使用的。当用户端与相应的视图发生交互时,用户可以通过视窗更新模型的状态,而这种更新是通过控制器端进行的。控制器端通过调用模型端的方法更改其状态值。与此同时,控制ViewModelController器端会通知所有的登记了的视图刷新显示给用户的表示。在现在的j2ee应用中,我们在开发webserver时基本上都是采用MVC模式来开发的,j2ee规范也相应的为我们提供了技术支持,请看下图:1235471浏览器用户执行servlet的doGet方法;2servlet根据不同的请求,将他们分发到不同的Action中。在这里,servlet的作用就好比是controller;3Action调用EJB层的商务逻辑程序处理用户的请求;4EJB层返回给Action处理结果;5Action对将处理结果返回给servlet。在这里,可以将Action和EJB共同看成是model6servlet将信息发送给JSP页面。这里的JSP就相当于view;7browser用户浏览JSP页面;大家可以看到,JSP、servlet和EJB各自在MVC模式中所起到的作用。使用MVC的优点如下:可靠性(Reliability):将表示层和处理层完全分开,可以在不重新编译model和controller的情况下修改view层。复用性和适应性(reuse&adaptability):MVC使你可以使用多种view去访问相同的model。快速开发(Rapiddeployment):因为MVC清晰的将表示层和处理层分开,所以使得不同的程序员可以各司其则,增加开发速度。可维护性(Maintainability):清晰的分层同样使得代码清晰、程序的可维护性提高。3Struts的概念和体系结构概述struts源自于apache的jakarta工程,是一个开源代码工程()。现在struts最新的版本是1.2,而jBuilder自带的版本是1.02。struts是一个完全遵照MVC模型设计的,web层的框架。struts与MVC模式struts是一个完全遵照MVC模型设计的,web层的框架。在struts中,使用到了jsp、BrowserWebServer265EJBServerServletJSPActionjavabean、taglib和servlet技术。下图是一个描述了struts框架的应用请求的执行路径:这个过程大体可以被分成5个基本步骤:1view发起一个请求2ActionServlet(servlet技术实现)接受这个请求,它根据一份xml文件来得到处理这个请求的Action对象,并将请求发送给这个Action对象。3Action对象接受这个请求,并调用model(EJB)去处理这个请求,并将处理结果返回给ActionServlet。4ActionServlet根据Action的返回结果中的信息,决定将处理结果返回给对应的view。5view得到处理结果,并将他显示给用户。3.1THEMODELStruts框架提供Action作为model的一种实现。Action是继承org.apache.struts.action.Action的类,他用来处理用户的请求,并将处理结果封装在HttpServletRequest中,返回给ActionServlet。3.2THEVIEWStruts用JSP、taglib和javabean技术去实现view。JSP用来显示视图;struts通过使用自己定义的一组taglib来控制请求的流程、辅助处理结果的显示;javabean用来保存用户在JSP页面中的输入数据,他用来方便的向Action传递用户输入数据。3.3THECONTROLLERStruts用org.apache.struts.action.ActionServlet去实现controller的功能。这个servlet接收所有JSP页面发送的请求,根据一份配置文件得到处理相应用户请求的Action,并调用Action去处理用户的请求。当Action处理结束后,ActionServlet接受处理结果,并根据同样的配置文件将处理结果发送当相应的JSP页面。4Struts主要技术介绍4.1相关技术学习Struts,首先要了解一下以下相关技术。(有些部分只提供相关的资料链接,不做讲解)。4.1.1JavaBeans大多数JavaBeans是由JavaBeans来编写的.TheJavaBeansComponentArchitectureDocumentationpageatjava.sun.com,includingalinktodownloadtheJavaBeans1.01SpecificationTheJavaBeanTrailintheJavaTutorialJavaBeansComponentsinJSPPagesintheJavaWebServicesTutorial4.1.2反射和内省反射机制是一种决定一个对象哪些成员域和成员方法被采用的过程。内省技术是反射机制的一种特殊机制,Structs使用内省技术转换HTTP参数为JavaBean的属性,读取JavaBean属性装配HTML字段。TheReflectionTrailChapter8oftheJavaBeansAPISpecification4.1.3属性文件和ResourceBundles4.1.3.1属性文件属性文件主要用来设置程序属性,属性文件的后缀名为.properties,属性文件的格式类似于以下内容:book=mycomputerbookpages=120authors=zhfseminar=124.1.3.2使用属性文件java.util包中Properties类用来管理一个Key/value对,Properties类提供了以下方法:load()方法:Loadingkey/valuepairsintoaPropertiesobjectformaStream从一个输入流中加载getProperty()方法:Retrievingavaluefromitskey通过关键字来获得值list()方法:Listingthekeysandtheirvalues列举Save()方法:Savingthepropertiestoastream保存属性具体例子如下importjava.util.*;importjava.io.*;publicclassuseProperties{publicstaticvoidmain(String[]args){try{PropertiesdefaultProps=newProperties();FileInputStreamfile=newFileInputStream(test.properties);defaultProps.load(file);file.close();defaultProps.list(System.out);System.out.println(getProperty(Stringkey,Stringdefault)=+defaultProps.getProperty(book));FileOutputStreamout=newFileOutputStream(appProperties);defaultProps.store(out,-----nocomment--);out.close();}catch(Exceptione){e.printStackTrace();}}}4.1.3.3使用本地化数据使用本地化数据,需要建立多个属性文件,假设我们系统中需要支持德文和法文,我们的默认属性文件为LabelsBundle.properties文件,那么我们需要建立德文和法文所对应的属性文件:LabelBundle_de.propertiesLabelBundle_fr.properties#LabelsBundle.properties内容s1=computers2=disks3=monitors4=keyboard#LabelsBundle_de.properties内容s1=Computers2=Plattes3=Monitors4=Tastatur#LabelsBundle_fr.properties内容s1=Computerfrs2=Plattefrs3=Monitorfrs4=Tastaturfr4.1.3.4ResoureBundle和Locale通过ResourceBundle结合Locale对象可以选择属性文件:下面我们给一个具体的例子importjava.util.*;importjava.io.*;publicclassResourceBundleDemo{publicstaticvoidmain(String[]args){//采用了德国设置LocalecurrentLocal=Locale.GERMAN;ResourceBundlelabels=ResourceBundle.getBundle(LabelsBundle,currentLocal);StringmyValue=labels.getString(s2);System.out.println(Local=GERMAN;S2=+myValue);//采用了法国设置currentLocal=Locale.FRENCH;labels=ResourceBundle.getBundle(LabelsBundle,currentLocal);myValue=labels.getString(s2);System.out.println(Local=FRENCH;S2=+myValue);}}更多的内容可以查看:UsingPropertiestoManageProgramAttributesinTheJavaTutorialAbouttheResourceBundleClassintheJavaTutorial4.1.4JSP和JSP标签库Jsp中提供了一些标准的标签:useBean,setProperty/getProperty,include,forward,plugin。使用例子如:jsp:useBeanid=”bookname”scope=”page”class=”test.book”/这些标准的标签,为操作JavaBean和相应请求等提供便利,除此之外,JSP技术允许我们自己封装特有的标签,来简化应用程序开发。有经验的开发者可以利用标签处理表单,访问数据库或其他企业服务(如e-mail或目录服务等)。4.1.4.1标签的主要技术可以在JSP页面中设置标签的参数。可以访问JSP页面中所有的对象。可以获得JSP页面的Response对象。标签之间互相通讯。标签可以被嵌套,实现标签的多层使用。4.1.4.2
本文标题:Struts 培训教程
链接地址:https://www.777doc.com/doc-960549 .html