
Struts2的基本用法课件.ppt
91页第第4讲讲 Struts2的基本用法的基本用法-2Ø掌握掌握Struts2的配置文件的配置文件Ø掌掌握握Struts2中中Action的配置及使用的配置及使用Ø会会使用使用Struts2的国际化的国际化Ø掌掌握握Struts2的标签库的标签库课程目标课程目标Struts2的基本用法的基本用法目目 录录•1 Struts2的常规配置的常规配置•2 实现实现Action接口接口•3 配置配置Action•4 配置处理结果配置处理结果•5 配置配置Struts2的异常处理的异常处理•6 Convention插件与插件与“约定约定”支持支持•7 使用使用Struts2的国际化的国际化•8 使用使用Struts2的标签库的标签库•9 本讲小结本讲小结Struts2的基本用法的基本用法Struts2Struts2的常量配置的常量配置•使用使用struts. properties文件来管理常量文件来管理常量–该文件包含了系列的该文件包含了系列的key-value对对•注意注意struts. properties文件的路径文件的路径–通常放在通常放在web应用的应用的WEB-INF/classes下下•常用的常量介绍常用的常量介绍–Struts.i18n.encoding–Struts.ui.theme–其他常量其他常量3Struts2的基本用法的基本用法Struts2Struts2的常量配置的常量配置•Struts2配置常量总共有三种方式配置常量总共有三种方式:–通过struts. properties文件文件–通过struts. xml文件文件–通过Web应用的应用的web.xml文件文件•Struts2框架按照如下搜索顺序加载常量框架按照如下搜索顺序加载常量–struts-default.xml–struts-plugin.xml–struts.xml–struts. properties–web.xmlStruts2的基本用法的基本用法Struts2Struts2的配置文件介绍的配置文件介绍•struts.properties:定义框架自身的全局变量。
定义框架自身的全局变量•struts-default.xml:定义框架自身使用的:定义框架自身使用的action映射及映射及result定义•struts-plugin.xml::struts插件使用的配置文件,插件使用的配置文件,比如当使用比如当使用struts和和spring结合时就需要在结合时就需要在web.xml中引用该配置文件中引用该配置文件•struts.xml:定义应用自身使用的:定义应用自身使用的action映射及映射及result定义;当然我们一般将应用的各个模块分定义;当然我们一般将应用的各个模块分配到不同的配置文件中配到不同的配置文件中Struts2的基本用法的基本用法Struts.xmlStruts.xml配置的主要内容配置的主要内容•Action配置配置•Result配置配置•拦截器配置拦截器配置•包配置包配置•命名空间配置命名空间配置•定义定义Bean•使用通配符使用通配符Struts2的基本用法的基本用法通配符简介通配符简介•* :可以匹配可以匹配0个或多个字符,但不能匹配个或多个字符,但不能匹配”/”•** :可以匹配可以匹配0个或多个字符,且可以匹配个或多个字符,且可以匹配"/" •\character :用来转译用来转译*和和\Struts2的基本用法的基本用法通配符简介通配符简介•{0} 代表整个代表整个path代表的所有字符--不包括第代表的所有字符--不包括第一个一个/,如,如path==“/*Subscription”中的中的*是是add,,那么那么{0}就是就是addSubscription。
•{1} 代表第一个通配符(包括代表第一个通配符(包括*, **, \character))所表示的实际内容,如所表示的实际内容,如path==“/*Subscription”中中的的*是是add,那么,那么{1}就是就是add•{2} 代表第二个通配符(包括代表第二个通配符(包括*, **, \character))所表示的实际内容,如所表示的实际内容,如path==“/*Subscription*”中的第一个中的第一个*是是add而第二个而第二个*是是test,那么,那么{1}就是就是add,,{2}就是就是testStruts2的基本用法的基本用法目目 录录•1 Struts2的常规配置的常规配置•2 实现实现Action接口接口•3 配置配置Action•4 配置处理结果配置处理结果•5 配置配置Struts2的异常处理的异常处理•6 Convention插件与插件与“约定约定”支持支持•7 使用使用Struts2的国际化的国际化•8 使用使用Struts2的标签库的标签库•9 本讲小结本讲小结Struts2的基本用法的基本用法概述概述•Struts2不强制要求不强制要求Action类继承任何类继承任何Struts2的基类或接口(低侵入式设计)的基类或接口(低侵入式设计)•Struts2通常直接使用通常直接使用Action来封装来封装HTTP请求参数,还可以封装请求参数,还可以封装HTTP处理结果处理结果10Struts2的基本用法的基本用法ActionAction接口的定义接口的定义•public static final java.lang.String SUCCESS = "success"; public static final java.lang.String NONE = "none"; public static final java.lang.String ERROR = "error"; public static final java.lang.String INPUT = "input"; public static final java.lang.String LOGIN = "login"; •public abstract java.lang.String execute() throws java.lang.Exception; Struts2的基本用法的基本用法ActionSupportActionSupport类类•ActionSupport类是类是Struts2默认的默认的Action处理类,如果开发者的处理类,如果开发者的Action类继承该类继承该ActionSupport类,则会大大简化类,则会大大简化Action的开发的开发•Action继承继承ActionSupport类不是强制的,类不是强制的,也可以不继承也可以不继承Struts2的基本用法的基本用法ActionAction接口的实现接口的实现•扩展扩展ActionSupport类类–ValidationAware接口接口–validate方法方法–execute方法方法–other•validate和和execute的执行顺序的执行顺序–validate先于先于execute执行执行Struts2的基本用法的基本用法ActionAction接口的实现接口的实现•使用本地的资源文件使用本地的资源文件–TextProvider接口接口•*.properties文件,与类在同一目录下文件,与类在同一目录下•文文件名与类名一致件名与类名一致•使使用用getText()方法查询本地化信息文件方法查询本地化信息文件–LocalProvider接口接口•通通过调用过调用AcitonContext.getContext ().getLocale()方法方法Struts2的基本用法的基本用法ActionAction访问访问Servlet APIServlet API•Struts2的的Action没有与任何的没有与任何的Servlet API耦合,从而能更轻松地测试该耦合,从而能更轻松地测试该Action•Struts2提供了一个提供了一个ActionContext类,来类,来访问访问Servlet API•实际操作演示实际操作演示Struts2的基本用法的基本用法ActionAction直接访问直接访问Servlet APIServlet API•为了在为了在Action中直接访问中直接访问Servlet API,,Struts2提供了如下接口:提供了如下接口:–ServletContextAware–ServletRequestAware–ServletResponseAware•尽量避免在尽量避免在Action中直接访问中直接访问Servlet API,以防止和底层代码耦合,破坏代码设计,以防止和底层代码耦合,破坏代码设计的独立性的独立性Struts2的基本用法的基本用法使用使用ServletActionContextServletActionContext访访问问ServletAPIServletAPI•ServletActionContext工具类中的静态方法:工具类中的静态方法:–getPageContext();–getRequest();–getResponse():–getServletContext():Struts2的基本用法的基本用法目目 录录•1 Struts2的常规配置的常规配置•2 实现实现Action接口接口•3 配置配置Action •4 配置处理结果配置处理结果•5 配置配置Struts2的异常处理的异常处理•6 Convention插件与插件与“约定约定”支持支持•7 使用使用Struts2的国际化的国际化•8 使用使用Struts2的标签库的标签库•9 本讲小结本讲小结Struts2的基本用法的基本用法包和命名空间包和命名空间•Struts2使用包来组织使用包来组织Action•命名空间的作用命名空间的作用–主主要处理同一个要处理同一个Web应用中包含同名应用中包含同名Action的情的情况况–命命名空间只有一个级别名空间只有一个级别•实例演示实例演示19Struts2的基本用法的基本用法ActionAction的基本配置的基本配置•Action的基本配置的基本配置–name属性是必须的属性是必须的•实例演示实例演示Struts2的基本用法的基本用法使用使用ActionAction的动态方法调用的动态方法调用•DMI:Dynamic Method Invocation•形式:形式:action=“ActionName!MethodName”•需要设置需要设置strtus.enable.DynamicMethodInvocation = true•实例演示实例演示Struts2的基本用法的基本用法指定指定MethodMethod属性及使用通配符属性及使用通配符•使用使用action的的method属性属性,可以让一个可以让一个Action执行多个逻辑处理过程执行多个逻辑处理过程 •实例演示实例演示Struts2的基本用法的基本用法配置默认配置默认ActionAction•
不再可用Struts2的基本用法的基本用法redirectAction redirectAction 结果类型结果类型•系统将重新生成一个新请求,只是该请求系统将重新生成一个新请求,只是该请求的的URL不是一个具体的视图资源,而是另不是一个具体的视图资源,而是另一个一个Action因此前一个因此前一个Action的处理结的处理结果、请求参数、请求属性都会丢失果、请求参数、请求属性都会丢失•实际操作演示实际操作演示Struts2的基本用法的基本用法Chain Result Chain Result •这个这个result调用另外的一个调用另外的一个action•actionName (默认默认) - 被调用的被调用的action的名的名字字•namespace - 被调用的被调用的action的名称空间的名称空间如果名称空间为空,这默认为当前名称空如果名称空间为空,这默认为当前名称空间•method - 用于指定目标用于指定目标action的另一个方的另一个方法被调用法被调用. 如果空,默认为如果空,默认为execute方法Struts2的基本用法的基本用法全局结果全局结果•全局结果对所有的全局结果对所有的Action都有效都有效Struts2的基本用法的基本用法目目 录录•1 Struts2的常规配置的常规配置•2 实现实现Action接口接口•3 配置配置Action•4 配置处理结果配置处理结果•5 配置配置Struts2的异常处理的异常处理•6 Convention插件与插件与“约定约定”支持支持•7 使用使用Struts2的国际化的国际化•8 使用使用Struts2的标签库的标签库•9 本讲小结本讲小结Struts2的基本用法的基本用法Strtus2Strtus2的异常处理机制的异常处理机制•Struts框架接收到框架接收到Action抛出的异常之后,抛出的异常之后,将根据将根据struts.xml文件配置的异常映射,文件配置的异常映射,转入指定的视图资源转入指定的视图资源•需要在需要在struts.xml文件中配置异常处理文件中配置异常处理34Struts2的基本用法的基本用法声明式异常捕获声明式异常捕获•在在struts.xml文件中配置文件中配置
•在应用启动的时候,Convention插件在上述包及其子包的路径下搜索满足如下条件的类来作为Action类:–实现com.opensymphony.xwork2.Action的类–类名以Action结尾的Java类Struts2的基本用法的基本用法ActionAction的搜索和映射约定的搜索和映射约定•在映射Action的名称的时候,通常遵循如下规则:–如果该Action类名以Action作为后缀,那么会将后缀的Action去掉,其他的不做处理–如果该Action类名采用驼峰式的写法,也就是每个单词首字母大写的写法,那么需要把所有字母变成小写,单词与单词之间以中画线隔开 比如有一个Action的名称为HelloWorldAction,那么对应的映射资源的名称为hello-world–(如果是单个词的Action名称,那么把它的所有字母变成小写,作为对应的映射资源的名称比如Action类名为HelloAction,它是以 Action作为后缀的,那么对应的映射资源的名称为先去掉Action后缀,得到Hello,又是单个词的名称,变成小小,那么最终对应的映射资源的名 称为helloStruts2的基本用法的基本用法按约定映射按约定映射ResultResult•默认情况下,convention总会到Web应用的WEB-INF\content路径下定位物理资源。
故定位资源约定为:actionName+resultCode+suffix当某个逻辑视图找不到对应的视图资源是,convention会自动试图使用actionName+suffix作为物理视图资源Struts2的基本用法的基本用法按约定映射按约定映射ResultResultAction的URL返回的逻辑视图名对应的物理视图/loginsuccess\WEB-INF\content\login-success.jsp/user/loginsuccess\WEB-INF\content\user\login-success.jsp/user/registerror\WEB-INF\content\user\regist-error.jspStruts2的基本用法的基本用法ActionAction键的约定键的约定•如果想一个Action处理结束后不是进入视图页面,而是进入另一个Action形成Action链则只需要遵守下面三个约定:–1、第一个Action返回的逻辑视图字符串没有对应的视图资源–2、第二个Action与第一个Action处于同一个包下–3、第二个Action映射的URL为:firstactionname+resultcodeStruts2的基本用法的基本用法目目 录录•1 Struts2的常规配置的常规配置•2 实现实现Action接口接口•3 配置配置Action•4 配置处理结果配置处理结果•5 配置配置Struts2的异常处理的异常处理•6 Convention插件与插件与“约定约定”支持支持•7 使用使用Struts2的国际化的国际化•8 使用使用Struts2的标签库的标签库•9 本讲小结本讲小结Struts2的基本用法的基本用法什么是国际化什么是国际化•国际化(国际化(Internationalization)是设计一个)是设计一个适用于多种语言和地区的应用程序的过程。
适用于多种语言和地区的应用程序的过程适用于多种语言和地区的含义是当使用不同适用于多种语言和地区的含义是当使用不同语言及处于不同的地区的用户在使用这个应语言及处于不同的地区的用户在使用这个应用程序时,应用程序必须使用他们能看懂的用程序时,应用程序必须使用他们能看懂的语言和符合他们文化习惯来显示信息语言和符合他们文化习惯来显示信息•国际化有时候被简称为国际化有时候被简称为i18n,因为有,因为有18个字个字母在国际化的英文单词的字母母在国际化的英文单词的字母i和和n之间45Struts2的基本用法的基本用法什么是本地化什么是本地化•本地化(本地化(Localization)是指通过增加本地)是指通过增加本地描述的构件和文字翻译工作来使应用程序适描述的构件和文字翻译工作来使应用程序适应于不同的语言和地区的过程应于不同的语言和地区的过程•本地化有时候被简称为本地化有时候被简称为l10n,因为有,因为有10个字个字母在本地化的英文单词的字母母在本地化的英文单词的字母l和和n之间•通常本地化最耗时的工作应该是文字翻译通常本地化最耗时的工作应该是文字翻译本地化工作者们要根据地区的具体需求来为本地化工作者们要根据地区的具体需求来为日期、数字和通货等数据建立新的格式。
其日期、数字和通货等数据建立新的格式其他类型的数据,象声音,图象等,也需要根他类型的数据,象声音,图象等,也需要根据具体需要来决定是否本地化据具体需要来决定是否本地化Struts2的基本用法的基本用法什么是什么是StrutsStruts的国际化的国际化•Struts的国际化是建立在的国际化是建立在Java国际化的基础国际化的基础之上的,一样也是通过提供不同国家之上的,一样也是通过提供不同国家/语言环语言环境的消息资源,然后通过境的消息资源,然后通过ResourceBundle加载指定加载指定Locale对应的资源文件,再取得该对应的资源文件,再取得该资源文件中指定资源文件中指定Key对应的消息对应的消息•Struts框架对国际化进行了进一步的封装框架对国际化进行了进一步的封装Struts2的基本用法的基本用法在struts2中需要做国际化的地方•jsp页面的国际化页面的国际化•action错误信息的国际化错误信息的国际化•转换错误信息的国际化转换错误信息的国际化•校验错误信息的国际化校验错误信息的国际化Struts2的基本用法的基本用法Struts2Struts2访问国际化消息方式访问国际化消息方式•(1)JSP页面:页面:
方法•(3)表单元素的表单元素的Label里:为表单元素指定里:为表单元素指定一个一个key属性属性Struts2的基本用法的基本用法Struts2Struts2加载资源文件的方式加载资源文件的方式•(1)加载全局资源文件加载全局资源文件–
•(4)临时指定资源文件临时指定资源文件–
•(4)如果在(3)中找不到指定key对应的消息,且ChildAction有实现接口ModelDriven(即使用模型驱动模式),则对于getModel()方法返回的model对象,重新执行第(1)步操作Struts2的基本用法的基本用法Struts2Struts2加载资源文件的顺序•(5)如果在(4)中找不到指定key对应的消息,则查找当前包下baseName为package的系列资源文件•(6)如果在(5)中找不到指定key对应的消息,则沿着当前包上溯,直到最顶层包来查找baseName为package的系列资源文件•(7)如果在(6)中找不到指定key对应的消息,则查找struts.custom.i18n.resources常量指定baseName的系列资源文件•(8)如果经过上面的步骤一直找不到key对应的消息,将直接输出该key的字符串值Struts2的基本用法的基本用法目目 录录•1 Struts2的常规配置的常规配置•2 实现实现Action接口接口•3 配置配置Action•4 配置处理结果配置处理结果•5 配置配置Struts2的异常处理的异常处理•6 Convention插件与插件与“约定约定”支持支持•7 使用使用Struts2的国际化的国际化•8 使用使用Struts2的标签库的标签库•9 本讲小结本讲小结Struts2的基本用法的基本用法ELEL简介简介•EL语法语法–示例:示例:${er.sex}–示例:示例:${er[“sex”]}•EL变量变量属性范围(属性范围(jsp名称)名称)EL中的名称中的名称PagePageScopeRequestRequestScopeSessionSessionScopeApplicationApplicationScope56Struts2的基本用法的基本用法ELEL简介简介范例范例说明说明${ername}取出取出Page范围的范围的username变量变量${ername}取出取出Request范围的范围的username变量变量${ername}取出取出Session范围的范围的username变量变量${ername}取出取出Application范围的范围的username变量变量ELEL变量示例变量示例Struts2的基本用法的基本用法ELEL简介简介•自动类型转换自动类型转换${param.count + 20}String str_count = request.getParameter("count");int count = Integer.parseInt(str_count);count = count + 20;EL表达式表达式以前以前Struts2的基本用法的基本用法ELEL简介简介•EL隐含对象(隐含对象(11个)个)–PageContext–PageScope–RequestScope–sessionScope–applicationScope–Param–paramValues–header/headerValues–cookie/initParamStruts2的基本用法的基本用法ELEL简介简介•EL保留字保留字andeqgttrueornelefalsenoltgenullinstanceofemptydivmodStruts2的基本用法的基本用法Struts2Struts2的标签简介的标签简介•Struts 2提供的标签库功能非常强大,而且非提供的标签库功能非常强大,而且非常好用。
使用标签来开发可以使得页面更加常好用使用标签来开发可以使得页面更加整洁容易维护,同样可以减少代码量以及开整洁容易维护,同样可以减少代码量以及开发时间Struts 2提供的标签非常之多,其大提供的标签非常之多,其大致分为两类:致分为两类:ü一一类是非用户界面标签,也称为类是非用户界面标签,也称为非非UI标签(通用标签(通用标签)标签)Ø控控制标签:条件、循环等流程控制制标签:条件、循环等流程控制Ø数数据标签:数据存储和处理据标签:数据存储和处理ü一一类是用户界面标签,也称为类是用户界面标签,也称为UI标签标签Ø表表单标签:主要用于生成单标签:主要用于生成HTML的表单的表单Ø非非表单标签:如显示日期、树形菜单表单标签:如显示日期、树形菜单Struts2的基本用法的基本用法通用标签之通用标签之控制标签控制标签•逻辑控制标签主要用来完成流程控制,如逻辑控制标签主要用来完成流程控制,如分支和循环操作也可以用来对集合进行分支和循环操作也可以用来对集合进行合并、排序等操作合并、排序等操作Struts2的基本用法的基本用法通用标签之通用标签之控制标签控制标签•Struts 2提供了三个标签用于进行分支流提供了三个标签用于进行分支流程控制,分别是程控制,分别是if标签、标签、else if标签、标签、else标签。
其中标签其中if标签、标签、else if标签提供了一个标签提供了一个test属性用来进行判断属性用来进行判断if/elseif/else标签标签的使用和的使用和Java语言中的语言中的if-elseif-else流程流程控制语言使用上是基本类似的控制语言使用上是基本类似的•实例演示实例演示Struts2的基本用法的基本用法通用标签之通用标签之逻辑控制标签逻辑控制标签•Struts 2提供提供iterator标签用来对集合进行标签用来对集合进行遍历,这里所说的集合包括遍历,这里所说的集合包括List、、Set和数和数组以及组以及Map•实例演示实例演示(判断成绩分类判断成绩分类)Struts2的基本用法的基本用法通用标签之通用标签之逻辑控制标签逻辑控制标签•Struts 2中提供中提供append标签用于将多个集标签用于将多个集合拼接组合成一个集合合拼接组合成一个集合•merge标签同标签同append标签类似,也是用来标签类似,也是用来组合集合成一个新集合组合集合成一个新集合•generator可以将指定的字符串分隔成多个可以将指定的字符串分隔成多个子字符串,并将这些子字符串放置到一个子字符串,并将这些子字符串放置到一个集合中。
集合中Struts2的基本用法的基本用法通用标签之通用标签之逻辑控制标签逻辑控制标签•subset标签用来取得集合的子集标签用来取得集合的子集•sort标签用来通过指定的标签用来通过指定的Comparator对集对集合中的元素进行排序合中的元素进行排序Struts2的基本用法的基本用法通用标签之通用标签之数据访问标签数据访问标签•数据访问标签用来访问数据访问标签用来访问ValueStack中的数据,中的数据,从而完成数据访问相关功能例如通过从而完成数据访问相关功能例如通过action标签可以用来显示标签可以用来显示Action中的属性,通过中的属性,通过bean标签允许直接在标签允许直接在JSP页面中创建页面中创建JavaBean实例实例等•每个每个Action类的对象实例会拥有一个类的对象实例会拥有一个ValueStack对象当Struts 2接收到一个接收到一个.action的请求后,会先建立的请求后,会先建立Action类的对象实类的对象实例,并且将例,并且将Action类的对象实例压入类的对象实例压入ValueStack对象中setValue和和findValue方方法可以设置和获得法可以设置和获得Action对象的属性值。
对象的属性值Struts2的基本用法的基本用法通用标签之通用标签之数据访问标签数据访问标签•action标签用来在标签用来在JSP页面中调用页面中调用Action,通过指定设置其,通过指定设置其executeResult属性为属性为true,能将处理结果对应的视图资源包含,能将处理结果对应的视图资源包含到到JSP页面中•Struts 2提供提供bean标签允许直接在标签允许直接在JSP页页面中创建面中创建JavaBean实例,可以使用实例,可以使用param标签在该标签在该JavaBean实例传入属性实例传入属性值,也可以通过值,也可以通过property标签输出该标签输出该JavaBean实例的属性值实例的属性值Struts2的基本用法的基本用法通用标签之通用标签之数据访问标签数据访问标签•property标签标签•set标签标签•push标签标签Struts2的基本用法的基本用法通用标签之通用标签之数据访问标签数据访问标签•Struts 2提供提供include标签用于将标签用于将JSP页面,页面,或者或者Servlet包含到该页面中包含到该页面中•Struts 2提供提供url标签用来生成一个标签用来生成一个URL地址。
地址•其他标签其他标签Struts2的基本用法的基本用法UIUI标签简介标签简介•Struts 2提供了丰富的提供了丰富的UI标签,使用这些标签,使用这些标签可以实现非常好的显示效果同时标签可以实现非常好的显示效果同时Struts 2的的UI标签都是基于主题和模板的,标签都是基于主题和模板的,通过使用不同的主题或模板就能显示不同通过使用不同的主题或模板就能显示不同的显示效果的显示效果•模板:一个文件,能被特定标签输出模板:一个文件,能被特定标签输出•主题:一系列的模板打包主题:一系列的模板打包Struts2的基本用法的基本用法UIUI标签之标签之通用属性通用属性•所有的表单标签可以分为两种:所有的表单标签可以分为两种:form标签标签本身和单个表单元素的标签本身和单个表单元素的标签•所有表单标签处理类都继承了所有表单标签处理类都继承了UIBean类,类,UIBean包含了一些通用属性,这些通用属包含了一些通用属性,这些通用属性分成性分成3种:种:– 模板相关属性;模板相关属性;– javascript相关属性;相关属性;– 通用属性通用属性Struts2的基本用法的基本用法UIUI标签之标签之表单标签表单标签•form标签标签•textfield标签标签•textarea标签标签•checkbox标签标签•select标签标签•......Struts2的基本用法的基本用法UIUI标签之标签之非表单标签非表单标签•输出一些表单以外的输出一些表单以外的HTML元素元素•包括包括:Ø1,,a::生成一个超链接生成一个超链接Ø2,,actionerror::如果如果Action实例的实例的getActionErrors()方法返回不为方法返回不为null,,则该标签负责输出该方法返回的系列错误。
则该标签负责输出该方法返回的系列错误Ø3,,actionmessage::如果如果Action实例的实例的getActionMessages()方法返回不方法返回不为为null,,则该标签负责输出该方法返回的系列消息则该标签负责输出该方法返回的系列消息Ø4,,component::使用此标签可以生成一个自定义组件使用此标签可以生成一个自定义组件Ø5,,div::此标签负责生成一个此标签负责生成一个div片段片段Ø6,,fielderror::如果如果Action实例存在表单域的类型转换错误,校验错误,该实例存在表单域的类型转换错误,校验错误,该标签则负责输出这些错误提示标签则负责输出这些错误提示Ø7,,tabbedPanel::生成生成HTML页面的页面的Tab页Ø8,,tree::生成一个树形结构生成一个树形结构Ø9,,treenode::生成树形结构的节点生成树形结构的节点Ø.......Struts2的基本用法的基本用法OGNLOGNL介绍介绍•OGNL概述概述–Object Graph Navigation Language–一般用一般用 ”#” 访问对象访问对象•OGNL中的集合中的集合–list–map–查找查找–过滤过滤Struts2的基本用法的基本用法模板和主题模板和主题•回忆:什么是模板和主题?回忆:什么是模板和主题?•Struts2的默认模板的默认模板:FreeMarker模板模板•Struts2的自带主题的自带主题–Simple主题主题–xhtml主题主题–css_xhtml主题主题–AJAX主题主题•自定义主题自定义主题Struts2的基本用法的基本用法模板和主题模板和主题•simple主题是最简单的主题,它是最底层的结构,主要主题是最简单的主题,它是最底层的结构,主要用于构建附加的功能或者行为用于构建附加的功能或者行为(例如在此主题基础上进行例如在此主题基础上进行扩展扩展),使用,使用simple主题时,每个主题时,每个UI标签只生成一个简单标签只生成一个简单的的HTML元素,不会生成其他额外的内容。
元素,不会生成其他额外的内容•xhtml主题是主题是Struts2的默认主题,它对的默认主题,它对simple主题进行主题进行扩展,在该主题的基础上增加了如下附加的特性:扩展,在该主题的基础上增加了如下附加的特性:1,针对,针对HTML标签标签(如如textfield和和select标签标签)使用标准的使用标准的两列表格布局两列表格布局2,每个,每个HTML标签的标签的Label,即可以出现在,即可以出现在HTML元素的元素的左边,也可以出现在上边,这取决于左边,也可以出现在上边,这取决于labelposition属性属性的设置3,自动输出校验错误信息自动输出校验错误信息4,输出,输出JavaScript的客户端校验的客户端校验Struts2的基本用法的基本用法什么是什么是FreeMarker?FreeMarker?•FreeMarker允许允许Java servlet保持图形设保持图形设计同应用程序逻辑的分离,这是通过在模计同应用程序逻辑的分离,这是通过在模板中密封板中密封HTML完成的模板用完成的模板用servlet提提供的数据动态地生成供的数据动态地生成 HTML模板语言是模板语言是强大的直观的,编译器速度快,输出接近强大的直观的,编译器速度快,输出接近静态静态HTML页面的速度。
页面的速度•虽然虽然FreeMarker具有一些编程的能力,但具有一些编程的能力,但通常由通常由Java程序准备要显示的数据,由程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备生成页面,通过模板显示准备的数据的数据Struts2的基本用法的基本用法FreeMarkerFreeMarker运行示意图运行示意图Struts2的基本用法的基本用法FreeMarkerFreeMarker特性特性•1、通用目标、通用目标•2、强大的模板语言、强大的模板语言•3、通用数据模型、通用数据模型•4、为、为Web准备准备•5、智能的国际化和本地化、智能的国际化和本地化•6、强大的、强大的XML处理能力处理能力Struts2的基本用法的基本用法使用使用FreeMarkerFreeMarker•FreeMarker的使用的使用•演示例子演示例子81Struts2的基本用法的基本用法Freemarker.ftlFreemarker.ftlStruts2的基本用法的基本用法FreeMarkerServlet.javaFreeMarkerServlet.javaStruts2的基本用法的基本用法Web.xmlWeb.xmlStruts2的基本用法的基本用法运行效果运行效果Struts2的基本用法的基本用法目目 录录•1 Struts2的体系结构的体系结构•2 Struts2的配置文件的配置文件•3 实现实现Action接口接口•4 Result类型与拦截器介绍类型与拦截器介绍•5 EL及标签简介及标签简介•6 FreeMarker简介简介•7 Velocity简介简介•8 本讲小结本讲小结Struts2的基本用法的基本用法什么是什么是VelocityVelocity•什么是什么是Velocity?•如何在如何在Struts2 中使用中使用Velocity?•在在VM文件中使用标签文件中使用标签87Struts2的基本用法的基本用法使用使用VelocityVelocity•Velocity的使用的使用•演示例子演示例子Struts2的基本用法的基本用法JasperReportsJasperReports概述概述•什么是什么是JasperReports?有什么作用??有什么作用?•在在Struts2中如何使用中如何使用JasperReports•具体实例演示具体实例演示Struts2的基本用法的基本用法目目 录录•1 Struts2的常规配置的常规配置•2 实现实现Action接口接口•3 配置配置Action•4 配置处理结果配置处理结果•5 配置配置Struts2的异常处理的异常处理•6 Convention插件与插件与“约定约定”支持支持•7 使用使用Struts2的国际化的国际化•8 使用使用Struts2的标签库的标签库•9 本讲小结本讲小结Struts2的基本用法的基本用法本讲小结本讲小结•讲述了讲述了Struts2的基本用法的基本用法•需要多练习才能掌握需要多练习才能掌握91Struts2的基本用法的基本用法。
