JSTL整理.docx

上传人:b****1 文档编号:23099491 上传时间:2023-04-30 格式:DOCX 页数:29 大小:29.20KB
下载 相关 举报
JSTL整理.docx_第1页
第1页 / 共29页
JSTL整理.docx_第2页
第2页 / 共29页
JSTL整理.docx_第3页
第3页 / 共29页
JSTL整理.docx_第4页
第4页 / 共29页
JSTL整理.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

JSTL整理.docx

《JSTL整理.docx》由会员分享,可在线阅读,更多相关《JSTL整理.docx(29页珍藏版)》请在冰豆网上搜索。

JSTL整理.docx

JSTL整理

JSTL整理

Core支持JSP中的一些基本的操作;

XMLprocessing支持XML文档的处理;

I18Ncapableformatting支持对JSP页面的国际化;

Databaseaccess(SQL)支持JSP对数据库的操作。

Core标签库

通用标签

out>

out>标签用于在JSP中显示数据,它有如下属性属性描述是否必须缺省值

value输出的信息,可以是EL表达式或常量是无

default value为空时显示信息否无

escapeXml为true则避开特殊的xml字符集否true

例子:

您的用户名是:

outvalue=”${user.username}”default=”guest”/>

显示用户的用户名,如为空则显示guest

outvalue="${sessionScope.username}"/>

指定从session中获取username的值显示;

outvalue="${username}"/>

显示username的值,默认是从request(page)中取,如果request中没有则从session中取,session中没有则从application(servletContext)中取,如果没有取到任何值则不显示。

set>

set>标签用于保存数据,它有如下属性属性描述是否必须缺省值

value要保存的信息,可以是EL表达式或常量否 

target需要修改属性的变量名,一般为javabean的实例否无

property需要修改的javabean属性否无

var需要保存信息的变量否无

scope保存信息的变量的范围否page

如果指定了target属性,那么property属性也必须指定。

例子:

setvalue="${test.testinfo}"var="test2"scope=”session”/>

将test.testinfo的值保存到session的test2中,其中test是一个javabean的实例,testinfo是test对象的属性。

settarget="${cust.address}"property="city"value="${city}"/>

将对象cust.address的city属性值保存到变量city中

remove>

remove>标签用于删除数据,它有如下属性属性描述是否必须缺省值

var要删除的变量是无

scope被删除变量的范围否所有范围,包括page、request、session、application等

例子:

removevar="test2"scope="session"/>

从session中删除test2变量。

流控制标签

if>

if>标签有如下属性属性描述是否必须缺省值

test需要评价的条件,相当于if(...){}语句中的条件是无

var要求保存条件结果的变量名否无

scope保存条件结果的变量范围否page

choose>

when>

otherwise>

choose>标签不接受任何属性

when>标签有以下属性属性描述是否必须缺省值

test需要评价的条件是无

otherwise>标签同样不接受任何属性

例子:

iftest="${user.wealthy}">

user.wealthyistrue.

if>

如果user.wealthy值true,则显示user.wealthyistrue.

choose>

whentest="${user.generous}">

user.generous istrue.

when>

whentest="${user.stingy}">

user.stingyistrue.

when>

otherwise>

user.generousanduser.stingyarefalse.

otherwise>

choose>

只有当条件user.generous返回值是true时,才显示user.generous istrue.

只有当条件user.stingy返回值是true时,才显示user.stingy istrue.

其它所有的情况(即user.generous和user.stingy的值都不为true)全部显示user.generousanduser.stingyarefalse.

由于JSTL没有形如if(){…}else{…}的条件语句,所以这种形式的语句只能用

choose>、

when>和

otherwise>标签共同来完成了。

循环控制标签

forEach>

forEach>标签用于通用数据,它有以下属性属性描述是否必须缺省值

items进行循环的项目否无

begin开始条件否0

end结束条件否集合中的最后一个项目

step步长否1

var代表当前项目的变量名否无

varStatus显示循环状态的变量否无

例子:

forEachitems="${vectors}"var="vector">

outvalue="${vector}"/>

forEach>

在这里vectors是一个java.util.Vector对象,里面存放的是String数据,vector是当前循环条件下String对象。

实际上这里的vectors可以是任何实现了java.util.Collection接口的对象。

forEachbegin="0"end="100"var="i"step="1">

count=

outvalue="${i}"/>

forEach>

forTokens>

forTokens>标签有以下属性属性描述是否必须缺省值

items进行循环的项目是无

delims分割符是无

begin开始条件否0

end结束条件否集合中的最后一个项目

step步长否1

var代表当前项目的变量名否无

varStatus显示循环状态的变量否无

例子

forTokensitems="a:

b:

c:

d"delims=":

"var="token">

outvalue="${token}"/>

forTokens>

这个标签的使用相当于java.util.StringTokenizer类。

在这里将字符串a:

b:

c:

d以:

分开循环四次,token是循环到当前分割到的字符串。

导入文件和URL

JSTL核心标签库支持使用

import>来包含文件,使用

url>来打印和格式化URL,使用

redirect>来重定向URL。

import>

import>标签包含另外一个页面代码到当前页,它有以下属性属性描述是否必须缺省值

url需要导入页面的url是无

context/后跟本地web应用程序的名字否当前应用程序

charEncoding用于导入数据的字符集否ISO-8859-1

var接受导入文本的变量名否page

scope接受导入文本的变量的变量范围否1

varReader用于接受导入文本的java.io.Reader变量名否无

varStatus显示循环状态的变量否无

url>

url>标签输出一个url地址,它有以下属性属性描述是否必须缺省值

valueurl地址是无

context/后跟本地web应用程序的名字否当前应用程序

charEncoding用于导入数据的字符集否ISO-8859-1

var接受处理过的url变量名,该变量存储url否输出到页

scope存储url的变量名的变量范围否page

例子:

importurl="var="newsfeed"/>

将url

urlvalue="/index.jsp"/>"/>

在当前页的当前位置输出

redirect>

redirect>标签将请求重新定向到另外一个页面,它有以下属性属性描述是否必须缺省值

urlurl地址是无

context/后跟本地web应用程序的名字否当前应用程序

例子:

redirecturl="

将请求重新定向到

param>

param>标签用来传递参数给一个重定向或包含页面,它有以下属性属性描述是否必须缺省值

name在request参数中设置的变量名是无

value在request参数中设置的变量值否无

例子:

redirecturl="login.jsp">

paramname="id"value="888"/>

redirect>

将参数888以id为名字传递到login.jsp页面,相当于login.jsp?

id=888

FMT标签库

JSTLfmt库中的定制标记主要分成四组。

第一组允许您设置本地化上下文,其它标记将在其中进行操作。

换句话说,这组标记允许页面作者显式地设置其它fmt标记在格式化数据时将要使用的语言环境和时区。

第二组和第三组标记分别支持对日期和数字进行格式化和解析。

最后一组标记侧重于对文本消息进行本地化。

配置变量

JSTL标记在格式化数据时所使用的语言环境往往是通过查看用户浏览器发送的每个HTTP请求所包含的Accept-Language头来确定的。

如果没有提供这样的头,那么JSTL提供一组JSP配置变量,您可以设置这些变量以指定缺省的语言环境。

如果尚未设置这些配置变量,那么就使用JVM的缺省语言环境,该缺省语言环境是从JSP容器所运行的操作系统中获取的。

setLocale>

fmt库提供了其自身的定制标记,以覆盖这个确定用户语言环境的过程:

setLocale>。

setLocale>操作支持三个属性:

setLocalevalue="expression"scope="scope"variant="expression"/>

其中只有一个属性是必需的:

value属性。

该属性的值应当是命名该语言环境的一个字符串或者是java.util.Locale类的一个实例。

可选属性scope用来指定语言环境的作用域

variant属性(可选)允许您进一步针对特定的Web浏览器平台或供应商定制语言环境。

例如,MAC和WIN分别是AppleMacintosh和MicrosoftWindows平台的变体名。

setTimeZone>

JSP容器处理完该JSP代码段之后,将忽略用户浏览器设置中所指定的语言首选项。

setTimeZone>操作像

setLocale>一样,可以用来设置其它fmt定制标记所使用的缺省时区值。

它的语法如下所示:

setTimeZonevalue="var="name"scope="scope"/>

value属性是必需的,应当是时区名或java.util.TimeZone类的实例。

可选的scope属性来指出时区设置的作用域。

您还可以使用

setTimeZone>操作将TimeZone实例的值存储在限定了作用域的变量中。

var属性来命名限定了作用域的变量,用scope属性来指定该变量的作用域。

timeZone>

这组中的最后一个标记是

timeZone>操作:

timeZonevalue="expression">

bodycontent

timeZone>

该标记用来指定将由其它JSTL标记使用的时区。

但是,

timeZone>操作的作用域仅限于其标记体内容。

timeZone>标记体中,由标记的value属性指定的时区覆盖了JSP环境中现有的任何其它时区设置。

value属性应当是时区名或者是java.util.TimeZone实例。

日期标记

formatDate>用来格式化和显示日期和时间(数据输出),而

parseDate>用来解析日期和时间值(数据输入)。

formatDate>

formatDatevalue="expression"timeZone="expression"type="field"dateStyle="style"timeStyle="style"pattern="expression"var="name"scope="scope"/>

value属性才是必需的。

其值应当是java.util.Date类的实例,指定要进行格式化和显示的日期和/或时间数据。

可选的timeZone属性指出将要显示哪个时区的日期和/或时间。

如果没有显式地指定timeZone属性,那么就使用周围任何

timeZone>标记所指定的时区。

如果

timeZone>标记的主体部分没有包含

formatDate>操作,那么就使用任何适用的

setTimeZone>操作所设置的时区。

如果没有相关的

setTimeZone>操作,那么就使用JVM的缺省时区。

type属性指出要显示指定的Date实例的哪些字段,应当是time、date或both。

该属性的缺省值是date,因此如果没有给出type属性,那么

formatDate>标记(名符其实)将只显示与Date实例相关的日期信息,这个信息用该标记的value属性指定。

dateStyle和timeStyle属性分别指出应当如何格式化日期和时间信息。

有效的样式有default、short、medium、long和full。

缺省值自然是default,指出应当使用特定于语言环境的样式。

其它四个样式值的语义与java.text.DateFormat类定义的一样。

可以使用pattern属性来指定定制样式,而不必依赖于内置样式。

给出定制样式后,该模式属性的值应当是符合java.text.SimpleDateFormat类约定的模式字符串。

这些模式基于用对应的日期和时间字段代替模式内指定的字符。

如果指定了var属性,那就把包含格式化日期的String值指派给指定的变量。

否则,

formatDate>标记将写出格式化结果。

当指定了var属性后,scope属性指定所生成变量的作用域。

清单1包含了

formatDate>标记的两种用法。

在第一种用法中,

formatDate>只用来显示第一个weblog项的创建时间戳记的日期部分。

此外,为dateStyle属性指定了一个full值,这样一来所有的日期字段就将用一种特定于语言环境的格式进行显示。

使用

formatDate>标记来显示日期和时间值

timeZonevalue="US/Eastern">

forEachitems="${entryList}"var="blogEntry"varStatus="status">

iftest="${status.first}">

formatDatevalue="${blogEntry.created}"dateStyle="full"/>

if>

outvalue="${blogEntry.title}"escapeXml="false"/>

outvalue="${blogEntry.text}"escapeXml="false"/>

[Posted

formatDatevalue="${blogEntry.created}"pattern="h:

mmazz"/>]

forEach>

timeZone>

forEach>循环体中,第二个

formatDate>操作只用来显示每个项的创建日期的时间部分。

在本例中,pattern属性用来控制时间值的格式化、并控制指定一位数的小时显示(如果可能的话)、12小时的时钟和缩写时区的输出。

parseDate>

formatDate>生成了java.util.Date实例的本地化字符串表示,而

parseDate>操作执行相反的操作:

给定一个表示日期和/或时间的字符串,它将生成相应的Date对象。

parseDate>操作有两种格式,如下所示:

parseDatevalue="expression"type="field"dateStyle="style"timeStyle="style"pattern="expression"timeZone="expression"parseLocale="expression"var="name"scope="scope"/>

parseDatetype="field"dateStyle="style"timeStyle="style"pattern="expression"timeZone="expression"parseLocale="expression"var="name"scope="scope">

bodycontent

parseDate>

对于第一种格式,只有value属性才是必需的,它的值应当是指定日期、时间或这两者组合的字符串。

对于第二种格式,没有必需的属性,表示要解析的值的字符串被指定为

parseDate>标记必需的标记体内容。

type、dateStyle、timeStyle、pattern和timeZone属性对

parseDate>和对

formatDate>起一样的作用,不同之处仅在于对于前者,它们控制日期值的解析而非显示。

parseLocale属性用来指定一种语言环境,将根据这种语言环境来解析该标记的值,它应当是语言环境的名称或Locale类的实例。

var和scope属性用来指定限定了作用域的变量(作为

parseDate>的结果),将把Date对象赋给该变量。

如果没有给出var属性,则使用Date类的toString()方法将结果写到JSP页面中。

清单2显示了

parseDate>操作的一个示例:

清单2.使用

parseDate>标记来解析日期和时间

setvar="usDateString">4/1/037:

03PM

set>

parseDatevalue="${usDateString}"parseLocale="en_US"type="both"dateStyle="short"timeStyle="short"var="usDate"/>

setvar="gbDateString">4/1/0319:

03

set>

parseDatevalue="${gbDateString}"parseLocale="en_GB"type="both"dateStyle="short"timeStyle="short"var="gbDate"/>

  • Parsing

    outvalue="${usDateString}"/>againstthe

    U.S.Englishlocaleyieldsadateof

    outvalue="${usDate}"/>.

  • Parsing

    outvalue="${gbDateString}"/>againstthe

    BritishEnglishlocaleyieldsadateof

    outvalue="${gbDate}"/>.

parseDate>所执行的解析非常严格,注意这一点很重要。

正如清单2所暗示的那样,要解析的值必须严格符合特定(特定于语言环境)的样式或模式。

这当然更加受限制。

另一方面,数据的解析并不是一个非常适合于表示层的任务。

对于生产代码,文本输入的验证和转换最好由后端代码(比如servlet)来处理,而不是通过JSP定制标记来处理。

数字标记

formatNumber>和

parseNumber>标记对数字数据执行类似的功能。

formatNumber>

用来以特定于语言环境的方式显示数字数据,包括货币和百分数。

formatNumber>操作由语言环境确定。

下面是它的语法:

formatNumbervalue="expression"type="type"pattern="expression"currencyCode="expression"currencySymbol="expres

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1