Struts培训教程Word下载.docx

上传人:b****6 文档编号:17303117 上传时间:2022-12-01 格式:DOCX 页数:27 大小:667.60KB
下载 相关 举报
Struts培训教程Word下载.docx_第1页
第1页 / 共27页
Struts培训教程Word下载.docx_第2页
第2页 / 共27页
Struts培训教程Word下载.docx_第3页
第3页 / 共27页
Struts培训教程Word下载.docx_第4页
第4页 / 共27页
Struts培训教程Word下载.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

Struts培训教程Word下载.docx

《Struts培训教程Word下载.docx》由会员分享,可在线阅读,更多相关《Struts培训教程Word下载.docx(27页珍藏版)》请在冰豆网上搜索。

Struts培训教程Word下载.docx

应用MVC的长处如下:

▪靠得住性(Reliability):

将表示层和处理层完全分开,可以在不从新编译model和controller的情况下修改view层。

▪复用性和适应性(reuse&

adaptability):

MVC使你可以应用多种view去拜访雷同的model。

▪快速开辟(Rapiddeployment):

因为MVC清楚的将表示层和处理层分开,所以使得不合的法度榜样员可以各司其则,增长开辟速度。

▪可保护性(Maintainability):

清楚的分层同样使得代码清楚、法度榜样的可保护性进步。

3Struts的概念和体系构造

▪概述

▪struts与MVC模式

struts是一个完全遵守MVC模型设计的,web层的框架。

在struts中,应用到了jsp、javabean、taglib和servlet技巧。

下图是一个描述了struts框架的应用请求的履行路径:

这个过程大年夜体可以被分成5个根本步调:

1view提议一个请求

2ActionServlet(servlet技巧实现)接收这个请求,它根据一份xml文件来得到处理这个请求的Action对象,并将请求发送给这个Action对象。

3Action对象接收这个请求,并调用model(EJB)去处理这个请求,并将处理成果返回给ActionServlet。

4ActionServlet根据Action的返回成果中的信息,决定将处理成果返回给对应的view。

5view得到处理成果,并将他显示给用户。

3.1THEMODEL

3.2THEVIEW

Struts用JSP、taglib和javabean技巧去实现view。

JSP用来显示视图;

struts经由过程应用本身定义的一组taglib来控制请求的流程、帮助处理成果的显示;

javabean用来保存用户在JSP页面中的输入数据,他用来便利的向Action传递用户输入数据。

3.3THECONTROLLER

Struts用org.apache.struts.action.ActionServlet去实现controller的功能。

这个servlet接收所有JSP页面发送的请求,根据一份设备文件得到处理响应用户请求的Action,并调用Action去处理用户的请求。

当Action处理停止后,ActionServlet接收处理成果,并根据同样的设备文件将处理成果发送当响应的JSP页面。

4Struts重要技巧介绍

4.1相干技巧

进修Struts,起重要懂得一下以下相干技巧。

(有些部分只供给相干的材料链接,不做讲解)。

4.1.1JavaBeans

大年夜多半JavaBeans是由JavaBeans来编写的.

4.1.2反射和内省

4.1.3属性文件和ResourceBundles

4.1.3.1属性文件

属性文件重要用来设置法度榜样属性,属性文件的后缀名为.properties,属性文件的格局类似于以下内容:

book=mycomputerbook

pages=120

authors=zhf

seminar=12

4.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.properties

LabelBundle_fr.properties

#LabelsBundle.properties内容

s1=computer

s2=disk

s3=monitor

s4=keyboard

#LabelsBundle_de.properties内容

s1=Computer

s2=Platte

s3=Monitor

s4=Tastatur

#LabelsBundle_fr.properties内容

s1=Computerfr

s2=Plattefr

s3=Monitorfr

s4=Tastaturfr

4.1.3.4ResoureBundle和Locale                                  

经由过程ResourceBundle结合Locale对象可以选择属性文件:

下面我们给一个具体的例子

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("

myValue=labels.getString("

Local=FRENCH;

更多的内容可以查看:

4.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标签的应用

为了可以或许在jsp页面中应用一个标签,我们须要变现一个实现了TagSupport类的java法度榜样,然后经由过程tld文件,定义该标签的属性,然后经由过程web.xml声明这个tld文件,最后才可以在JSP页面中应用标签的。

下面我照样根据例子来简单讲一下

具体代码下src/taguse目次下。

4.1.4.2.1定制标签类

packagecom.zhfelva.tag;

importjavax.servlet.jsp.*;

importjavax.servlet.jsp.tagext.*;

/**

*一个显示当前时光的标签

*/

publicclassCurrentTimeTagextendsTagSupport{

publicintdoStartTag(){

try{

JspWriterout=pageContext.getOut();

java.util.Datedt=newjava.util.Date(System.currentTimeMillis());

out.print(dt.getHours()+"

:

"

+dt.getMinutes()+"

+dt.getSeconds());

}catch(IOExceptionioe){

System.out.println("

ErrorinCurrentTimeTag:

"

+ioe);

return(SKIP_BODY);

4.1.4.2.2编写标签定义文件

放于\WEB-INF\taglib\mytaglib.tld

?

xmlversion="

1.0"

encoding="

ISO-8859-1"

?

>

!

DOCTYPEtaglibPUBLIC"

-//SunMicrosystems,Inc.//DTDJSPTagLibrary1.1//EN"

--ataglibrarydescriptor-->

taglib>

<

tlibversion>

1.0<

/tlibversion>

jspversion>

1.1<

/jspversion>

shortname>

currenttime<

/shortname>

uri>

/uri>

info>

Ataglibraryforshowcurrenttime

/info>

<

tag>

name>

CurrentTime<

/name>

tagclass>

com.zhfelva.tag.CurrentTimeTag<

/tagclass>

bodycontent>

EMPTY<

/bodycontent>

showcurrenttime<

/tag>

/taglib>

4.1.4.2.3在web.xml中进行设备

一个网页应用法度榜样要在web.xml中声明他要应用的标签库:

gb2312"

DOCTYPEweb-appPUBLIC"

-//SunMicrosystems,Inc.//DTDWebApplication2.3//EN"

web-app>

taglib-uri>

my-taglib

/taglib-uri>

taglib-location>

/WEB-INF/taglib/mytaglib.tld

/taglib-location>

/web-app>

4.1.4.2.4简单标签的应用

以上设备做好之后,就可以在JSP页面中应用标签了:

currenttime.jsp

%@pagecontentType="

text/html;

charset=gb2312"

%>

%@tagliburi="

my-taglib"

prefix="

mytag"

HTML>

HEAD>

TITLE>

显示当前时光-JSP/TagLib<

/TITLE>

/HEAD>

BODY>

H1>

/H1>

mytag:

CurrentTime/>

/BODY>

/HTML>

Struts中真正将标签库应用了起来,大年夜家可以从中看到标签库的强大年夜功能。

4.1.5XML相干技巧

这里,相干的内容异常多,并且很重要,信赖大年夜家也都熟悉XML技巧,因为时光关系,这里就不做讲述了。

4.2重要技巧

4.2.1Struts体系构造

视图:

重要由JSP生成页面完成视图,Struts供给丰富的JSP标签库:

Html,Bean,Logic,Template等,这有利于分开表示逻辑和法度榜样逻辑。

模型:

模型以一个或多个javabean的情势存在。

这些bean分为三类:

ActionForm、Action、JavaBeanorEJB。

ActionForm平日称之为FormBean,封装了来自于Client的用户请求信息,如表单信息。

Action平日称之为ActionBean,获取从ActionSevlet传来的FormBean,掏出FormBean中的相干信息,并做出相干的处理,一般是调用JavaBean或EJB等。

流程:

在Struts中,用户的请求一般以*.do作为请求办事名,所有的*.do请求均被指向ActionSevlet,ActionSevlet根据Struts-config.xml中的设备信息,将用户请求封装成一个指定名称的FormBean,并将此FormBean传至指定名称的ActionBean,由ActionBean完成响应的营业操作,如文件操作,数据库操作等。

每一个*.do均有对应的FormBean名称和ActionBean名称,这些在Struts-config.xml中设备。

4.2.2Struts的根本组件包

全部struts大年夜约有15包,近200个类所构成,并且数量还在赓续的扩大。

在此我们不克不及一一介绍,只能列举几个重要的扼要的介绍一下。

下表说清楚明了今朝strutsapi中根本的几个组件包,包含action,actions,taglib。

图片(5)则浮现了这几个组件包之间的关系。

个中action是全部strutsframework的核心

org.apache.struts.action

根本上,控制全部strutsframework的运行的核心类、组件都在这个包中,比如我们上面提到的控制器ActionServlet,Action,ActionForm,ActionMapping等等。

struts1.1比1.0多了DynaActionForm类。

增长了动态扩大生成FormBean功能

org.apache.struts.actions

org.apache.struts.taglib

这不是一个包,而是是一个客户标签类的集合。

下面包含BeanTags,HTMLTags,LogicTags,NestedTags,TemplateTags这几个用于构建用户界面的标签类。

对于Struts若何控制、处理客户请求,让我们经由过程对struts的四个核心组件介绍来具体解释。

这几个组件就是:

ActionServlet。

ActionClasses,ActionMapping(此处包含ActionForward),ActionFromBean。

4.2.3StrutsActionServlet

当用户向办事器端提交请求的时刻,实际上信息是起首发送到控制器ActionServlet,一旦控制器获得了请求,其就会将请求信息传交给一些帮助类(helpclasses)处理。

这些帮助类知道若何去处理与请求信息所对应的营业操作。

在Struts中,这个帮助类就是org.apache.struts.action.Action。

平日开辟者须要本身持续Aciton类,从而实现本身的Action实例。

4.2.4StrutsActionClasses

Action类所作的工作,正如它的名称一样,就是具体的营业操作。

Action类中最为常用的是execute()办法。

当Controller收到客户的请求的时刻,就会将请求转移到一个Action实例,然后会调用这个Action实例的execute()办法。

StrutsFramework为应用体系中的每一个Action类只创建一个实例。

所有的用户都应用这一个实例,Action类运行在一个多线程的情况中。

留意,客户本身持续的Action子类,必须重写execute()办法,因为Action类在默认情况下是返回null的。

4.2.5StrutsActionMapping

上面讲到了一个客户请求是若何被控制器转发和处理的,然则,控制器若何知道什么样的信息转发到什么样的Action类呢?

这就须要一些与动作和请求信息相对应的映射设备解释。

在struts中,这些设备映射信息是存储在特定的XML文件(struts-config.xml)。

这些设备信息在体系启动的时刻被读入内存,供strutsframework在运行时代应用。

在内存中,每一个<

action>

元素都与org.apache.struts.action.ActionMapping类的一个实例对应。

下表就显示了一个上岸的设备映射。

Path:

这个属性用来和JSP页面中,调用<

html:

form>

时的action属性相对应,它将JSP页面和处理这个JSP页面的Action对象对应起来。

Type:

对应的Action子类的完全类名。

Name:

对应的ActionForm的名称。

他与下面将描述的<

form-bean>

元素的name属性响应。

Scope:

这个属性表示相对应的ActionFormbean的scope属性。

它的值可所以“page”、“request”、“session”和“application”。

分别对应javabean的“page”、“request”、“session”和“application”属性。

Input:

这个属性表示假如对应的ActionForm的validate办法返回值的ActionErrors非空,即ActionForm的属性没有经由过程校验,则跳转到当前的页面。

Validate:

是否调用FormBean的validate()办法来验证,封闭它之后就不会报掉足误信

息了。

True表示须要调用validate办法;

false表示不须要调用validate办法。

forward:

定义可能的跳转路径。

Name属性表示Action类的execute办法中,生成的返回成果时的参数;

path表示将要跳转到的页面的路径。

上面的设备表示:

当可以经由过程/logonAction.do提交请求信息的时刻,控制器将信息委托com.test.LogonAction处理。

调用LogonAction实例的execute()办法。

同时将Mapping实例和所对应的LogonFormBean信息传入。

个中name=LogonForm,应用的form-bean元素所声明的ActionFormBean。

有关form-bean的声明如下显示。

有两个属性:

name:

这个ActionForm的名字,他与被JSP页面中的<

HTML:

元素的name属性应当是雷同的。

比如,假如在一个JSP页面中须要生成一个ActionForm对象,这个对象的名字(就是name属性)是“LoginForm”,则JSP页面中的<

元素的name属性也应当是“LoginForm”。

 Type :

这个ActionForm对象的完全类名。

这个属性和JSP页面中的<

元素的type属性是相对应的。

在此稍稍说一下有关global-forw

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 电大

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1