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