发表于: 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属性取值为dateboth时才有效

timeStyle

true

String

指定时间部分的输出格式,其可用的设置值请参照java.text.DateFormat类的讲解。该属性仅在type属性取值为timeboth时才有效

pattern

true

String

指定一个自定义的日期和时间输出格式

timeZone

true

Stringjava.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,则不输出任何内容,如果这时候指定了varscope属性,将scope属性指定的Web域中的var属性指定的域属性删除。

l  JSP网页作者可以使用pattern属性设置自定义的日期格式,这时候,<fmt:formatDate>标签将忽略typedateStyletimeStyle等属性。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.努力学习



返回列表 返回列表
评论

    分享到