发表于: 2018-01-01 23:09:20
1 460
今日完成
1.回成都
2.学习taglib标签
(1)c:out
<c:out> 标签用于输出一段文本内容到pageContext对象当前保存的“out”对象中,在通常情况下,pageContext对象当前保存的“out”对象的数据是输出到客户端浏览器,所以,<c:out> 标签通常用于输出一段文本内容到客户端浏览器。如果<c:out> 标签输出的文本内容中包含了需要进行转义的HTML特殊字符,例如,<、>、'、"、&等,<c:out> 标签默认对它们按表8.2进行HTML编码转换后再进行输出,这样就可以在浏览器中显示出这些字符。
表8.2 特殊字符转换
<c:out>标签标签有两种语法格式:
语法1,没有标签体的情况:
<c:out value="value"
[escapeXml="{true|false}"]
[default="defaultValue"] />
语法2,有标签体的情况,在标签体中指定输出的默认值:
<c:out value="value"
[escapeXml="{true|false}"] >
default value
</c:out>
<c:out>标签的属性说明如表8.3所示。
表8.3 <c:out>标签的属性
属性名 | 是否支持EL | 属性类型 | 属 性 描 述 |
value | true | Object | 指定要输出的内容 |
escapeXml | true | Boolean | 指定是否将>、<、&、'、" 等特殊字符进行HTML编码转换后再进行输出。默认值为true |
default | true | Object | 指定如果value属性的值为null时所输出的默认值 |
当且仅当value属性的值为null时,<c:out> 标签输出默认值;如果没有指定默认值,默认为空字符串。<c:out> 标签的标签体的内容用于指定输出的默认值,如果value属性的值不为null,即使标签体部分不为空,标签体的内容也不会被输出。如果value属性不是指向一个java.io.Reader对象,<c:out> 标签将调用这个对象的toString方法,然后输出获得的字符串内容。如果value属性指向一个java.io.Reader对象,<c:out> 标签将从这个Reader对象中读取数据后进行输出,当有大量数据要被输出时,将这些数据以Reader对象的形式提供给<c:out>标签进行输出,将会极大提高系统性能。当采用escapeXml属性的默认设置值true时,<c:out>标签将对要输出的特殊字符按表8.2进行转换;如果将escapeXml属性设置为false,<c:out>标签将不对要输出的特殊字符进行转换,而是直接输出这些特殊字符。
(2) <c:if>标签
JSP页面的显示逻辑中也经常需要进行条件判断,<c:if>标签可以构造简单的“if-then”结构的条件表达式,如果条件表达式的结果为真就执行标签体部分的内容。<c:if>标签有两种语法格式:
语法1,没有标签体的情况:
<c:if test="testCondition" var="varName"
[scope="{page|request|session|application}"] />
语法2,有标签体的情况,在标签体中指定要执行的内容:
<c:if test="testCondition" [var="varName"]
[scope="{page|request|session|application}"]>
body content
</c:if>
<c:if>标签的属性说明如表8.5所示。
表8.5 <c:if>标签的属性
属性名 | 是否支持EL | 属性类型 | 属 性 描 述 |
test | true | boolean | 决定是否处理标签体中的内容的条件表达式 |
var | false | String | 用于指定将test属性的执行结果保存到某个Web域中的某个属性的名称 |
scope | false | String | 指定将test属性的执行结果保存到哪个Web域中 |
对于语法2,如果指定了<c:if>标签的scope属性,则必须指定var属性。
例程8-10是使用<c:if>标签的一个演示例子程序。
例程8-10 c_if.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=gb2312" %>
<jsp:useBean id="user" class="org.it315.UserBean" />
<c:set value="${param.count}" target="${user}" property="visitCount" />
<c:if test="${user.visitCount == 1}">
这是您第一次访问本网站,欢迎您!
</c:if>
在浏览器地址栏输入如下地址访问例程8-10:
http://localhost:8080/JSTL/c_if.jsp?count=1
(3)<fmt:formatDate>标签
<fmt:formatDate>标签用于对日期和时间按本地化信息进行格式化,或对日期和时间按化为JSP页面作者自定义的格式进行格式化。<fmt:formatDate>标签的语法格式如下:
<fmt:formatDate value="date"
[type="{time|date|both}"]
[dateStyle="{default|short|medium|long|full}"]
[timeStyle="{default|short|medium|long|full}"]
[pattern="customPattern"]
[timeZone="timeZone"]
[var="varName"]
[scope="{page|request|session|application}"] />
<fmt:formatDate>标签的属性说明如表8.17所示。
表8.17 <fmt:formatDate>标签的属性
属性名 | 是否支持EL | 属性类型 | 属 性 描 述 |
value | true | java.util.Date | 指定要格式化的日期或时间 |
type | true | String | 指定是格式化输出日期部分,还是格式化输出时间部分,还是两者都输出 |
dateStyle | true | String | 指定日期部分的输出格式,其可用的设置值可以参照java.text.DateFormat类的讲解。该属性仅在type属性取值为date或both时才有效 |
timeStyle | true | String | 指定时间部分的输出格式,其可用的设置值请参照java.text.DateFormat类的讲解。该属性仅在type属性取值为time或both时才有效 |
pattern | true | String | 指定一个自定义的日期和时间输出格式 |
timeZone | true | String或java.util.timeZone | 指定当前采用的时区 |
var | false | String | 用于指定将格式化结果保存到某个Web域中的某个属性的名称 |
scope | false | String | 指定将格式化结果保存到哪个Web域中 |
<fmt:formatDate>标签有如下一些特性:
l 如果没有指定var属性,<fmt: formatDate>标签将直接输出格式化的结果;如果指定了var属性,则<fmt:formatDate>标签将格式化的结果保存在scope属性指定的Web域中,保存在Web域中的属性名称为var属性指定的值。如果指定了scope属性,就必须指定var属性。
l 如果value属性的值为null,则不输出任何内容,如果这时候指定了var和scope属性,将scope属性指定的Web域中的var属性指定的域属性删除。
l JSP网页作者可以使用pattern属性设置自定义的日期格式,这时候,<fmt:formatDate>标签将忽略type、dateStyle和timeStyle等属性。pattern属性的值必须符合java.text.SimpleDateFormat类的日期模式的语法。
l 如果timeZone属性的值为null或者空字符串,相当于没有设置这个属性。
l 如果要格式化一个表示日期或时间的字符串,必须首先用<fmt:parseDate>标签将其解析为java.util.Date类的一个实例对象,再使用<fmt:formatDate >标签对这个Date实例对象进行格式化。<fmt:parseDate>标签的介绍请参看8.4.11节。
l 如果<fmt:formatDate>标签不能确定格式化的本地化信息,就使用java.util.Date.toString()方法作为输出格式。
例程8-34是一个使用<fmt:formatDate>标签的例子程序。
例程8-34 fmt_formatDate.jsp
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.util.TimeZone" %>
<jsp:useBean id="now" class="java.util.Date" />
格式化当前日期、时间:
<fmt:formatDate value="${now}" type="both" timeStyle="medium" dateStyle="long"/>
<hr/>
<%
session.setAttribute("tz", TimeZone.getTimeZone("GMT+10"));
%>
指定时区为“GMT+10”:
<fmt:formatDate value="${now}" type="both" timeZone="${tz}" /><hr />
指定自定义的格式,月.日.年:
<fmt:formatDate value="${now}" pattern="MM.dd.yyyy" /><hr />
格式化用字符串表示的日期:
<fmt:parseDate value="7/31/05" pattern="MM/dd/yy" var="parsed" />
<fmt:formatDate value="${parsed}" />
今天在回家路上,没什么内容。
明日计划
1.小课堂资料提交。
2.tiglib学习,完成任务四时间类型处理,整理提交任务四。
遇到问题
无
收获
1.taglib的基本使用
2.努力学习
评论