《2020(培训体系)S培训教程》由会员分享,可在线阅读,更多相关《2020(培训体系)S培训教程(39页珍藏版)》请在金锄头文库上搜索。
1、Struts 培训教程1 概述在这份教程中,我将介绍struts框架和与struts框架有关的技术。该教程主要分为以下几部分: MVC模式 Struts的概念和体系结构 Struts中主要技术的介绍 用jBuilder8开发struts应用程序2 MVC模式所谓的MVC模式,即 模型视图控制器(modelview-controller)模式。其结构图如下:ViewController Model端在MVC中,模型是执行某些任务的代码,而这部分代码并没有任何逻辑决定它对用户端的表示方法。Model只有纯粹的功能性接口,也就是一系列的公开方法,通过这些公开方法,便可以取得模型端的所有功能。在str
2、uts框架中,Model端是用Action和EJB技术实现的。 View端在MVC模式里,一个Model可以有几个View端,而实际上复数的View端是使用MVC的原始动机。使用MVC模式可以允许多于一个的View端存在,并可以在需要的时候动态的登记上所需要的View. Controller端MVC模式的视图端是与MVC的控制器结合使用的。当用户端与相应的视图发生交互时,用户可以通过视窗更新模型的状态,而这种更新是通过控制器端进行的。控制器端通过调用模型端的方法更改其状态值。与此同时,控制器端会通知所有的登记了的视图刷新显示给用户的表示。在现在的j2ee应用中,我们在开发web server时
3、基本上都是采用MVC模式来开发的,j2ee规范也相应的为我们提供了技术支持,请看下图:BrowserEJB Server 1 2 3 5 4JSP 7 1 浏览器用户执行servlet的doGet方法; 2 servlet根据不同的请求,将他们分发到不同的Action中。在这里,servlet的作用就好比是controller; 3 Action调用EJB层的商务逻辑程序处理用户的请求; 4 EJB层返回给Action处理结果; 5 Action 对将处理结果返回给servlet。在这里,可以将Action 和 EJB共同看成是model 6 servlet将信息发送给JSP页面。这里的JSP
4、就相当于view; 7 browser用户浏览JSP页面;大家可以看到,JSP、servlet和EJB各自在MVC模式中所起到的作用。使用MVC的优点如下: 可靠性(Reliability):将表示层和处理层完全分开,可以在不重新编译model和controller的情况下修改view层。 复用性和适应性(reuse & adaptability):MVC使你可以使用多种view去访问相同的model。 快速开发(Rapid deployment):因为MVC清晰的将表示层和处理层分开,所以使得不同的程序员可以各司其则,增加开发速度。 可维护性(Maintainability):清晰的分层同样
5、使得代码清晰、程序的可维护性提高。3 Struts的概念和体系结构 概述 struts源自于apache的jakarta工程,是一个开源代码工程(http:/jakarta.apache.org/)。现在struts最新的版本是1.2,而jBuilder自带的版本是1.02。struts是一个完全遵照MVC模型设计的,web层的框架。 struts与MVC模式 struts是一个完全遵照MVC模型设计的,web层的框架。在struts中,使用到了jsp、javabean、taglib和servlet技术。下图是一个描述了struts框架的应用请求的执行路径:这个过程大体可以被分成5个基本步骤:
6、 1 view发起一个请求2 ActionServlet(servlet技术实现)接受这个请求,它根据一份xml文件来得到处理这个请求的Action对象,并将请求发送给这个Action对象。3 Action对象接受这个请求,并调用model(EJB)去处理这个请求,并将处理结果返回给ActionServlet。4 ActionServlet根据Action 的返回结果中的信息,决定将处理结果返回给对应的view。5 view得到处理结果,并将他显示给用户。3.1 THE MODELStruts框架提供Action作为model的一种实现。Action 是继承org.apache.struts.
7、action. Action的类,他用来处理用户的请求,并将处理结果封装在HttpServletRequest中,返回给ActionServlet。3.2 THE VIEW Struts用JSP、taglib和javabean技术去实现view。JSP用来显示视图;struts通过使用自己定义的一组taglib来控制请求的流程、辅助处理结果的显示;javabean用来保存用户在JSP页面中的输入数据,他用来方便的向Action传递用户输入数据。3.3 THE CONTROLLER Struts用org.apache.struts.action.ActionServlet去实现controlle
8、r的功能。这个servlet接收所有JSP页面发送的请求,根据一份配置文件得到处理相应用户请求的Action,并调用Action去处理用户的请求。当Action处理结束后,ActionServlet接受处理结果,并根据同样的配置文件将处理结果发送当相应的JSP页面。4 Struts主要技术介绍4.1 相关技术学习Struts,首先要了解一下以下相关技术。(有些部分只提供相关的资料链接,不做讲解)。4.1.1 JavaBeans大多数JavaBeans是由JavaBeans来编写的. The JavaBeans Component Architecture Documentation page
9、at , including a link to download the JavaBeans 1.01 Specification The JavaBean Trail in the Java Tutorial JavaBeans Components in JSP Pages in the Java Web Services Tutorial 4.1.2 反射和内省反射机制是一种决定一个对象哪些成员域和成员方法被采用的过程。内省技术是反射机制的一种特殊机制,Structs使用内省技术转换HTTP参数为JavaBean的属性,读取JavaBean属性装配HTML字段。 The Reflect
10、ion Trail Chapter 8 of the JavaBeans API Specification 4.1.3 属性文件和ResourceBundles4.1.3.1 属性文件属性文件主要用来设置程序属性,属性文件的后缀名为.properties,属性文件的格式类似于以下内容:book=my computer book pages=120authors=zhfseminar=124.1.3.2 使用属性文件java.util包中Properties类用来管理一个Key/value对,Properties类提供了以下方法:load()方法:Loading key/value pairs
11、 into a Properties object form a Stream 从一个输入流中加载getProperty()方法:Retrieving a value from its key 通过关键字来获得值list()方法:Listing the keys and their values 列举Save()方法:Saving the properties to a stream 保存属性具体例子如下import java.util.*;import java.io.*;public class useProperties public static void main(String ar
12、gs)tryProperties defaultProps=new Properties(); FileInputStream file=new FileInputStream(test.properties);defaultProps.load(file); file.close();defaultProps.list(System.out); System.out.println(getProperty(String key,Stringdefault)= +defaultProps.getProperty(book);FileOutputStream out=new FileOutput
13、Stream(appProperties); defaultProps.store(out,-no comment-); out.close();catch(Exception e)e.printStackTrace();4.1.3.3 使用本地化数据使用本地化数据,需要建立多个属性文件,假设我们系统中需要支持德文和法文,我们的默认属性文件为LabelsBundle.properties文件,那么我们需要建立德文和法文所对应的属性文件:LabelBundle_de.propertiesLabelBundle_fr.properties# LabelsBundle.properties 内容s1
14、 = computers2 = disks3 = monitors4 = keyboard# LabelsBundle_de.properties内容s1 = Computers2 = Plattes3 = Monitors4 = Tastatur# LabelsBundle_fr.properties内容s1 = Computerfrs2 = Plattefrs3 = Monitorfrs4 = Tastaturfr4.1.3.4 ResoureBundle和Locale通过ResourceBundle结合Locale对象可以选择属性文件:下面我们给一个具体的例子import java.util.*;import java.io.*;public class ResourceBundleDemo public static