JSTL帮助文档

一、核心标签库

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

 

<%String kjk="ui,er,san,si";

request.setAttribute("kjk",kjk);

 %>

<%String array[]={"00","11","22","33"};

request.setAttribute("array",array);%>

<c:set value="lixiaofeng" var="user" scope="request"></c:set>

<c:set var="users" scope="request">gggdfd</c:set>

<c:out value="${requestScope.user}" escapeXml="true"></c:out>

<c:remove var="user" scope="request"/>

<c:out value="${requestScope.user}" escapeXml="true"></c:out>

 

<c:choose>

   <c:when test="">

   </c:when>

   <c:otherwise>

   </c:otherwise>

</c:choose>

<c:forEach items="${requestScope.array}" var="it">

<c:out value="ghg">

</c:out>

</c:forEach>

 

<c:forTokens delims="," items="${requestScope.kjk}" var="nn">

<c:out value="${nn}">

</c:out>

</c:forTokens>

 

1/1通用标签

1/1/1<c:out>标签

属性名

描述

是否必需

默认值

Value

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

default

Value属性的值为null时输出的信息

标签体的内容

escapeXml

是否忽略value属性值的XML标签

true

<c:out value="${header['User-Agent']}" escapeXml="true"></c:out>

<c:out value="<h3>练习1</h3>" escapeXml="false">

</c:out>

<c:out value="<h3>练习2</h3>" escapeXml="true">

</c:out>

<c:out value="<h3>练习3</h3>">

</c:out>

1/1/2<c:set>标签

属性名

描述

是否必要

默认值

Value

要设定的值,可以是常量字符串或EL表达式

标签体内容

Target

需要设定属性的对象

Property

被赋值的属性名

Var

被赋值的变量名

Scope

变量的使用范围,取值为pagerequestsessionapplication之一

Page

注:如果target属性存在,则property属性必须存在

4种用法:

1  <c:set value="lixiaofeng" var="user" scope="request"/>

2  <c:set var="user" scope="request">

lixiaofeng

</c:set>

3  <c:set value="lixiaofeng" target="target" property =" propertyName "/>

4  <c:set target="target" property =" propertyName ">

              lixiaofeng

</c:set>

 

例子:

<%

HashMap hm=new HashMap();

hm.put("actor1","葛优");

hm.put("actress1","林心如");

hm.put("actress2","赵薇");

request.setAttribute("hm",hm);

request.setAttribute("money",new Integer("100"));

%>

<c:set var="money" value="200" scope="page">

</c:set>

<c:out value="${hm.actor1}"/>

<c:out value="${hm.actress1}"/>

<c:out value="${hm.actress2}"/>

 

<!--为对象添加属性actor2-->

<c:set target="${hm}" property="actor2">

梁朝伟

</c:set>

<!--修改对象的属性actor1的值-->

<c:set value="郑伊健" target="${hm}" property="actor1">

</c:set>

<c:out value="${hm.actor2}"/>

<c:out value="${hm.actor1}"/>

<c:out value="shjsjh">

</c:out>

1/1/3<c:remove>标签

属性名

描述

是否必要

默认值

Var

被删除的变量或对象名

Scope

被删除的变量或对象所在的范围,取值为pagerequestsessionapplication之一

范围

<c:set value="lixiaofeng" var="user" scope="request"></c:set>

<c:out value="${requestScope.user}" escapeXml="true"></c:out>

<c:remove var="user" scope="request"/>

<c:out value="${requestScope.user}" escapeXml="true"></c:out>

注:<c:set>标签也可以用于删除变量和对象,如:

<c:set var=”varName” value=”${expresstion}” scope=”page|request|session|application”/>value的值表达式微null是,则变量或对象将从指定范围内删除,若不指定范围,将删除所有找到的

1/1/4<c:catch>标签

属性名

描述

是否必要

默认值

Var

接收异常信息的变量名

 

<c:catch var="ex1">

<%String s1="abc";

out.print(s1.length());

%>

</c:catch>

无异常:${ex1}<br/>

<c:catch var="ex2">

<% String s2=null;

out.print(s2.length());

%>

</c:catch>

异常1${ex2}<br/>

<c:catch var="ex3">

<%int a=0;

out.print(8/a);

%>

</c:catch>

异常2${ex3}

 

 

1/2条件标签

 

//条件标签<c:if> <c:choose> <c:when> <c:otherwise>

1/2/1 <c:if>

 

属性名

描述

是否必需

默认值

test

 用于条件判断的布尔表达式

Var

存储条件判断结果的变量

Scope

Var变量的使用范围,取值为pagerequestsessionapplication之一

page

<c:if test="${1!=0}">

<c:out value="mmm"></c:out>

</c:if>

 

<jsp:useBean id="now" class="java.util.Date" scope="request"></jsp:useBean>

${now.hours}${now.minutes}${now.seconds}

<c:if test="${now.hours>=0&&now.hours<12}">

上午好

</c:if>

<c:if test="${now.hours>=12&&now.hours<18}">

下午好

</c:if>

<c:if test="${now.hours>=18&&now.hours<=23}">

晚上好

</c:if>

1/2/2<c:choose> <c:when> <c:otherwise>

<c:set var="score" value="${param.score}">

</c:set>

<c:choose>

  <c:when test="${score>0&&score<=60}">

    成绩很不理想,继续努力

  </c:when>

  <c:when test="${score>60&&score<=75}">

    成绩一般,继续努力

  </c:when>

  <c:when test="${score>75&&score<=90}">

    成绩不错,继续努力

  </c:when>

  <c:when test="${score>90&&score<=100}">

    成绩很好,继续保持

  </c:when>

  <c:otherwise>

  成绩输入有误

  </c:otherwise>

</c:choose>

1/3循环迭代标签

 

//循环迭代标签

1/3/1<c:forEach>

属性名

描述

是否必须

默认值

Items

用于迭代的对象

begin

循环迭代的起始位置

0

end

循环迭代的结束位置

对象最后一个元素

Step

循环迭代的步长

1

Var

循环迭代的当前元素对象

varStatus

循环迭代的当前元素的状态

注:items或者beginend属性必须指定其一varstatus包括4个状态:indexcountfirstlast

<% 

HashMap hm=new HashMap();

hm.put("age","30");

hm.put("height","150");

hm.put("sex","female");

hm.put("get","5k");

request.setAttribute("hm",hm);

%>

<c:forEach var="mm" items="${hm}" varStatus="ss">

   ${mm.key} ${mm.value} ${ss.index} ${ss.first} ${ss.last} ${ss.count}<br/>

</c:forEach>

<!--遍历StringTokenizer-->

<h3>"氮气,氧气,二氧化碳,氢气,硫化氢,一氧化碳,二氧化硫"</h3>

<c:forEach var="vv" items="氮气,氧气,二氧化碳,氢气,硫化氢,一氧化碳,二氧化硫" begin="2" end="6" varStatus="sy">

  <c:if test="${sy.first}">

  begin:${sy.begin}

  end:${sy.end}

  ${vv}

  </c:if>

  <c:if test="${sy.last}">

  总数为:${sy.count}

  </c:if>

</c:forEach>

 

1/3/2<c:forTokens>标签

属性名

描述

是否必要

默认值

Items

StringTokenizer

Delims

分隔符

Begin

起始位置

0

End

结束位置

StringTokenizer的最后一个元素

Step

步长

1

Var

当前元素

varStatus

当前元素的状态

注:只能遍历以逗号作为分隔符的StringTokenizer对象,可以同时指定一个或者多个分隔符

<%String kjk="ui,er,san,si";

request.setAttribute("kjk",kjk);

 %>

<c:forTokens delims="," items="${requestScope.kjk}" var="nn">

<c:out value="${nn}">

</c:out>

</c:forTokens>

 

<c:set value="西瓜,苹果--香蕉,西红柿,芒果-水蜜桃-栗子,菠萝,橙子-樱桃,葡萄-柿子" var="fruits">

</c:set>

<!--以“-”为分隔符-->

<c:forTokens var="fruit" delims="-" items="${fruits}" varStatus="ss">

${ss.count}: ${fruit}<br/>

</c:forTokens>

 

<!--以“,”为分隔符-->

<c:forTokens var="fruit" delims="" items="${fruits}" varStatus="ss">

${ss.count}: ${fruit}<br/>

</c:forTokens>

 

<!--以“,”为分隔符 begin2end5-->

<c:forTokens var="fruit" delims="" items="${fruits}" varStatus="ss" begin="2" end="5"><br/>

${ss.count}: ${fruit}

</c:forTokens>

 

<!--以“-,”为分隔符-->

<c:forTokens var="fruit" delims="-" items="${fruits}" varStatus="ss"><br/>

${ss.count}: ${fruit}

</c:forTokens>

 

<!--以“-,”为分隔符 begin2end5-->

<c:forTokens var="fruit" delims="-" items="${fruits}" varStatus="ss" begin="2" end="5"><br/>

${ss.count}: ${fruit}

</c:forTokens>

 

<!--以“-,”为分隔符-->

<c:forTokens var="fruit" delims="-" items="${fruits}" varStatus="ss" step="3"><br/>

${ss.count}: ${fruit}

</c:forTokens>

1/4URL相关标签

实现资源导入,格式化URL,参数传递和重定向等,有4个:<c:import>  <c:url>  <c:param>  <c:redirect>

1/4/1 <c:import>

属性名

描述

是否必要

默认值

URL

导入资源的URL

Context

/加上本地WEB应用的名字,当URL属性为相对地址时使用

当前的WEB应用

charEncoding

导入资源时使用的编码字符集

ISO-8859-1

Var

保存导入内容的变量

输出到页面

Scope

变量使用的范围

Page

VarReader

保存导入内容的Java.io.Reader对象

 

导入其他服务器资源

<c:import url="http://www.baidu.com/" charEncoding="gbk">

</c:import>

导入本地资源

<c:import url="importtest.jsp" context="/webpage" var="vv">

${vv}

</c:import>

需要在tomcatserver.xml<host>内添加

<Content path=”/webpage” docBase=”webpage” debug=”0” reloadable=”true”  crossContext=”true”/>

1/4/2 <c:url>标签

属性名

描述

是否必要

默认值

Value

用于输出或格式化的url

Context

/加上本地WEB应用的名字,当URL属性为相对地址时使用

当前的应用

Var

保存导入内容的变量

输出到页面

Scope

变量的使用范围

Page

<c:url>的用法:

1<c:url  value=”value” [context=”context”]/>

2<c:url  value=”value” [context=”context”]>

              <c:param>…..

</c:url >

3<c:url  value=”value” [context=”context”] var =“varName”  [scope=”page|request|session|application”]/>

4<c:url  value=”value” [context=”context”] var =“varName”  [scope=”page|request|session|application”]>

                     <c:param>…..

 

</c:url>

 

 

 

输出绝对URL<c:url value="http://www.sohu.com"></c:url><br/>

输出相对URL<c:url value="/WEB-INF/web.xml" context="/webpage"></c:url><br/>

输出带参数的URL

<c:url value="/iftest.jsp">

   <c:param name="a" value="1">

   </c:param>

   <c:param name="b" value="2">

   </c:param>

</c:url><br/>

保存格式化:

绝对URL

<c:url var="ftp" value="ftp://61.185.32.191">

</c:url>

<a href="${ftp}">电子图书</a><br/>

保存相对地址:

<c:url var="testhtml" value="/paratest.html" context="/webpage">

</c:url>

<a href="${testhtml}">web应用</a><br/>

保存带参数的URL

<c:url var="testhtml1" value="/paratest.html" context="/webpage">

 <c:param name="user" value="lixiaofeng">

 </c:param>

 <c:param name="age" value="21">

 </c:param>

</c:url>

<a href="${testhtml1}">fengfei</a>

1/4/3 <c:param>标签

属性名

描述

是否必须

默认值

Name

参数的名字

Value

参数的值

标签体内容

注:不能独立使用,只能用于<c:import> <c:url> <c:redirect>标签体内添加参数

 

1/4/4 <c:redirect>标签

属性名

描述

是否必须

默认值

URL

请求被重定向的URL

Context

/加上本地WEB应用的名字,当URL属性为相对地址时使用

当前web应用

注:相当于responsesendredirect(),它能支持中文的自动编码,支持自动URL重写,并允许使用不同的WEB应用的相对URL

 

<c:redirect url="/servletone" context="/Webpage">

    <c:param name="color">

   Red

    </c:param>

      <c:param name="sex">

    Female

    </c:param>

      <c:param name="hob">

   singsong

    </c:param>

</c:redirect>

 

二、格式标签库

<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

 

2/1国际化(I18N)标签

国际化(又I18N

包括:<fmt:setLocale>   <fmt:requestEncoding>   <fmt:bundle>    <fmt:setBundle>

<fmt:message>    <fmt:param>

2/1/1  <fmt:setLocale>标签

属性名

描述

是否必要

默认值

Value

区域属性,可以是类型为Java.util.Location的表达式,也可以是字符串,字符串格式为“11”或“11_CC”或11-CC11为语言代码,CC为国家代码。参见:

http:www.sil.org/iso639-3/codes.asp

http:www.iso.org/iso/country_codes/iso_3166_code_lists/en

glish_country_name_and_code_elements.html

Variant

厂商或浏览器的特点变量如:WIN  ,MAC

Scope

区域设定的适用范围

Page

 

2/1/2 <fmt:requestEncoding>标签

属性名

描述

是否必要

默认值

Value

请求中字符的编码格式,参见:http:www.iana.org/assignments/character-sets

 

2/1/3 <fmt:bundle>标签

属性名

描述

是否必须

默认值

Basename

资源包文件的基本名称后缀由jsp容器根据页面的区域属性来确定

Prefix

文件项中“键”的前缀

 

2/1/4 <fmt:setBundle>标签

属性名

描述

是否必要

默认值

Basename

资源包文件的基本名称后缀由jsp容器根据页面的区域属性来确定

Var

存储资源包的变量

存储在javax.servlet.jsp.jstl.fmt.loca

lizatinoContext

Scope

变量的使用范围

Page

 

 

2/1/5 <fmt:message>标签

属性名

描述

是否必须

默认值

Key

资源文件的键,如果<fmt:message><fmt:bundle>标签内部使用,键的前面会自动加上<fmt:bundle>中的prefix属性值的的前缀

标签体内容

Bundle

值为表达式,当<fmt:message>标签独立使用时,该属性指明所使用的资源包

默认资源包

Var

存储键所对应的值的变量

输出到页面

Scope

变量的使用范围

Page

 

2/2日期处理标签

<fmt:formatDate>   <fmt:parseDate>  <fmt:timeZone>    <fmt:setTimeZone>

2/2/1 <fmt:timeZone>标签

 

属性值

描述

是否必要

默认值

Value

表示时区的字符串或者Java.util.TimeZone类型的对象

2/2/2<fmt:setTimeZone>标签

属性名

描述

是否必需

默认值

Value

表示时区的字符串或者Java.util.TimeZone类型的对象

Var

存储时区的变量

存储在javax.servlet.jsp.jstl.fmt.

timeZone

Scope

变量的使用范围

Page

 

2/2/3<fmt:formatDate>标签

属性名

描述

是否必须

默认值

Value

用于格式化的日期对象

Type

DateTimeboth

Date

DateStyle

defaultshortmediumlongfull

default

TimeStyle

defaultshortmediumlongfull

default

pattern

自定义格式化的格式如:yyyy-mm-dd格式

timeZone

格式化使用时区

默认时区

Var

存储格式化结果的变量

输出到页面

Scope

变量的使用范围

Page

Pattern

字符

描述

字符

描述

G

公元(如公元,AD等)

H

小时(按天计,0-23

y

年(yy为两位数,yyyy为四位)

k

小时(按天计,1-24

M

月(MM为数字月,MMM为月名)

K

小时(按上下午计,0-11

W

周(一年中的第几周)

h

小时(按上下午计,1-12

w

周(一月中的第几周)

m

D

日(一年中的第几天)

s

d

日(一月中的第几天)

S

毫秒

F

月份中的星期

z

时区名:(如GMT+08:00

E

一周内的星期几

Z

时区编号(如:+0800

a

上下午指示(如上午AM等)

 

 

 

2/2/4<fmt:parseDate>标签

属性名

描述

是否必须

默认值

Value

用于解析的字符串

标签体内容

type

datetimeboth

date

dateStyle

default.short,,medium.long,full

default

ParseLocale

解析字符串时使用的区域属性

默认区域属性

TimeStyle

default.short,,medium.long,full

default

Pattern

自定义解析格式

timeZone

所解析的字符串的时区

默认时区

Var

存储解析后日期对象的变量

输出到页面

Scope

 变量的使用范围

Page

2/3数字处理标签

<fmt:formatNumber>  <fmt:parseNumber>

2/3/1<fmt:formatNumber>标签

属性名

描述

是否必须

默认值

Value

用于格式化的数值

标签体内容

type

Number,curencypercent

Number

pattern

自定义格式化的格式如:$#,##00.0#

currencyCode

当类型为curency是,指定货币编码

取决于默认区域属性

curencySymbol

当类型为curency是,指定货币符号

取决于默认区域属性

groupingUsed

是否对数值分组,取值为truefalse

True

maxIntegerDigits

最大整数位

minIntegerDigits

最小整数位

maxFractionDigits

最大小数位

minFractionDigits

最小小数位

Var

存储格式化结果的变量

输出到页面

Scope

变量的使用范围

Page

2/3/2<fmt:parseNumber>标签

属性名

描述

是否必须

默认值

value

用于解析的字符串

标签体内容

type

Number,curencypercent

number

parseLocale

解析时使用的区域属性

默认区域属性

integerOnly

解析成整数(true)或解析成浮点数(false

False

pattern

自定义解析格式

Var

存储解析后数值类型的变量

输出到页面

Scope

变量的使用范围

Page

 

 

三、函数标签库

<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

 

使用:

${fn:函数名(参数列表)}

 

 

函数

说明

contains(s1,s2)

判断字符串s2是否在字符串s1

containsIgnoreCase(s1,s2)

同上,但忽略大小写

startsWith(s1,s2)

判断字符串s1是否以字符串s2开头

endsWith(s1,s2)

判断字符串s1是否以字符串s2结尾

escapeXml(s)

忽略字符串s中的Xml标签

indexOf(s1,s2)

返回字符串s2在字符串s1中第一次出现的位置

split( s1,s2)

s2指定的分隔字符集分割字符串s1,返回字符串数组

join(String[] s1,s2)

将字符串数组s1的所有字符串,以s2中指定的链接符组合

replace(s1,s2,s3)

将字符串s1中的子串s2用字符串s3替换

trim(s)

取出s两端空格

substring(s,i1,i2)

返回字符串s中从i1开始到i2-1结束的子串

substringAfter(s1,s2)

抽取字符串s1中子串s2后的字符串

substringBefore(s1,s2)

抽取字符串s1中子串s2前的字符串

toLowerCase(s)

转换字符串s中的所有字符串转化为小写字符

toUpperCase(s)

转换字符串s中的所有字符串转化为大写字符

length(s)

返回字符串s的长度

 

例子:

函数表达式:\${fn:contains("dddd","dhkjhj")}

结果:${fn:contains("dddd","dhkjhj")}

四、 SQL标签库

<%@taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>

 

4/0/1<sql:setDataSource>

属性名

描述

是否必须

默认值

dataSource

JNDIdataSource的名字或dataSource对象

 

driver

JDBC驱动程序名字

 

url

数据库连接的JDBC url

 

user

访问数据库的用户名

 

password

访问数据库的密码

 

var

存储数据源的变量

 

默认的数据源变量

scope

变量使用范围

 

Page

 

<sql:setDataSource driver="com.mysql.jdbc.Driver" user="root" password="root" url="jdbc:mysql://localhost:3306/ebusi?antoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>

4/0/2 <sql:query>

属性名

描述

是否必须

默认值

sql

执行查询的SQL语句

标签体内容

dataSource

用于指明所使用的数据源

默认数据源

maxRows

查询结果的最大行数

无限制

startRow

查询结果的起始行索引值

0

var

存储查询结果的变量

scope

变量的使用范围

Page

 

<sql:setDataSource driver="com.mysql.jdbc.Driver" var="ds" user="root" password="root" url="jdbc:mysql://localhost:3306/ebusi?antoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>

 <sql:query var="result" dataSource="${ds}" sql="select * from table_admin" >

  <c:forEach var="row" items="${result.rows}">

  ${row.admin_login_name}

  </c:forEach>

</sql:query>

4/0/3<sql:update>标签

属性名

描述

是否必须

默认值

sql

执行更新的SQL语句

标签体的内容

dataSource

用于指明所使用的数据源

默认数据源

var

存储更新操作所影响的行数的变量

scope

变量使用范围

page

 

<sql:update dataSource="${ds}">

   insert into table_user_base values(1022,'dddd','123456',0.0,0,0)

</sql:update>

4/0/4<sql:param><sql:dateParam >标签

<sql:query><sql:update>标签中使用了带参数的SQL语句(参数用?表示),则需要<sql:param><sql:dateParam >设置执行时传递的参数的值,<sql:param>只有一个属性value

属性名

描述

是否必需

默认值

value

用于指明日期类型参数的值

标签体内容

type

Cajsu8的具体类型,取值为datetimetimestamp

timestamp

 

<sql:update dataSource="${ds}">

   update table_user_base set user_base_name=? where id=1001

   <sql:param value="kjl">

   </sql:param>

</sql:update>

4/0/5<sql:transaction>标签

属性名

描述

是否必需

默认值

dataSource

用于指明所使用的数据源

默认数据源

isolationLevel

事物处理的隔离级别,取值为read_committedread_uncommittedrepeatable_readserializable

数据源指定的数据库的默认隔离级别

五、XML标签库

<%@taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>

 

JSTLXML标签库提供了解析XML文档。提取xml文档中数据、流程控制和XSLT转换等功能。分为:xml核心标签,xml流程标签,xml转换标签

xml核心标签:<x:parse>  <x:out>  <x:set >

xml流程标签:<x:if>   <x:choose>  <x:forEach>  <x:when>  <x:otherwise>

xml转换标签:<x:transform>  <x:param>

<x:parse>标签用于解析xml文档,它解析的可以是代表xml文档的StringReader对象,也可以是其标签体内的xml数据

属性名

描述

是否必需

默认值

doc(xml)

用于解析的xml文件,可以是StringReader对象,推荐使用doc属性

标签体内容

systemId

为解析的xml文档指定系统标识uri

filter

解析xml之前使用的XMLFilter类型的过滤器

var

存储解析结果的变量

scope

Var变量的使用范围

Page

varDom

存储解析结果为DOM类型的变量

scopeDom

varDom变量的使用范围

Page

 

<x:out>标签用于计算Xpath表达式的值并输出

属性名

描述

是否必需

默认值

select

用于计算Xpath表达式

escapeXml

输出表达式的值时,是否忽略其中的XML标签

True

<x:set >标签用于计算Xpath表达式并将其结果保存在变量中

属性名

描述

是否必需

默认值

select

用于计算Xpath表达式

var

存储表达式结果的变量

scope

变量的使用范围

Page

注:Xpath表示数据在XML文档中的存储位置,通过计算Xpath表达式的值,可以提取xml文档中的数据

你可能感兴趣的:(jstl)