c标签.docx
《c标签.docx》由会员分享,可在线阅读,更多相关《c标签.docx(36页珍藏版)》请在冰豆网上搜索。
![c标签.docx](https://file1.bdocx.com/fileroot1/2023-4/16/18f00aaa-f76d-46a1-86f8-575da465da41/18f00aaa-f76d-46a1-86f8-575da465da411.gif)
c标签
jstlC标准标签库Ⅰ
前言
从JSP 1.1规范开始,JSP就支持在JSP中使用自定义标签了,自定义标签的广泛使用造成了程序员重复定义,这样就促成了JSTL(JavaServerPagesStandardTagLibrary)的诞生。
作者:
杨通杆(
JSTL简介
JSTL是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。
JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat4.x。
但是在即将推出的JSP2.0中是作为标准支持的。
JSTL目前的最新版本为1.02,最终发布版为1.0。
JSTL包含两个部分:
标签库和EL(ExpressionLanguage表达式语言)语言。
标签库目前支持四种标签:
标签
URI
前缀
示例
Core
c
tagname...>
XMLprocessing
x
tagname...>
I18Ncapableformatting
fmt
tagname...>
Databaseaccess(SQL)
sql
tagname...>
Core支持JSP中的一些基本的操作;
XMLprocessing支持XML文档的处理;
I18Ncapableformatting支持对JSP页面的国际化;
Databaseaccess(SQL)支持JSP对数据库的操作。
让我先给你介绍c标签吧.
1.out>
库:
Core(核心库)
URI:
前缀:
c
描述:
out>标签是一个最常用的标签,用于在JSP中显示数据。
它的作用是用来替代通过JSP内置对象out或者<%=%>标签来输出对象的值。
语法:
没有Body时的语法
outvalue=”value”[escapeXml=”{true|false}”][default=”defaultValue”]/>
有Body时的语法
outvalue=”value”[escapeXml=”{true|false}”]>
这里是Body部分
out>
属性:
属性名
描述
类型
是否接受动态值
是否支持EL
是否
必须
默认值
说明
value
需要显示的值
Object
Y
Y
Y
无
用来定义需要求解的表达式。
escapeXml
是否转换特殊字符
boolean
Y
Y
N
true
用于指定在使用out>标记输出诸如“<”、“>”、“’”、“””和“&”之类的字符(在HTML和XML中具有特殊意义)时是否应该进行转义。
如果将escapeXml设置为true,则会自动的进行编码处理。
default
缺省值
Object
Y
Y
N
无
当求解后的表达式为null或者String为空时将打印这个缺省值。
Null和错误说明
假若value为null,会显示default的值;假若没有设定default的值,则会显示一个空的字符串。
实例:
------------------------------------------------------------------------------------------------------------------------------------------
Example1
outvalue="${sessionScope.anyValue}"default="novalue"escapeXml="false"/>
该示例将从Session查找名为“anyValue”的参数,并显示在页面,若没有找到则显示“novalue”。
------------------------------------------------------------------------------------------------------------------------------------------
Example2
您的用户名是:
outvalue=”${user.username}”default=”guest”/>
显示用户的用户名,如为空则显示guest
outvalue="${sessionScope.username}"/>
指定从session中获取username的值显示;
outvalue="${username}"/>
显示username的值,默认是从request(page)中取,如果request中没有名为username的对象则从session中取,session中没有则从application(servletContext)中取,如果没有取到任何值则不显示
------------------------------------------------------------------------------------------------------------------------------------------
2.set>
库:
Core(核心库)
URI:
前缀:
c
描述:
set>标签用于为变量或JavaBean中的变量属性赋值的工作。
这个标签用于在某个范围(page、request、session、application等)中使用某个名字设定特定的值,或者设定某个已经存在的javabean对象的属性。
他类似于<%request.setAttrbute("name","value");%>
语法:
语法1:
没有body
将value的值存储至范围为scope的varName变量之中
setvalue="value"var="varName"[scope="{page|request|session|application}"]/>
语法2:
有body
将body内容存储至范围为scope的varName变量之中
setvalue="value"[scope="{page|request|session|application}"]>
body.....
set>
语法3:
将value的值存储至target对象属性中
setvalue="value"target="target"property="propertyNmae"/>
语法4:
将body内容的数据存储至target对象属性中
settarget="target"property="propertyNmae">
body....
set>
ØNull和错误处理:
语法3和语法4会产生异常错误,有以下两种情况:
.target为null
.target不是java.util.Map或JavaBean对象
假若value为null时:
将由存储变量改为移除变量
.语法1:
由var和scope所定义的变量,将被移除
.若scope已指定时,则PageContext.removeAttribute(varName,scope);
.若scope未指定时,则PageContext.removeAttribute(varName);
.语法3:
.假若target为Map时,则Map.remove(property);
.假若target为JavaBean时,propertye指定的属性为null
注意:
var和scope这两个属性不能使用表达式来表示,我们不能写成scope="${ourScope}"或var="${a}"
属性:
属性名
描述
类型
是否接受动态值
是否支持EL
是否
必须
默认值
说明
value
要被存储的值
Object
true
Y
否
无
被计算的表达式
var
变量名
String
false
N
否
无
被导出的保存了value属性计算结果的范围变量的名称
scope
范围
String
true
N
否
page
var的JSP范围
target
目标对象
String
true
Y
否
无
要设置属性的对象。
必须是JavaBean对象或java.util.Map对象
property
指定target对象属性
Object
true
Y
否
无
要设置的target对象的属性的名称
实例:
------------------------------------------------------------------------------------------------------------------------------------------
Example1
setvalue="thisisandy"var="oneString"/>
该示例将为名为“oneString”的变量赋值为“thisisandy”,其作用范围为page。
------------------------------------------------------------------------------------------------------------------------------------------
Example2
settarget="${cust.address}"property="city"value="$"/>
将对象cust.address的city属性值保存到变量city中。
------------------------------------------------------------------------------------------------------------------------------------------
Example3
设置不同的属性,并且指定它们的范围:
setvalue="10000"var="maxUser"scope="application"/>
setvalue="20"var="maxIdelTime"scope="session"/>
setvalue="next.jsp"var="nextPage"scope="page"/>
------------------------------------------------------------------------------------------------------------------------------------------
Example4
setvar="bid"value="${param.bookId}"/>
setPropertyname="bookDB"property="bookId"value="${bid}"/>
------------------------------------------------------------------------------------------------------------------------------------------
Example5
<%Foofoo=newFoo();pageContext.setAttribute("foo",foo);%>
outvalue="${foo.date}"/>
settarget="${foo}"property="day"value="1"/>
outvalue="${foo.date}"/>
------------------------------------------------------------------------------------------------------------------------------------------
3.remove>
库:
Core(核心库)
URI:
前缀:
c
描述:
remove>标签用于删除存在于scope中的变量。
类似于<%session.removeAttribute(“name”)%>、
<%request.removeAttribute(“name”)%>...
语法:
removevar="varName"[scope="{page|request|session|application}"]/>
属性:
属性名
描述
类型
是否接受动态值
是否支持EL
是否
必须
默认值
说明
var
变量名
String
N
N
是
无
欲移除变量的名称
scope
范围
String
N
N
否
page
var变量的JSP范围;若没有指定,默认为全部查找
------------------------------------------------------------------------------------------------------------------------------------------
实例:
Example1
removevar="sampleValue"scope="session"/>
${sessionScope.sampleValue}
------------------------------------------------------------------------------------------------------------------------------------------
Example2
removevar="username"scope="session"/>
将username变量从session范围移除。
若我们不设定scope,则remove>会移除所有范围名称为username
的数据。
------------------------------------------------------------------------------------------------------------------------------------------
4.catch>
库:
Core(核心库)
URI:
前缀:
c
描述:
catch>动作用于捕获JSP元素在其体中抛出的异常,从而提供细粒度的错误控制,此异常也可以保存为一个页面作用域变量。
当错误发生catch>和
catch>之间时,只有catch>和
catch>之间的程序会被中止忽略,但整个网页不会被中止。
它包含一个var属性,是一个描述异常的变量,该变量可选。
若没有var属性的定义,那么仅仅捕捉异常而不做任何事情,若定义了var属性,则可以利用var所定义的异常变量进行判断转发到其他页面或提示报错信息。
语法:
catch[var="var"]>
//可能发生错误的部分
JSPelements
catch>
属性:
属性名
描述
类型
是否接受动态值
是否支持EL
是否
必须
默认值
说明
var
变量名
String
N
N
N
无
用来存储错误信息的变量
实例:
------------------------------------------------------------------------------------------------------------------------------------------
Example1
catchvar="importException">
parseDatevalue="${param.empDate}"dateStyle="short"/>
catch>
iftest="${importException!
=null}">
forwardpage="input.jsp">
paramname="msg"value="Invaliddateformat"/>
forward>
if>
------------------------------------------------------------------------------------------------------------------------------------------
Example2
catchvar="err">
${param.sampleSingleValue[9]==3}
catch>
${err}
当“${param.sampleSingleValue[9]==3}”表达式有异常时,可以从var属性“err”得到异常的内容,通常判断“err”是否为null来决定错误信息的提示。
------------------------------------------------------------------------------------------------------------------------------------------
5.if>
库:
Core(核心库)
URI:
前缀:
c
描述:
if>动作仅当所指定的表达式计算为true时才计算其体。
计算结果也可以保存为一个作用域Boolean变量。
语法:
语法1:
没有体
iftest="booleanExpression"
var="var"[scope="page|request|session|application"]/>
语法2:
有体
iftest="booleanExpression">
JSPelements
if>
属性:
属性名
描述
类型
是否接受动态值
是否支持EL
是否
必须
默认值
说明
test
测试表达式
boolean
Y
Y
是
无
如果表达式的结果为true则执行body,false则相反
var
变量名
String
N
N
否
无
用来存储test运算后的结果,即true或false
scope
变量作用域
String
N
N
否
page
var变量的JSP范围
实例:
iftest="${emptyparam.empDate}">
forwardpage="input.jsp">
paramname="msg"value="MissingtheEmploymentDate"/>
forward>
if>
6.choose>
库:
Core(核心库)
URI:
前缀:
c
描述:
choose>动作用于控制嵌套when>和otherwise>动作的处理,它只允许第一个测试表达式计算为true的when>动作得到处理;如果所有when>动作的测试表达式都计算为false,则会处理一个otherwise>动作。
choose>标签没有属性,可以被认为是父标签,when>、otherwise>将作为其子标签来使用。
语法:
choose>
body(和)
choose>
限制:
choose>的本地内容只能有:
.空白
.1或多个when>
.0或多个otherwise>
属性:
无
实例:
----------------------------------------------------------------------------------------------------------------------------------------
Example1
choose>
whentest="${product.onSale}">
${product.salesPrice}Onsale!
when>
otherwise>
${product.price}
otherwise>
choose>
---------------------------------------------------------------------------------------------------------------------------------------
Example2
choose>
whentest="${condition1}">
condition1为true
when>
whentest="${condition2}">
condition2为true
when>
otherwise>
condition1和conditon2都为false
otherwise>
说明:
在同一个choose>中,假如所有的when>的test都不为true时,则执行otherwise>的本体内容。
在同一个choose>中,假若有好几个when>都会true时,只能有一个when>成立。
choose>
-------------------------------------