JSTL表达式.docx
- 文档编号:7251353
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:14
- 大小:95.96KB
JSTL表达式.docx
《JSTL表达式.docx》由会员分享,可在线阅读,更多相关《JSTL表达式.docx(14页珍藏版)》请在冰豆网上搜索。
JSTL表达式
JSTL标签
在JSP页面要用到核心标签,必须使用以下指令:
<%@tagliburi="
/core"prefix="c"%>
变量标记
set>: 操作提供基于标记的机制来创建和设置限制了作用域的变量。 语法一: 将value的值储存至范围为scope的varName变量之中 setvalue="value"var="varName"[scope="{page|request|session|application}"]/> 属性: 1var属性: 指定了限制了作用域的变量的名称 2scope属性表明了该变量驻留在哪个作用域中,可选的,其缺省值是page。 2value属性: 指定了分配给该变量的值 如果指定变量已经存在,则简单地将所指明的值赋给它。 如果不存在,则创建新的限制了作用域的变量,并用该值初始化这个变量。 看下面使用 set>的两个示例。 setvar="timezone"scope="session"value="CST"/> 将会话作用域变量设置成String值。 setvar="square"value="${param['x']*param['x']}"/> 用表达式来设置数值: 将页面作用域内名为square的变量赋值为名为x的请求参数的值的平方。 语法二: 将本体内容的数据储存至范围为scope的varName变量之中 setvar="varName"[scope="{page|request|session|application}"]> …本体内容 set> set>主体内生成的所有内容都将作为一个String值赋给指定变量。 语法三: 将value的值储存至target对象的属性中 c: setvalue="value"target="target"property="propertyName"/> 语法四: 将本体内容的数据储存至target对象的属性中 settarget="target"property="propertyName"> …本体内容 set> 名称 value var scope target property 说明 要被储存的值 欲存入的变量名称 var变量的JSP范围 为一JavaBean或java.util.Map对象 指定target对象的属性 EL Y N N Y Y 类型 Object String String Object String 必须 否 否 否 否 否 默认值 无 无 page 无 无 注意: 一 set>标签有两种不同的属性设置: var和target。 var“版本”用于设置作用域属性,target“版本”用于设置bean属性或Map值。 ★var“版本” 1 setvar="userLevel"scope="session"value="Cowboy"/> 2 setvar="fido"value="${person.dog}"/> 3 setvar="user"scope="session"> Sheriff,Bartender,Cowgirl set> 如果“value”为null,“var”指定的属性将被删除! 如果“var”指定的属性不存在,则会创建一个属性,但仅当“value”不为null时才会创建新属性。 ★target“版本” 1. settarget="${petMap}"property="dogName"value="Clover"scope="session"/> 2. settarget="${person}"property="name"> ${foo.name} set> 如果“target”是一个Map,“property”指定的是该Map的一个键;如果“target”是一个bean,“property”指定的是该bean的一个成员字段。 如果“target”表达式为null,容器会抛出一个异常。 如果“target”表达式不是一个Map或bean,容器会抛出一个异常。 如果“target”表达式是一个bean,但是这个bean没有与“property”匹配的成员字段,容器会抛出一个异常。 二定义变量的使用范围: setvar="varName"[scope="{page|request|session|application}"]> 默认的是: page范围;“scope”是可选的,如果没有使用这个属性,则默认为页面作用域。 具体的,当没有使用这个属性时,容器会依次在页面作用域、请求作用域、会话作用域、应用作用域查找,如果找不到“var”指定名字的作用域属性,容器就会在页面作用域新建一个属性;如果找不到“target”指定的对象,容器会抛出一个异常。 setvar="para"value="${41+1}"scope="session"/> outvalue="${sessionScope.para}"/> remove>: 是用来删除限制了作用域的变量的。 删除数据。 语法: 没有本体(body)内容 removevar="varName"[scope="{page|request|session|application}"]/> removevar="timezone"scope="session"/> 属性: 1var属性: 指定待删除变量的名称 2scope属性是可选的,它表示待删除变量来自哪个作用域,缺省为page。 名称 var scope 说明 欲移除的变量名称 var变量的JSP范围 EL N N 类型 String String 必须 是 否 默认值 无 page 输出 out>: 显示表达式的值,而不存储它。 类似<%=%> 语法一: 没有本体(body)内容 outvalue="value"[escapeXml="{true|false}"][default="defaultValue"]/> 该标记对由其value属性指定的表达式进行求值,在对value属性的表达式求值所得结果为null或空String的情况下, out>将打印其值。 如果value值为null,则显示default的值;没指定default,则输出空字符串。 语法二: 有本体(body)内容 outvalue="value"[escapeXml="{true|false}"]> defaultvalue out> 名称 value default escapeXml 说明 需要显示出来的值 如果value的值为null,则显示default的值 是否转换特殊字符,如: <转换成< EL Y Y Y 类型 Object Object boolean 必须 是 否 否 默认值 无 无 true escapeXml属性也是可选的。 它控制当用 out>标记输出诸如“<”、“>”和“&”之类的字符(在HTML和XML中具有特殊意义)时是否应该进行转义。 如果将escapeXml设置为true,则会自动将这些字符转换成相应的XML实体(此处提到的字符分别转换成<、>和&)。 例如,假定有一个名为user的会话作用域变量,它是一个类的实例,该类为用户定义了两个特性: username和company。 每当用户访问站点时,这个对象被自动分配给会话,但直到用户实际登录后,才会设置这两个特性。 假定是这种方案,在用户登录之后,这个片段将显示单词“Hello”,其后是他/她的用户名和一个惊叹号。 但是,在用户登录之前,由这个片段生成的内容则是短语“HelloGuest! ”。 在这种情况下,因为username特性还有待初始化,所以 out>标记将转而打印出default属性的值(即字符串“Guest”)。 Hello outvalue="${user.username}"default="Guest"/>! 登陆之前: HelloGuest! 登陆之后: Hello${user.username}! if>: 执行流程控制,就和我们一般在程序中用的if一样。 语法一: 没有本体(body)内容 iftest="testCondition"var="varName"[scope="{page|request|session|application}"]/> 语法二: 有本体(body)内容 iftest="testCondition"[var="varName"][scope="{page|request|session|application}"]>本体内容 if> 如果表达式的结果为true,则执行本体内容,false则相反 注意: if>标签必须要有test属性,当test中的表达式结果为true时,则会执行本体内容;如果为false,则不会执行。 如果指定了scope属性,则必须指定var属性。 choose>: 本身只当做 when>和 otherwise>的父标签。 语法: 有本体(body)内容 choose> 本体内容( choose> 限制: 除了空白字符外, choose>的标签体只能包含这两个标签。 choose>的本体内容只能有: a.空白 b.1或多个 when> c.0或1个 otherwise> 说明: 1运行时,判断 when>标签的测试条件是否为true,第一个测试条件为true的 when>标签的标签体将被JSP容器执行。 如果没有满足条件的 when>标签,那么, otherwise>的标签体将被执行。 2若使用 when>和 otherwise>来做流程控制时,两者都必须为 choose>的子标签 when>: 作为 choose>的子标签,表示一个可选的条件。 语法: 有本体(body)内容 whentest="testCondition"> 本体内容 when> 名称 说明 EL 类型 必须 默认值 test 如果表达式的结果为true,则执行本体内容,false则相反 Y boolean 是 无 约束: when>必须有一个直接的父标签 choose>,而且必须在同一个父标签下的 otherwise>标签之前出现。 说明: 运行时,判断 when>标签的测试条件是否为true,第一个测试条件为true的 when>标签的标签体被JSP容器执行。 otherwise>: 作为 choose>的子标签,表示最后的选择,在同一个 choose>中,当所有 when>的条件都没有成立时,则执行 otherwise>的本体内容。 语法: 有本体(body)内容 otherwise> 本体内容 otherwise> 属性: 无 限制: otherwise>必须在 choose>和 choose>之间 ·在同一个 choose>中时, otherwise>必须为最后一个标签。 说明: 在同一个 choose>中,假若所有 when>的test属性都不为true时,则执行 otherwise>的本体内容。 choose> whentest="${condition1}"> condition1为true when> whentest="${condition2}">condition2为true when> otherwise> condition1和condition2都为false otherwise> choose> 范例说明: 当condition1为true时,会显示“condition1为true”;当condition1为false且condition2为true时,会显示“condition2为true”,如果两者都为false,则会显示“condition1和condition2都为false”。 注意 假若condition1和condition2两者都为true时,此时只会显示"condition1为true",这是因为在同一个 choose>下,当有好几个 when>都符合条件时,只能有一个 when>成立。 forEach>: 为循环控制,它可以将集合(Collection)中的成员循序浏览一遍。 运作方式为当条件符合时,就会持续重复执行 forEach>的本体内容。 语法一: 迭代一集合对象之所有成员 forEach[var="varName"]items="collection"[varStatus="varStatusName"] [begin="begin"][end="end"][step="step"]> forEach> 语法二: 迭代指定的次数 forEach[var="varName"][varStatus="varStatusName"]begin="begin"end="end"[step="step"]> forEach> 名称 说明 EL 类型 必须 默认值 var 用来存放现在指到的成员 N String 否 无 items 被迭代的集合对象 Y ArraysCollection Iterator EnumerationMapString 否 无 varStatus 用来存放现在指到的相关成员信息 N String 否 无 begin 开始的位置 Y int 否 0 end 结束的位置 Y int 否 最后一个成员 step 每次迭代的间隔数 Y int 否 1 限制: ·假若有begin属性时,begin必须大于等于0 ·假若有end属性时,必须大于等于begin ·假若有step属性时,step必须大于等于0 Null和错误处理 ·假若items为null时,则表示为一空的集合对象 ·假若begin大于或等于items.length时,则迭代不运算 说明如果要循序浏览一个集合对象,并将它的内容显示出来,就必须有items属性。 注意 varName的范围只存在 forEach>的本体中,如果超出了本体,则不能再取得varName的值。 上个例子中,若${item}是在 forEach>之后执行时,如: forEachitems="${atts}"var="item"> forEach> ${item} ${item}则不会显示item的内容。 forEach>除了支持数组之外,还有标准J2SE的集合类型,例如: ArrayList、List、LinkedList、Vector、Stack和Set等等;另外还包括java.util.Map类的对象,例如: HashMap、Hashtable、Properties、Provider和Attributes。 forEach>还有begin、end和step这三种属性: begin主要用来设定在集合对象中开始的位置(注意: 第一个位置为0);end用来设定结束的位置;而step则是用来设定现在指到的成员和下一个将被指到成员之间的间隔。 我们将之前的范例改成如下: forEach>中指定的集合对象atts将会从第2个成员开始到第5个成员,并且每执行一次循环都会间隔一个成员浏览。 因此结果是只显示atts[1]和atts[3]的内容 JSTL之数字、日期格式化--- formatNumber/>、 formatDate/> 日期表示 formatDatevalue="${DATE1}"pattern="yyyy-MM-ddhh: mm: ss"type="date"dateStyle="long"/> 百分数,千分数表示 formatNumbervalue="${DoubleVALUE}"type="number"pattern="0.00‰"/>0.01‰ formatNumbervalue="${DoubleVALUE}"type="number"pattern="0.00%"/>0.20% 其他数字表示 fmt: formatNumbervalue="123456.7891"pattern="#,#00.0#"/>--123,456.79 formatNumbervalue="123456.7"pattern="#,#00.0#"/>--123,456.7 formatNumbervalue="123456.7"pattern="#,#00.00#"/>--123,456.70 formatNumbervalue="12"type="percent"/>--1,200%type可以是currency、number、和percent。 货币表示 ===1 setLocalevalue="ch_CH"/> formatNumbervalue="${data}"type="currency"/> ==2 formatNumbervalue="${doubleValue}"type="number"pattern="¥0.00"/> 参考============================================================================== java格式化输出: DecimalFormatdf=newDecimalFormat("格式"); Stringfmt=df.format(double); 符号意义 0一个数位 #一个数位,前导零和追尾零不显示 .小数点分割位置 ,组分隔符的位置 -负数前缀 %用100乘,并显示百分号 其他任何符号在输出字符串中包括指定符号 JSP国际化-格式化货币和日期 1.格式化货币 世界上许多国家都有不同的货币格式和数字格式惯例。 针对特定的本地化环境正确地格式化和显示货币是本地化的一个重要部分。 <%@pagepageEncoding="UTF-8"%> <%@taglibprefix="c"uri="%> <%@taglibprefix="fmt"uri="%> setLocalevalue="en_GB"/> formatNumbertype="currency"value="80000"/> setLocalevalue="en_US"/> formatNumbertype="currency"value="80000"/> setLocalevalue="fr_FR"/> formatNumbertype="currency"value="80000"/> setLocalevalue="ja_JP"/> formatNumbertype="currency"value="80000"/> setLocalevalue="ko_KR"/> formatNumbertype="currency"value="80000"/> setLocalevalue="es_ES"/> formatNumbertype="currency"value="80000"/> setLocalevalue="ar_EG"/> formatNumbertype="currency"value="80000"/> setLocalevalue="en_GB"/> formatNumbertype="currency"value="80000"/>CurrencyFormattingandlocales
English,GreatBritain
English,USA
French,France
Japanese,Japan
Korean,Korea
Spanish,Spain
Arabic,Egypt
UsingLocalNumericFormattingforDifferentCurrency
English,GreatBritan
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JSTL 表达式