jstl表达式详解

1 概述

JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能。jstl出现的目的同el一样也是要代替jsp页面中的脚本代码。JSTL标准标签库有5个子库,但随着发展,目前常使用的是他的核心库。

2 应用

2 .1 maven约束

    <dependency>
       <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>

3 jstl标签库

3.1 c 标签

3.1.1 导入URL

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

3.1.2 标签使用

  • 1.表达式控制标签:out、set、remove、catch

(1) out 标签

<c:out value="value" default="default" escapeXml="false"></c:out>
属性描述用法
value页面显示值可设置 字符串 或 ${}表达式
defaultvalue为null时的默认值同上;默认值也在设为标签体内容,但不可同时设置
escapeXml是否采用转转译符true 不使用转译符,false使用转译符

(2) set 标签

给jsp的范围变量赋值: <c:set value="value" var="变量名" scope="session"></c:set>
给javabean变量赋值: <c:set value="value" target="${javabean}" property="property"></c:set>
属性描述用法
valuejavabean或jsp范围设置的值可设置 字符串 或 ${}表达式,等同于设置标签体内容
var变量名,jsp范围,key值可设置 字符串 或 ${}表达式
scopejsp范围page | request | session | application
targetjavabean${}表达式
propertyjavabean字段 

(3) remove 标签

<c:remove var="变量名" scope="session"></c:remove>

属性描述用法
var变量名,jsp范围,key值可设置 字符串 或 ${}表达式
scopejsp范围page | request | session | application

(4) catch 标签

<c:catch var="name" >容易产生异常的代码</c:catch>
属性描述用法
var储存异常信息变量名 ${name} 输出异常信息
  • 2.流程控制标签:if、choose、when、otherwise

(1) if 标签

<c:if test="表达式" var="name" scope="session">表达式为true展示代码</c:if>
属性描述用法
test(必)布尔表达式 结果为true|false的表达式
var储存 test表达式结果 变量名值为true|false,通过${name}获取
scopejsp范围page | request | session | application

(2) choose、when、otherwise 标签

<c:choose>
    <c:when test="表达式1">满足 表达式1 的代码</c:when>
    <c:when test="表达式2">满足 表达式2 的代码 </c:when>
    <c:otherwise>以上表达式都不满足的代码</c:otherwise>
</c:choose>

属性描述用法
test(必)布尔表达式 结果为true|false的表达式
  • 3.循环标签:forEach、forTokens

(1) forEach 标签

<c:forEach var="name" items="${list}" varStatus="statusName" begin="begin" end="end" step="step">
循环展示的代码
</c:forEach>
属性描述用法
var储存 单个遍历结果 的 变量名 可用${name}获取并在 在forEach 标签体中进行输出
items要遍历的集合,数组用${list}获取session中数组,集合
varStatus当前遍历状态名${statusName.index}  当前数据索引,0开头
${statusName.count}  总共迭代数,1开头
${statusName.frist}  是否是
${statusName.last}  是否是最后一个
begin指定循环的起始索引一般使用 begin end step var varStatus  或  var items
end指定循环的结束索引一般使用 begin end step var varStatus  或  var items
step指定步长 渐变值一般使用 begin end step var varStatus  或  var items

两种遍历单列集合,数组方式:

        <c:forEach begin="0" end="${list.size()-1}" var="i">${list[i].name}</c:forEach>
        <c:forEach items="${list}" var="obj">${obj.name}</c:forEach>

map集合遍历:

        <c:forEach var="item" items="${map}">key值:${item.key }  value值:${item.value }</c:forEach>

(2) forTokens 标签

<c:forTokens items="strings" delims="d" var="name" begin="begin" end="end" step="len" varStatus="statusName">
循环展示的代码
</c:forTokens>

属性描述用法
var储存 单个遍历结果 的 变量名 可用${name}获取并在 在forTokens 标签体中进行输出
items需要截取遍历的字符串用${strings}获取session中字符串
delims(必)分割符 
varStatus当前遍历状态名${statusName.index}  当前数据索引,0开头
${statusName.count}  总共迭代数,1开头
${statusName.frist}  是否是
${statusName.last}  是否是最后一个
begin指定循环的起始索引一般使用 begin end step var varStatus  或  var items
end指定循环的结束索引一般使用 begin end step var varStatus  或  var items
step指定步长 渐变值一般使用 begin end step var varStatus  或  var items
  • 4.URL操作标签:import、url、redirect

(1) import 标签

<c:import url="url" var="var" scope="scope"   context="context"  charEncoding="charEncoding"/>

属性描述用法
url(必)待导入资源的URL可以是相对路径和绝对路径
context资源的名字。当使用相对路径访问外部context资源时,指定资源名字。
charEncoding所引入的数据的字符编码集 
var用于存储所引入的文本的变量 
scopevar属性的作用域 
varReader可选的用于提供java.io.Reader对象变量 

(2) url 标签

<c:url  var="var"  value="value" context="context"/>

属性描述用法
value(必)基础URL 
context本地网络应用程序的名称 
var代表URL的变量名 
scopevar属性的作用域 

(3) redirect 标签

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

属性描述用法
url(必)目标URL 
context紧接着一个本地网络应用程序的名称 

(4) param 标签

<c:param name="name1" value="value1">

    为 redirect  url  标签添加参数

属性描述用法
name(必)参数name 
value(必)参数value 

 

3.2 fmt 标签

3.2.1 导入URL

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

 3.2.2 标签的使用

(1) <frm:formatNumber/>  数字格式化

属性描述其他
value(必)要格式化的数据同标签体 内容
type

指定类型(单位、货币、百分比等)

number        数字格式
currency     当地货币
percent       百分比格式
pattern格式化的数据样式###.##
000:00
#.###E0
currencyCode货币单位代码 
cuttencySymbol

货币符号

($、¥)
groupingUsed

是否对整数部分进行分组

如(9,999)    true|false
maxIntergerDigits

整数部分最对显示多少位数

 
minIntergerDigits整数部分最少显示多少位 
maxFractionDigits小数部分最多显示多少位 
minFractionDigits小数部分最少显示多少位 
var存储格式化后的数据 
scope

var的JSP范围

 

(2) <frm:parseNumber/> 格式化的数字转数字

属性描述其他
value(必)被解析的字符串同标签体 内容
type

指定单位

number        数字格式
currency     当地货币
percent       百分比格式
pattern格式样式 
parseLocale用来替代默认区域的设定 
var存储格式化后的数据 
scope

var的JSP范围

 

(3) <fmt:formatDate/> 日期格式化

属性描述其他
value(必)将要格式化的日期对象同标签体 内容
type

显示的部分

time    只显示时间
date   只显示时期
both   显示日期和时间
pattern格式化的样式 
dateStyle设定日期的显示方式 
timeStyle设定时间的显示方式 
timeZone设定使用的时区 
var存储已格式化的日期或时间 
scope

指定var存储的JSP范围。

 

(4) <fmt:formatDate/>  字符串类型的时间或日期转化为时间或日期对象

属性描述其他
value(必)将要格式化的日期时间同标签体 内容
type

显示的部分

time    只显示时间
date   只显示时期
both   显示日期和时间
pattern

字符串使用的时间样式

 
dateStyle字符串使用的日期显示方式 
timeStyle字符串使用的时间显示格式 
timeZone设定使用的时区 
var存储已格式化的日期或时间 
scope

指定var存储的JSP范围。

 
parseLocale取代默认地区设定 

 (5) <fmt:setTimeZone/>  设定默认时区或者将时区存储在指定的JSP范围内。

属性描述其他
value(必)使用的时区同标签体 内容
var

使用var定义的参数名保存值

 
scope

存储var的JSP范围

 

(6) <fmt:timeZone>  主要用于设置标签体内使用的时区。

属性描述其他
value(必)使用的时区同标签体 内容
var

使用var定义的参数名保存值

 
scope

存储var的JSP范围

 

(7)  <fmt:bundle> 主要用于将资源文件绑定于它的标签体中的显示。

属性描述其他
basename(必)指定使用的资源文件的名称 
prefix前置关键字 

(8)  <fmt:setBundle> 主要用于绑定资源文件或者把资源文件保存在指定的JSP范围内。

属性描述其他
basename(必)指定使用的资源文件的名称 
var指定将资源文件保存的名称 
scope

设定将资源文件保存的JSP范围

 

(9) <fmt:message> 主要负责读取本地资源文件

属性描述其他
key(必)

指定键值的名称(索引)

 
bundle指定消息文本的来源LocalizationContext
var指定存储键值的变量名 
scope

设定将资源文件保存的JSP范围

 

(10) <fmt:param> 主要用于当<fmt:message>中资源文件中获得键值时,动态的为资源文件中的变量赋值。

(11) <fmt:setLocale/> 用来设定用户语言区域。

属性描述其他
value(必)

指定区域代码

Locale
variant操作系统的类型 
scope设定时区的作用范围 

(12) <fmt:requestEncoding> 用于设定请求的编码格式

属性描述其他
value编码集例如:gbk、gb2312等

3.3 fn 标签

3.3.1 导入URL

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

3.3.2 常用函数

函数名函数说明使用举例
fn:contains判断字符串是否包含另外一个字符串${fn:contains(name, searchString)}
fn:containsIgnoreCase判断字符串是否包含另外一个字符串(大小写无关)${fn:containsIgnoreCase(name, searchString)}
fn:endsWith判断字符串是否以另外字符串结束${fn:endsWith(filename, '.txt')}
fn:escapeXml把一些字符转成XML表示,例如<字符应该转为&lt;${fn:escapeXml(param:info)}
fn:indexOf子字符串在母字符串中出现的位置${fn:indexOf(name, '-')}
fn:join将数组中的数据联合成一个新字符串,并使用指定字符格开${fn:join(array, ';')}
fn:length获取字符串的长度,或者数组的大小${fn:length(list)}
fn:replace替换字符串中指定的字符${fn:replace(text, '-','•')}
fn:split把字符串按照指定字符切分${fn:split(customerNames, ';')}
fn:startsWith判断字符串是否以某个子串开始${fn:startsWith(product.id, '100-')}
fn:substring获取子串${fn:substring(zip, 6, -1)}
fn:substringAfter

获取从某个字符所在位置开始的子串

${fn:substringAfter(zip, '-')}
fn:substringBefore获取从开始到某个字符所在位置的子串${fn:substringBefore(zip, '-')}
fn:toLowerCase转为小写${fn.toLowerCase(name)}
fn:toUpperCase转为大写字符${fn.UpperCase(name)}
fn:trim去除字符串前后的空格${fn.trim(name)}

 

3.4 sql 标签

3.4.1 导入URL

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

3.4.2 使用

(1) <sql:setDataSource>  用来配置数据源或者将数据源信息存储在某作用域的变量中,用来作为其它JSTL数据库操作的数据源。

属性描述是否必要默认值
driver要注册的JDBC驱动
url数据库连接的JDBC URL
user数据库用户名
password数据库密码
dataSource事先准备好的数据库
var代表数据库的变量默认设置
scopevar属性的作用域Page

 (2) <sql:query> 用来运行SQL SELECT语句

属性描述是否必要默认值
sql需要执行的SQL命令(返回一个ResultSet对象)标签体
dataSource所使用的数据库连接(覆盖默认值)默认数据库
maxRows存储在变量中的最大结果数无穷大
startRow开始记录的结果的行数0
var代表数据库的变量默认设置
scopevar属性的作用域Page

 (3) <sql:update>  标签用来执行一个没有返回值的SQL语句 ,增 删 改

属性描述是否必要默认值
sql需要执行的SQL命令(不返回ResultSet对象)标签体
dataSource所使用的数据库连接(覆盖默认值)默认数据库
var用来存储所影响行数的变量
scopevar属性的作用域Page

 (4) <sql:param> 用来提供一个值占位符

属性描述是否必要默认值
value需要设置的参数值标签体

 (5) <sql:dateParam>  用来提供日期和时间的占位符。

属性描述是否必要默认值
value需要设置的日期参数(java.util.Date)Body
typeDATE (只有日期),TIME(只有时间), TIMESTAMP (日期和时间)TIMESTAMP

 (6) <sql:transaction> 可以将大量的<sql:query>和<sql:update>操作装入<sql:transaction>中,使它们成为单一的事务。

属性描述是否必要默认值
dataSource所使用的数据库(覆盖默认值)默认数据库
isolation事务隔离等级
(READ_COMMITTED,READ_UNCOMMITTED, REPEATABLE_READ, SERIALIZABLE)
数据库默认

3.5 x 标签

3.5.1 导入URL

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

 3.5.2 使用

 (1) <x:out> 标签显示XPath表达式的结果,与<%=  %>功能相似。

属性描述是否必要默认值
select需要计算的XPath表达式,通常使用XPath 变量
escapeXml是否忽略XML 特殊字符true

 (2) <x:parse>标签用来解析属性中或标签主体中的XML数据。

属性描述是否必要默认值
var包含已解析XML数据的变量
xml需要解析的文档的文本内容(String或Reader)Body
systemId系统标识符URI,用来解析文档
filter应用于源文档的过滤器
doc需要解析的XML文档Page
scopevar属性的作用域Page
varDom包含已解析XML数据的变量Page
scopeDomvarDom属性的作用域Page

(3) <x:set> 标签为XPath表达式的值设置一个变量。

属性描述是否必要默认值
var代表XPath表达式值得变量Body
select需要计算的XPath表达式
scopevar属性的作用域Page

(4) <x:if>标签用于判断一个XPath表达式的值,若为真,则执行其主体中的内容,若为假则其主体的内容将会被忽略。

属性描述是否必要默认值
select需要计算的XPath表达式
var存储条件结果的变量
scopevar属性的作用域Page

(5) <x:forEach>标签用来循环遍历XML文档的节点。

属性描述是否必要默认值
select需要计算的XPath表达式
var用于存储当前项目的变量
begin迭代器的开始索引
end迭代器的结束索引
step迭代的步长
varStatus代表迭代器所存储的状态的变量

(6) <x:choose>, <x:when>, <x:otherwise> 多判断标签

<x:choose>
 <x:when select="<string>">
     ...
 </x:when>
...
 <x:otherwise>
     ...
 </x:otherwise>
</x:choose>
属性描述是否必要默认值
select条件

(7) <x:transform>标签在XML文档中应用XSL。

属性描述是否必要默认值
doc源XML文档Body
docSystemId源XML文档的URI
xsltXSLT 样式表
xsltSystemId源XSLT文档的URI
result接收转换结果的对象Print to page
var代表被转换的XML文档的变量Print to page
scopevar属性的作用域

(8) <x:param>标签与<x:transform>标签一同使用,用于设置XSLT样式表的参数。

属性描述是否必要默认值
nameXSLT参数的名称Body
valueXSLT参数的值

 

 

 

 

 

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑重其事,鹏程万里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值