您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 工作范文 > Struts2表现层技术
企业级JAVAII软件工程系:聂常红cred_n@163.com内容回顾:•Struts2拦截器的拦截机理?•Struts2拦截器的配置•自定义Struts2拦截器第4讲Struts2的表现层技术•4.1概述•4.2OGNL表达式语言•4.3Struts2标签类型•4.4Struts2表单及其元素标签•4.5Struts2数据标签•4.6Struts2逻辑标签•4.7非表单UI标签•4.8使用主题模板4.1概述•使用标签可以避免在JSP页面中嵌套大量的Java脚本,极大的提高视图页面的可维护性。%@taglibprefix=suri=/struts-tags%•Struts2提供了一个标签库:struts-tags标签库,几乎所有struts2标签都整合到其中•在JSP中使用struts2标签时,需要使用以下代码引入标签库:在struts-2.1版本以后的ajax标签使用标签库:struts-dojo-tags%@taglibprefix=sxuri=/struts-dojo-tags%Ajax标签:•Struts2主要使用了Struts2标签库和OGNL(ObjectGhaphNativeLanguage,对象图导航语言)表达式语言二项技术来简化表现层方面的开发。•struts2标签库使用OGNL表达式作为基础,极大的提高了对集合、对象的访问能力•struts2标签库支持模板和主题,极大的简化了视图页面的编写4.2OGNL表达式语言•OGNL是一种可以方便操作对象属性的开源表达式语言,是struts2的默认表达式语言。主要具有以下优点:–可以方便地访问OGNL上下文和ActionContext–可以方便地操作对象、数组及集合•使用OGNL访问对象的属性的基本格式:–propertyName–#Object.propertyName•使用OGNL操作集合:创建集合:1)List集合:{‘book1’,’book2’,’book3’}2)Map集合:#{‘bookl’:23,’book2’:36}使用in、notin元素符判断某个元素是否在指定集合中:s:iftest=“’book1’in{‘book1’,’book2’}”使用选择操作符获取集合的子集:1)?:获取所有符合条件的子集2)^:获取符合条件的第一个子集3)$:获取符合条件的最后一个子集例如:person.relative.{?#this.gender==“m”}•使用OGNL访问对象和属性时经常需要使用#、%、$操作符OGNL的“#”操作符的作用1)访问OGNL上下文和Action上下文,此时“#”相当于ActionContext.getContext()ActionContext是Struts2中OGNL的上下文环境。它维护着一个Map的结构,如下图所示Action上下文Map对象说明:•ValueStack:为OGNL上下文的根对象,当前的Action实例总是放到ValueStack,不需要使用“#”操作符,可直接访问该对象,其余Map对象访问时必须使用“#”.•parameters:包含当前HTTP请求参数的Map,#parameters.id相当于request.getParameter(id)•request:包含当前HttpServletRequest的属性的Map,#request.name相当于request.getAttribute(“name)•session:包含当前HttpSession的属性的Map#session.name相当于session.getAttribute(“name”)•application:包含当前应用的ServletContext的属性的Map,#application.name相当于application.getAttribute(“name”)•attr:用于按pagerequestsessionapplication顺序访问其属性,#attr.name相当于按顺序在以上四个范围(scope)内读取name属性,直到找到为止2)用于选择和投影集合,如:选择(子集):books.{?#this.price100}投影:books.{?#this.price100}.{bookName}3)用于构造Map,如:#{‘bookl’:’23’,’book2’:’36’}OGNL的“%”操作符的作用•在标签的属性为字符串类型时,可使用%和“{”和“}”计算OGNL表达式的值,如:label=“%{username}”、label=“%{#session.username}”OGNL的“$”操作符的作用•“$”有两个主要的用途:–用于在国际化资源文件中,引用动作属性及配置项中定义的属性值,如:${min}、${max}–在Struts2配置文件中,引用动作属性值,如:resultadmin.jsp?type=${type}/result•UI标签:•表单标签:主要用于生成HTML表单•非表单标签:主要用于在页面中生成一些非表单的可视化元素,如显示信息的标签:actionerror、actionmessage•非UI标签:•逻辑控制标签:主要用于条件、循环等流程控制,如if、elseif、iterator•数据标签:主要用于数据存储和处理,如property、bean、text•Ajax标签:主要用于支持Ajax,如显示日期的datetimepicker4.3struts2标签类型4.4struts2表单及其元素标签属性说明action指定处理表单所提交信息的动作method定义表单信息提交的方法,默认为post表示什么意思?•表单标签:s:form–常用属性:–例如:s:formaction=FormAction“/•按钮标签:–提交按钮:s:submit,用于提交表单数据–重置按钮:s:reset,用于返回表单的默认值–常用属性:–例如:s:submitvalue=提交表单/属性说明name定义按钮的名字,动作类通过该名字取得按钮的值value定义按钮上的显示字符串属性说明name定义输入框的名字,动作类通过该名字取得输入框的值label定义输入框的描述字符串,默认显示在输入框的左边readonly定义输入框的只读属性,true表示输入框不能编辑rows定义文本域的行数cols定义文本域的列数•输入框标签:–文本框标记:s:textfield,用于输入单行文本–密码框标记:s:password,用于输入密码–文本域标记:s:textarea,用于输入多行文本–常用属性:–例如:–s:textfieldname=“text”label=“登录名称/–s:passwordname=“password”label=“登录密码/–s:textareaname=“textarea”label=“个人简介rows=8cols=“30/•选择框标签:–单选框标签:s:radio,用于在一组选项中互斥选择,即同组中一次只能选择一项–复选框集合标签:s:checkboxlist,设置同一组选项中可作多项选择的选择项,可一次设置多个复选框•常用属性:属性说明name定义选择框的名字,动作类通过该名字取得选择框的值value定义选择框的默认选中项list定义选择框各选项。注意:如果list属性值不是一个列表集合,而是一个Java对象或Map对象,则还须指定listKey和listValue两个属性listKey指定集合元素中的某个属性作为选择框的value。元素为Java对象时,则指定为该对象的某个属性名;元素为Map对象时,则指定为该对象的key或valuelistValue指定集合元素中的某个属性作为选择框的label。元素为Java对象时,则指定为该对象的某个属性名;元素为Map对象时,则指定为该对象的value或keylabel定义选择框的显示labellabelposition定义label的显示位置,默认为居左显示•例如:–s:radioname=“employee”list=“{‘员工1’,‘员工2’,‘员工3’}”label=“选择员工”value=“’员工3’”/–s:checkboxlistlabel=“喜欢运动”list=“#{1:‘网球’,2:’乒乓球’,3:’蓝球’}“listKey=“key”listValue=“value”value={1,2}name=sports/•列表框标签s:select:–作用:用于创建列表框–常用属性:属性说明name定义列表框的名字,动作类通过该名字取得列表框的值value定义列表的默认选中项list定义列表的各列表项。注意:如果list属性值不是一个列表集合,而是一个Java对象或Map对象,则还须指定listKey和listValue两个属性listKey指定集合元素中的某个属性作为列表项的value,具体应用参见选择框listValue指定集合元素中的某个属性作为列表项的label,具体应用参见选择框size定义列表框一次显示的列表项数目,默认为1multiple定义列表框是否可以多项选择,取值为true|false,默认为falseheaderKey定义列表框标题对应的提交数据headerValue定义列表框标题字符串emptyOption定义列表框第一个有效数据前面是否有空行,取值true|false,默认为false•例如(下拉列表):s:selectname=book1label=选择图书headerKey=-1headerValue=---选择其中一本图书---list={'图书1','图书2','图书3','图书4','图书5'}value='图书3'emptyOption=true/效果图•例如(列表):s:selectname=books_maplabel=图书列表labelposition=toplist=#{'Struts2':'Struts2从入门到精通','Spring2.5':'Spring2.5开发宝典','Ajax':'Ajax实战','Jsp':'Jsp技术详解'}listKey=keylistValue=value“multiple=truesize=4value={'Spring2.5','Jsp'}/效果图•s:label–只读标签,用于输出指定属性的信息到浏览器–常用属性:–例如:s:labellabel=爱好的运动name=sports/属性说明name指定需要输出的属性的名字label定义输出的标签字符串•表单标签综合应用示列:•创建一个动作类•创建一个表单参数输入JSP页面,保存目录为WebRoot•创建一个结果显示JSP页面,保存目录为WebRoot•编写配置文件,定义动作包和动作1.创建动作FormTagsAction:(接前):2.创建表单参FormTagsInput.jsp:3.表单结果显FormTagsResult.jsp:4.编写配置文件,定义动作包和动作:执行结果:4.5Struts2数据标签•常用struts2数据标签:–s:action–s:property–s:param–s:date–s:text–s:url•s:action–用于在JSP页面直接调用一个Action–常用属性如下:–例如:s:actionname=“LoginActionexecuteResult=“true/属性说明name指定标签调用的Actionnamespace指定标签调用的Action所在的namespaceexecuteResult指定是否要将Action的处理结果页面包含到本页面•s:property–用于输出指定属性的值到浏览器–常用属性如下:–例如:s:property/s:propertyvalue=name/s:propertyvalue=noNamedefault=默认值/属性说明value指定需要输出值的属
本文标题:Struts2表现层技术
链接地址:https://www.777doc.com/doc-4449508 .html