《第4讲 Struts2的基本用法-2.ppt》由会员分享,可在线阅读,更多相关《第4讲 Struts2的基本用法-2.ppt(91页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第4讲讲 Struts2的基本用法的基本用法-2掌握掌握Struts2的配置文件的配置文件掌掌握握Struts2中中Action的配置及使用的配置及使用会会使用使用Struts2的国际化的国际化掌掌握握Struts2的标签库的标签库课程目标课程目标目目 录录1Struts2的常规配置的常规配置2实现实现Action接口接口3配置配置Action4配置处理结果配置处理结果5配置配置Struts2的异常处理的异常处理6Convention插件与插件与“约定约定”支持支持7使用使用Struts2的国际化的国际化8使用使用Struts2的标签库的标签库9本讲小结本讲小结Struts2Struts2的
2、常量配置的常量配置使用使用struts.properties文件来管理常量文件来管理常量该该文件包含了系列的文件包含了系列的key-value对对注注意意struts.properties文件的路径文件的路径通通常放在常放在web应用的应用的WEB-INF/classes下下常常用的常量介绍用的常量介绍Struts.i18n.encodingStruts.ui.theme其他常量其他常量3Struts2Struts2的常量配置的常量配置Struts2配置常量总共有三种方式配置常量总共有三种方式:通过struts.properties文件文件通过struts.xml文件文件通过Web应用的应用的
3、web.xml文件文件Struts2框架按照如下搜索顺序加载常量框架按照如下搜索顺序加载常量struts-default.xmlstruts-plugin.xmlstruts.xmlstruts.propertiesweb.xmlStruts2Struts2的配置文件介绍的配置文件介绍struts.properties:定义框架自身的全局变量。:定义框架自身的全局变量。struts-default.xml:定义框架自身使用的:定义框架自身使用的action映射及映射及result定义。定义。struts-plugin.xml:struts插件使用的配置文件,插件使用的配置文件,比如当使用比如当
4、使用struts和和spring结合时就需要在结合时就需要在web.xml中引用该配置文件。中引用该配置文件。struts.xml:定义应用自身使用的:定义应用自身使用的action映射及映射及result定义;当然我们一般将应用的各个模块分定义;当然我们一般将应用的各个模块分配到不同的配置文件中。配到不同的配置文件中。Struts.xmlStruts.xml配置的主要内容配置的主要内容Action配置配置Result配置配置拦拦截器配置截器配置包包配置配置命命名空间配置名空间配置定定义义Bean使用通配符使用通配符通配符简介通配符简介*:可以匹配可以匹配0个或多个字符,但不能匹配个或多个字符
5、,但不能匹配”/”*:可以匹配可以匹配0个或多个字符,且可以匹配个或多个字符,且可以匹配/character:用来转译用来转译*和和通配符简介通配符简介0代表整个代表整个path代表的所有字符不包括第代表的所有字符不包括第一个一个/,如,如path“/*Subscription”中的中的*是是add,那么那么0就是就是addSubscription。1代表第一个通配符(包括代表第一个通配符(包括*,*,character)所表示的实际内容,如所表示的实际内容,如path“/*Subscription”中中的的*是是add,那么那么1就是就是add。2代表第二个通配符(包括代表第二个通配符(包括
6、*,*,character)所表示的实际内容,如所表示的实际内容,如path“/*Subscription*”中的第一个中的第一个*是是add而第二个而第二个*是是test,那么那么1就是就是add,2就是就是test目目 录录1Struts2的常规配置的常规配置2实现实现Action接口接口3配置配置Action4配置处理结果配置处理结果5配置配置Struts2的异常处理的异常处理6Convention插件与插件与“约定约定”支持支持7使用使用Struts2的国际化的国际化8使用使用Struts2的标签库的标签库9本讲小结本讲小结概述概述Struts2不强制要求不强制要求Action类继承任
7、何类继承任何Struts2的基类或接口(低侵入式设计)的基类或接口(低侵入式设计)Struts2通常直接使用通常直接使用Action来封装来封装HTTP请求参数,还可以封装请求参数,还可以封装HTTP处理结果处理结果10ActionAction接口的定义接口的定义publicstaticfinaljava.lang.StringSUCCESS=success;publicstaticfinaljava.lang.StringNONE=none;publicstaticfinaljava.lang.StringERROR=error;publicstaticfinaljava.lang.Stri
8、ngINPUT=input;publicstaticfinaljava.lang.StringLOGIN=login;publicabstractjava.lang.Stringexecute()throwsjava.lang.Exception;ActionSupportActionSupport类类ActionSupport类是类是Struts2默认的默认的Action处理类,如果开发者的处理类,如果开发者的Action类继承该类继承该ActionSupport类,则会大大简化类,则会大大简化Action的开发的开发Action继承继承ActionSupport类不是强制的,类不是强制的,
9、也可以不继承也可以不继承ActionAction接口的实现接口的实现扩展扩展ActionSupport类类ValidationAware接口接口validate方法方法execute方法方法othervalidate和和execute的执行顺序的执行顺序validate先于先于execute执行执行ActionAction接口的实现接口的实现使用本地的资源文件使用本地的资源文件TextProvider接口接口*.properties文件,与类在同一目录下文件,与类在同一目录下文文件名与类名一致件名与类名一致使使用用getText()方法查询本地化信息文件方法查询本地化信息文件LocalProv
10、ider接口接口通通过调用过调用AcitonContext.getContext().getLocale()方法方法ActionAction访问访问ServletServlet API APIStruts2的的Action没有与任何的没有与任何的ServletAPI耦合,从而能更轻松地测试该耦合,从而能更轻松地测试该ActionStruts2提供了一个提供了一个ActionContext类,来类,来访问访问ServletAPI实际操作演示实际操作演示ActionAction直接访问直接访问ServletServlet API API为了在为了在Action中直接访问中直接访问ServletAP
11、I,Struts2提供了如下接口:提供了如下接口:ServletContextAwareServletRequestAwareServletResponseAware尽量避免在尽量避免在Action中直接访问中直接访问ServletAPI,以防止和底层代码耦合,破坏代码设计,以防止和底层代码耦合,破坏代码设计的独立性的独立性使用使用ServletActionContextServletActionContext访问访问ServletAPIServletAPIServletActionContext工具类中的静态方法:工具类中的静态方法:getPageContext();getRequest()
12、;getResponse():getServletContext():目目 录录1Struts2的常规配置的常规配置2实现实现Action接口接口3配置配置Action4配置处理结果配置处理结果5配置配置Struts2的异常处理的异常处理6Convention插件与插件与“约定约定”支持支持7使用使用Struts2的国际化的国际化8使用使用Struts2的标签库的标签库9本讲小结本讲小结包和命名空间包和命名空间Struts2使用包来组织使用包来组织Action命名空间的作用命名空间的作用主主要处理同一个要处理同一个Web应用中包含同名应用中包含同名Action的情的情况况命命名空间只有一个级别
13、名空间只有一个级别实例演示实例演示19ActionAction的基本配置的基本配置Action的基本配置的基本配置name属性是必须的属性是必须的实例演示实例演示使用使用ActionAction的动态方法调用的动态方法调用DMI:DynamicMethodInvocation形式:形式:action=“ActionName!MethodName”需要设置需要设置strtus.enable.DynamicMethodInvocation=true实例演示实例演示指定指定MethodMethod属性及使用通配符属性及使用通配符使用使用action的的method属性属性,可以让一个可以让一个Act
14、ion执行多个逻辑处理过程执行多个逻辑处理过程实例演示实例演示配置默认配置默认ActionAction当用户请求找不到对应的当用户请求找不到对应的Action时,系统默认时,系统默认的的Action可以处理用户请求可以处理用户请求实例演示实例演示配置配置ActionAction的默认处理类的默认处理类实例演示实例演示目目 录录1Struts2的常规配置的常规配置2实现实现Action接口接口3配置配置Action4配置处理结果配置处理结果5配置配置Struts2的异常处理的异常处理6Convention插件与插件与“约定约定”支持支持7使用使用Struts2的国际化的国际化8使用使用Strut
15、s2的标签库的标签库9本讲小结本讲小结理解处理结果理解处理结果Action处理完用户请求后,将返回一个处理完用户请求后,将返回一个普通字符串,这个普通字符串就是一个逻普通字符串,这个普通字符串就是一个逻辑视图名辑视图名Struts2通过配置逻辑视图名和物理视图通过配置逻辑视图名和物理视图资源的映射关系,来把适当的页面呈现给资源的映射关系,来把适当的页面呈现给用户用户使使用用标签进行配置标签进行配置默默认认name属性的值为属性的值为”success”26Struts2Struts2支持的支持的ResultResult类型类型定义在定义在struts-default.xml文件中文件中默默认认的
16、是的是result类型是类型是dispatcherStruts2内建的内建的result类型类型chain类型类型dispatcher类型类型freemarker类型类型plainText类型类型redirect类型类型redirectAction类型类型其其他类型他类型plainTextplainText结果类型结果类型用于显示实际视图资源的源代码必须指定charSet参数redirect redirect 结果类型结果类型调用调用sendRedirect(String)方法来转到指方法来转到指定的位置,产生一个新的请求;定的位置,产生一个新的请求;这样做的结果会使刚刚执行的这样做的结果会使
17、刚刚执行的action(包括包括action实例实例,action中的错误消息等中的错误消息等)丢失丢失,不再可用。不再可用。redirectActionredirectAction 结果类型结果类型系统将重新生成一个新请求,只是该请求系统将重新生成一个新请求,只是该请求的的URL不是一个具体的视图资源,而是另不是一个具体的视图资源,而是另一个一个Action。因此前一个。因此前一个Action的处理结的处理结果、请求参数、请求属性都会丢失果、请求参数、请求属性都会丢失实际操作演示实际操作演示Chain Result Chain Result 这个这个result调用另外的一个调用另外的一个a
18、ction。actionName(默认默认)-被调用的被调用的action的名的名字字namespace-被调用的被调用的action的名称空间。的名称空间。如果名称空间为空,这默认为当前名称空如果名称空间为空,这默认为当前名称空间。间。method-用于指定目标用于指定目标action的另一个方的另一个方法被调用法被调用.如果空,默认为如果空,默认为execute方法。方法。全局结果全局结果全局结果对所有的全局结果对所有的Action都有效都有效目目 录录1Struts2的常规配置的常规配置2实现实现Action接口接口3配置配置Action4配置处理结果配置处理结果5配置配置Struts2
19、的异常处理的异常处理6Convention插件与插件与“约定约定”支持支持7使用使用Struts2的国际化的国际化8使用使用Struts2的标签库的标签库9本讲小结本讲小结Strtus2Strtus2的异常处理机制的异常处理机制Struts框架接收到框架接收到Action抛出的异常之后,抛出的异常之后,将根据将根据struts.xml文件配置的异常映射,文件配置的异常映射,转入指定的视图资源转入指定的视图资源需要在需要在struts.xml文件中配置异常处理文件中配置异常处理34声明式异常捕获声明式异常捕获在在struts.xml文件中配置文件中配置,其属性有:,其属性有:exceptionr
20、esult异常映射的分类异常映射的分类局局部异常映射部异常映射全全局异常映射局异常映射实实际操作演示际操作演示输出异常信息输出异常信息在异常处理页面,可以输出对应的异常信在异常处理页面,可以输出对应的异常信息:息:输输出异常对象本身:出异常对象本身:输出异常堆栈信息:输出异常堆栈信息:目目 录录1Struts2的常规配置的常规配置2实现实现Action接口接口3配置配置Action4配置处理结果配置处理结果5配置配置Struts2的异常处理的异常处理6Convention插件与插件与“约定约定”支持支持7使用使用Struts2的国际化的国际化8使用使用Struts2的标签库的标签库9本讲小结本
21、讲小结概述概述Struts2引入引入Convertion插件来支持零配置插件来支持零配置主要特点:约定优于配置主要特点:约定优于配置38ActionAction的搜索和映射约定的搜索和映射约定在应用启动的时候,Convention插件会自动搜索位于action、actions、struts、struts2的包及其子包下的所有Java类,以搜索Action类。在应用启动的时候,Convention插件在上述包及其子包的路径下搜索满足如下条件的类来作为Action类:实现com.opensymphony.xwork2.Action的类类名以Action结尾的Java类ActionAction的搜索
22、和映射约定的搜索和映射约定在映射Action的名称的时候,通常遵循如下规则:如果该Action类名以Action作为后缀,那么会将后缀的Action去掉,其他的不做处理。如果该Action类名采用驼峰式的写法,也就是每个单词首字母大写的写法,那么需要把所有字母变成小写,单词与单词之间以中画线隔开。比如有一个Action的名称为HelloWorldAction,那么对应的映射资源的名称为hello-world。(如果是单个词的Action名称,那么把它的所有字母变成小写,作为对应的映射资源的名称。比如Action类名为HelloAction,它是以Action作为后缀的,那么对应的映射资源的名称
23、为先去掉Action后缀,得到Hello,又是单个词的名称,变成小小,那么最终对应的映射资源的名称为hello。按约定映射按约定映射ResultResult默认情况下,convention总会到Web应用的WEB-INFcontent路径下定位物理资源。故定位资源约定为:actionName+resultCode+suffix。当某个逻辑视图找不到对应的视图资源是,convention会自动试图使用actionName+suffix作为物理视图资源。按约定映射按约定映射ResultResultAction的URL返回的逻辑视图名对应的物理视图/loginsuccessWEB-INFconten
24、tlogin-success.jsp/user/loginsuccessWEB-INFcontentuserlogin-success.jsp/user/registerrorWEB-INFcontentuserregist-error.jspActionAction键的约定键的约定如果想一个Action处理结束后不是进入视图页面,而是进入另一个Action形成Action链。则只需要遵守下面三个约定:1、第一个Action返回的逻辑视图字符串没有对应的视图资源。2、第二个Action与第一个Action处于同一个包下。3、第二个Action映射的URL为:firstactionname+re
25、sultcode目目 录录1Struts2的常规配置的常规配置2实现实现Action接口接口3配置配置Action4配置处理结果配置处理结果5配置配置Struts2的异常处理的异常处理6Convention插件与插件与“约定约定”支持支持7使用使用Struts2的国际化的国际化8使用使用Struts2的标签库的标签库9本讲小结本讲小结什么是国际化什么是国际化国际化(国际化(Internationalization)是设计一个)是设计一个适用于多种语言和地区的应用程序的过程。适用于多种语言和地区的应用程序的过程。适用于多种语言和地区的含义是当使用不同适用于多种语言和地区的含义是当使用不同语言及处
26、于不同的地区的用户在使用这个应语言及处于不同的地区的用户在使用这个应用程序时,应用程序必须使用他们能看懂的用程序时,应用程序必须使用他们能看懂的语言和符合他们文化习惯来显示信息。语言和符合他们文化习惯来显示信息。国国际化有时候被简称为际化有时候被简称为i18n,因为有,因为有18个字个字母在国际化的英文单词的字母母在国际化的英文单词的字母i和和n之间。之间。45什么是本地化什么是本地化本地化(本地化(Localization)是指通过增加本地)是指通过增加本地描述的构件和文字翻译工作来使应用程序适描述的构件和文字翻译工作来使应用程序适应于不同的语言和地区的过程。应于不同的语言和地区的过程。本本
27、地化有时候被简称为地化有时候被简称为l10n,因为有,因为有10个字个字母在本地化的英文单词的字母母在本地化的英文单词的字母l和和n之间。之间。通通常本地化最耗时的工作应该是文字翻译。常本地化最耗时的工作应该是文字翻译。本地化工作者们要根据地区的具体需求来为本地化工作者们要根据地区的具体需求来为日期、数字和通货等数据建立新的格式。其日期、数字和通货等数据建立新的格式。其他类型的数据,象声音,图象等,也需要根他类型的数据,象声音,图象等,也需要根据具体需要来决定是否本地化。据具体需要来决定是否本地化。什么是什么是StrutsStruts的国际化的国际化Struts的国际化是建立在的国际化是建立在
28、Java国际化的基础国际化的基础之上的,一样也是通过提供不同国家之上的,一样也是通过提供不同国家/语言环语言环境的消息资源,然后通过境的消息资源,然后通过ResourceBundle加载指定加载指定Locale对应的资源文件,再取得该对应的资源文件,再取得该资源文件中指定资源文件中指定Key对应的消息。对应的消息。Struts框架对国际化进行了进一步的封装。框架对国际化进行了进一步的封装。在struts2中需要做国际化的地方jsp页面的国际化页面的国际化action错误信息的国际化错误信息的国际化转转换错误信息的国际化换错误信息的国际化校校验错误信息的国际化验错误信息的国际化Struts2St
29、ruts2访问国际化消息方式访问国际化消息方式(1)JSP页面:页面:(2)Action类中:使用类中:使用ActionSupport类类的的getText方法。方法。(3)表单元素的表单元素的Label里:为表单元素指定里:为表单元素指定一个一个key属性属性Struts2Struts2加载资源文件的方式加载资源文件的方式(1)加载全局资源文件加载全局资源文件(2)包范围资源文件包范围资源文件为Struts2指定包范围资源文件的方法是,在包的根路径下建立多个文件名为package_language_country.properties的文件,一旦建立了这个系列的国际化资源文件,应用中处于该包
30、下的所有Action都可以访问该资源文件。需要注意的是上面的包范围资源文件的baseName就是package,不是Action所在的包名。Struts2Struts2加载资源文件的方式加载资源文件的方式(3)Action范围资源文件范围资源文件在Action类文件所在的路径建立多个文件名为ActionName_language_country.properties的文件。(4)临时指定资源文件临时指定资源文件标签的name属性指定临时的国际化资源文件Struts2Struts2加载资源文件的顺序Action中加载资源文件,假设我们在某个ChildAction中调用了getText(user.
31、title),Struts2.0的将会执行以下的操作:(1)优先加载系统中保存在ChildAction的类文件相同位置,且baseName为ChildAction的系列资源文件。(2)如果在(1)中找不到指定key对应的消息,且ChildAction有父类ParentAction,则加载系统中保存在ParentAction的类文件相同位置,且baseName为ParentAction的系列资源文件。Struts2Struts2加载资源文件的顺序(3)如果在(2)中找不到指定key对应的消息,且ChildAction有实现接口IChildAction,则加载系统中保存在IChildAction的
32、类文件相同位置,且baseName为IChildAction的系列资源文件。(4)如果在(3)中找不到指定key对应的消息,且ChildAction有实现接口ModelDriven(即使用模型驱动模式),则对于getModel()方法返回的model对象,重新执行第(1)步操作。Struts2Struts2加载资源文件的顺序(5)如果在(4)中找不到指定key对应的消息,则查找当前包下baseName为package的系列资源文件。(6)如果在(5)中找不到指定key对应的消息,则沿着当前包上溯,直到最顶层包来查找baseName为package的系列资源文件。(7)如果在(6)中找不到指定k
33、ey对应的消息,则查找struts.custom.i18n.resources常量指定baseName的系列资源文件。(8)如果经过上面的步骤一直找不到key对应的消息,将直接输出该key的字符串值。目目 录录1Struts2的常规配置的常规配置2实现实现Action接口接口3配置配置Action4配置处理结果配置处理结果5配置配置Struts2的异常处理的异常处理6Convention插件与插件与“约定约定”支持支持7使用使用Struts2的国际化的国际化8使用使用Struts2的标签库的标签库9本讲小结本讲小结ELEL简介简介EL语法语法示示例:例:$sessionScope.user.s
34、ex示例:示例:$sessionScope.user“sex”EL变量变量属性范围(属性范围(jsp名称)名称)EL中的名称中的名称PagePageScopeRequestRequestScopeSessionSessionScopeApplicationApplicationScope56ELEL简介简介范例范例说明说明$pageScope.username取出取出Page范围的范围的username变量变量$requestScope.username取出取出Request范围的范围的username变量变量$sessionScope.username取出取出Session范围的范围的use
35、rname变量变量$applicationScope.username取出取出Application范围的范围的username变量变量ELEL变量示例变量示例ELEL简介简介自动类型转换自动类型转换$param.count+20Stringstr_count=request.getParameter(count);intcount=Integer.parseInt(str_count);count=count+20;EL表达式表达式以前以前ELEL简介简介EL隐含对象(隐含对象(11个)个)PageContextPageScopeRequestScopesessionScopeapplica
36、tionScopeParamparamValuesheader/headerValuescookie/initParamELEL简介简介EL保留字保留字andeqgttrueornelefalsenoltgenullinstanceofemptydivmodStruts2Struts2的标签简介的标签简介Struts2提供的标签库功能非常强大,而且非提供的标签库功能非常强大,而且非常好用。使用标签来开发可以使得页面更加常好用。使用标签来开发可以使得页面更加整洁容易维护,同样可以减少代码量以及开整洁容易维护,同样可以减少代码量以及开发时间。发时间。Struts2提供的标签非常之多,其大提供的标签
37、非常之多,其大致分为两类:致分为两类:一一类是非用户界面标签,也称为类是非用户界面标签,也称为非非UI标签(通用标签(通用标签)标签)。控控制标签:条件、循环等流程控制制标签:条件、循环等流程控制数数据标签:数据存储和处理据标签:数据存储和处理一一类是用户界面标签,也称为类是用户界面标签,也称为UI标签标签。表表单标签:主要用于生成单标签:主要用于生成HTML的表单的表单非非表单标签:如显示日期、树形菜单表单标签:如显示日期、树形菜单通用标签之通用标签之控制标签控制标签逻辑控制标签主要用来完成流程控制,如逻辑控制标签主要用来完成流程控制,如分支和循环操作。也可以用来对集合进行分支和循环操作。也
38、可以用来对集合进行合并、排序等操作。合并、排序等操作。通用标签之通用标签之控制标签控制标签Struts2提供了三个标签用于进行分支流提供了三个标签用于进行分支流程控制,分别是程控制,分别是if标签、标签、elseif标签、标签、else标签。其中标签。其中if标签、标签、elseif标签提供了一个标签提供了一个test属性用来进行判断。属性用来进行判断。if/elseif/else标签标签的使用和的使用和Java语言中的语言中的if-elseif-else流程流程控制语言使用上是基本类似的。控制语言使用上是基本类似的。实例演示实例演示通用标签之通用标签之逻辑控制标签逻辑控制标签Struts2提
39、供提供iterator标签用来对集合进行标签用来对集合进行遍历,这里所说的集合包括遍历,这里所说的集合包括List、Set和数和数组以及组以及Map。实例演示实例演示(判断成绩分类判断成绩分类)通用标签之通用标签之逻辑控制标签逻辑控制标签Struts2中提供中提供append标签用于将多个集标签用于将多个集合拼接组合成一个集合。合拼接组合成一个集合。merge标签同标签同append标签类似,也是用来标签类似,也是用来组合集合成一个新集合。组合集合成一个新集合。generator可以将指定的字符串分隔成多可以将指定的字符串分隔成多个子字符串,并将这些子字符串放置到一个子字符串,并将这些子字符串
40、放置到一个集合中。个集合中。通用标签之通用标签之逻辑控制标签逻辑控制标签subset标签用来取得集合的子集标签用来取得集合的子集sort标签用来通过指定的标签用来通过指定的Comparator对集对集合中的元素进行排序合中的元素进行排序通用标签之通用标签之数据访问标签数据访问标签数据访问标签用来访问数据访问标签用来访问ValueStack中的数据,中的数据,从而完成数据访问相关功能。例如通过从而完成数据访问相关功能。例如通过action标签可以用来显示标签可以用来显示Action中的属性,通过中的属性,通过bean标签允许直接在标签允许直接在JSP页面中创建页面中创建JavaBean实例实例等
41、。等。每每个个Action类的对象实例会拥有一个类的对象实例会拥有一个ValueStack对象。当对象。当Struts2接收到一个接收到一个.action的请求后,会先建立的请求后,会先建立Action类的对象实类的对象实例,并且将例,并且将Action类的对象实例压入类的对象实例压入ValueStack对象中。对象中。setValue和和findValue方方法可以设置和获得法可以设置和获得Action对象的属性值。对象的属性值。通用标签之通用标签之数据访问标签数据访问标签action标签用来在标签用来在JSP页面中调用页面中调用Action,通过指定设置其,通过指定设置其executeRe
42、sult属性为属性为true,能将处理结果对应的视图资源包含,能将处理结果对应的视图资源包含到到JSP页面中。页面中。Struts2提供提供bean标签允许直接在标签允许直接在JSP页页面中创建面中创建JavaBean实例,可以使用实例,可以使用param标签在该标签在该JavaBean实例传入属性实例传入属性值,也可以通过值,也可以通过property标签输出该标签输出该JavaBean实例的属性值。实例的属性值。通用标签之通用标签之数据访问标签数据访问标签property标签标签set标签标签push标签标签通用标签之通用标签之数据访问标签数据访问标签Struts2提供提供include标
43、签用于将标签用于将JSP页面,页面,或者或者Servlet包含到该页面中。包含到该页面中。Struts2提供提供url标签用来生成一个标签用来生成一个URL地址。地址。其他标签其他标签UIUI标签简介标签简介Struts2提供了丰富的提供了丰富的UI标签,使用这些标签,使用这些标签可以实现非常好的显示效果。同时标签可以实现非常好的显示效果。同时Struts2的的UI标签都是基于主题和模板的,标签都是基于主题和模板的,通过使用不同的主题或模板就能显示不同通过使用不同的主题或模板就能显示不同的显示效果。的显示效果。模模板:一个文件,能被特定标签输出板:一个文件,能被特定标签输出主主题:一系列的模板
44、打包。题:一系列的模板打包。UIUI标签之标签之通用属性通用属性所有的表单标签可以分为两种:所有的表单标签可以分为两种:form标签标签本身和单个表单元素的标签。本身和单个表单元素的标签。所所有表单标签处理类都继承了有表单标签处理类都继承了UIBean类,类,UIBean包含了一些通用属性,这些通用属包含了一些通用属性,这些通用属性分成性分成3种:种:模板相关属性;模板相关属性;javascript相关属性;相关属性;通用属性。通用属性。UIUI标签之标签之表单标签表单标签form标签标签textfield标签标签textarea标签标签checkbox标签标签select标签标签.UIUI标
45、签之标签之非表单标签非表单标签输出一些表单以外的输出一些表单以外的HTML元素元素包包括括:1,a:生成一个超链接生成一个超链接2,actionerror:如果如果Action实例的实例的getActionErrors()方法返回不为方法返回不为null,则该标签负责输出该方法返回的系列错误。则该标签负责输出该方法返回的系列错误。3,actionmessage:如果如果Action实例的实例的getActionMessages()方法返回不方法返回不为为null,则该标签负责输出该方法返回的系列消息。则该标签负责输出该方法返回的系列消息。4,component:使用此标签可以生成一个自定义组件
46、。使用此标签可以生成一个自定义组件。5,div:此标签负责生成一个此标签负责生成一个div片段片段6,fielderror:如果如果Action实例存在表单域的类型转换错误,校验错误,该实例存在表单域的类型转换错误,校验错误,该标签则负责输出这些错误提示。标签则负责输出这些错误提示。7,tabbedPanel:生成生成HTML页面的页面的Tab页。页。8,tree:生成一个树形结构。生成一个树形结构。9,treenode:生成树形结构的节点。生成树形结构的节点。.OGNLOGNL介绍介绍OGNL概述概述ObjectGraphNavigationLanguage一般用一般用”#”访问对象访问对象
47、OGNL中的集合中的集合listmap查找查找过过滤滤模板和主题模板和主题回忆:什么是模板和主题?回忆:什么是模板和主题?Struts2的默认模板的默认模板:FreeMarker模板模板Struts2的自带主题的自带主题Simple主题主题xhtml主题主题css_xhtml主题主题AJAX主题主题自自定义主题定义主题模板和主题模板和主题simple主题是最简单的主题,它是最底层的结构,主要主题是最简单的主题,它是最底层的结构,主要用于构建附加的功能或者行为用于构建附加的功能或者行为(例如在此主题基础上进行例如在此主题基础上进行扩展扩展),使用,使用simple主题时,每个主题时,每个UI标签
48、只生成一个简单标签只生成一个简单的的HTML元素,不会生成其他额外的内容。元素,不会生成其他额外的内容。xhtml主题是主题是Struts2的默认主题,它对的默认主题,它对simple主题进行主题进行扩展,在该主题的基础上增加了如下附加的特性:扩展,在该主题的基础上增加了如下附加的特性:1,针对,针对HTML标签标签(如如textfield和和select标签标签)使用标准的使用标准的两列表格布局。两列表格布局。2,每个,每个HTML标签的标签的Label,即可以出现在即可以出现在HTML元素的元素的左边,也可以出现在上边,这取决于左边,也可以出现在上边,这取决于labelposition属性
49、属性的设置。的设置。3,自动输出校验错误信息。,自动输出校验错误信息。4,输出,输出JavaScript的客户端校验。的客户端校验。什么是什么是FreeMarker?FreeMarker?FreeMarker允许允许Javaservlet保持图形设保持图形设计同应用程序逻辑的分离,这是通过在模计同应用程序逻辑的分离,这是通过在模板中密封板中密封HTML完成的。模板用完成的。模板用servlet提提供的数据动态地生成供的数据动态地生成HTML。模板语言是模板语言是强大的直观的,编译器速度快,输出接近强大的直观的,编译器速度快,输出接近静态静态HTML页面的速度。页面的速度。虽虽然然FreeMar
50、ker具有一些编程的能力,但具有一些编程的能力,但通常由通常由Java程序准备要显示的数据,由程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备生成页面,通过模板显示准备的数据的数据FreeMarkerFreeMarker运行示意图运行示意图FreeMarkerFreeMarker特性特性1、通用目标、通用目标2、强大的模板语言、强大的模板语言3、通用数据模型、通用数据模型4、为、为Web准备准备5、智能的国际化和本地化、智能的国际化和本地化6、强大的、强大的XML处理能力处理能力使用使用FreeMarkerFreeMarkerFreeMarker的使用的使用演示例子演示例