今天看了些JSTL表达式的一些相关东西,整理一下...

 



一、核心标签库
1、 out输出语句,仅对表达式有效
<c:out value="{'helloWorld'}" />

2、set语句,设置表达式的值
<c:set var = "helloWorld" scope = "session" value = "{"helloWorld"}" />

3、remove语句,删除范围变量
<c:remove var = "helloWorld" />


4、if判断语句
<c:set var="salary" scope="session" value="${2000*2}"/>
<c:if test="${salary > 2000}">
  <p>我的工资为: <c:out value="${salary}"/><p>
</c:if>

5、catch 异常检测语句
<c:catch var = "catchException" />
<% int x = 6/0; %>
</c:catch>
<c:if test = "${catchException != null}">
<p>
异常为: ${catchException} <br />
详细信息为: ${catchException.message}
</p>
</c:if>
执行结果为:异常为 : java.lang.ArithmeticException: / by zero 详细信息为: / by zero

6、when语句,条件判定选择
<c:set var="salary" scope="session" value="${2000*2}"/>
<p>你的工资为 : <c:out value="${salary}"/></p>
<c:choose>
<c:when test="${salary <= 0}">
  太惨了。
</c:when>
<c:when test="${salary > 1000}">
  不错的薪水,还能生活。
</c:when>
<c:otherwise>
什么都没有。
</c:otherwise>
</c:choose>
输出内容为:你的工资为:4000 不错的薪水,还能生活。

7、foreach基础迭代,可以接受多种集合类型
<c:forEach var="i" begin="1" end="5">
  Item <c:out value="${i}"/><p>
</c:forEach>

8、创建url并给包含或重定向的页面传递参数
<c:url var="myURL" value="main.jsp">
<c:param name="name" value="Runoob"/>
<c:param name="url" value="www.runoob.com"/>
</c:url>
<a href="/<c:out value="${myURL}"/>">
使用 &lt;c:param&gt; 为指定URL发送两个参数。
</a>


二、格式化标签库
9、fmt:formatNumber 格式化数字
<c:set var="balance" value="120000.2309" />
<p>格式化数字 (1): <fmt:formatNumber value="${balance}" 
type="currency"/></p>
<p>格式化数字 (2): <fmt:formatNumber type="number" 
maxIntegerDigits="3" value="${balance}" /></p>
<p>格式化数字 (3): <fmt:formatNumber type="number" 
maxFractionDigits="3" value="${balance}" /></p>
<p>格式化数字 (4): <fmt:formatNumber type="number" 
groupingUsed="false" value="${balance}" /></p>
<p>格式化数字 (5): <fmt:formatNumber type="percent" 
maxIntegerDigits="3" value="${balance}" /></p>
<p>格式化数字 (6): <fmt:formatNumber type="percent" 
minFractionDigits="10" value="${balance}" /></p>
<p>格式化数字 (7): <fmt:formatNumber type="percent" 
maxIntegerDigits="3" value="${balance}" /></p>
<p>格式化数字 (8): <fmt:formatNumber type="number" 
pattern="###.###E0" value="${balance}" /></p>

运行如下:
数字格式化:


格式化数字 (1): ¥120,000.23


格式化数字 (2): 000.231


格式化数字 (3): 120,000.231


格式化数字 (4): 120000.231


格式化数字 (5): 023%


格式化数字 (6): 12,000,023.0900000000%


格式化数字 (7): 023%


格式化数字 (8): 120E3

10、fmt:parseDate日期解析
<c:set var="now" value="20-10-2015" />


<fmt:parseDate value="${now}" var="parsedEmpDate" 
 pattern="dd-MM-yyyy" />
<p>解析后的日期为: <c:out value="${parsedEmpDate}" /></p>

输出为:
日期解析:


解析后的日期为: Tue Oct 20 00:00:00 CST 2015

三、SQL标签库
11、sql:setDataSource 数据库语句
<sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/TEST"
user="user_id"  password="mypassword"/>


<sql:query dataSource="${snapshot}" var="result">
SELECT * from Employees;
</sql:query>

然后可以进行迭代输出
<c:forEach var="row" items="${result.rows}">
<tr>
<td><c:out value="${row.id}"/></td>
<td><c:out value="${row.first}"/></td>
<td><c:out value="${row.last}"/></td>
<td><c:out value="${row.age}"/></td>
</tr>
</c:forEach>

PS:更新语句如下:
<sql:update dataSource="${snapshot}" var="count">
  INSERT INTO Employees VALUES (104, 2, 'Nuha', 'Ali');
</sql:update>

PS:给sql语句设置参数:

<c:set var="empId" value="103"/>
<sql:update dataSource="${snapshot}" var="count">
 DELETE FROM Employees WHERE Id = ?
 <sql:param value="${empId}" />
</sql:update>


四、JSTL函数
12、检测输入字符是否包含指定字符串
<c:set var="theString" value="I am from runoob"/>


<c:if test="${fn:contains(theString, 'runoob')}">
  <p>找到 runoob<p>
</c:if>


<c:if test="${fn:contains(theString, 'RUNOOB')}">
  <p>找到 RUNOOB<p>
</c:if>
13、检测字符串是否已指定内容结束
<c:set var="theString" value="I am from runoob 123"/>


<c:if test="${fn:endsWith(theString, '123')}">
  <p>字符串以 123 结尾<p>
</c:if>


<c:if test="${fn:endsWith(theString, 'unoob')}">
  <p>字符串以 runoob 结尾<p>
</c:if>

14、返回指定字符串在输入字符串的位置(从零开始,计算空格)
<c:set var="string1" value="This is first String."/>
<c:set var="string2" value="This <abc>is second String.</abc>"/>


<p>Index (1) : ${fn:indexOf(string1, "first")}</p>
<p>Index (2) : ${fn:indexOf(string2, "second")}</p>

15、fn:join()函数将一个数组中的所有元素使用指定的分隔符来连接成一个字符串
<c:set var="string1" value="www baidu com"/>
<c:set var="string2" value="${fn:split(string1, ' ')}" />
<c:set var="string3" value="${fn:join(string2, '-')}" />


<p>字符串为 : ${string3}</p>

输出内容为:字符串为 : www-baidu-com

PS:fn:split函数返回一个字符串用指定分隔符分裂为一个子串数组。

16、返回字符串长度
<c:set var="string1" value="This is first String."/>
<c:set var="string2" value="This is second String." />


<p>字符串长度 (1) : ${fn:length(string1)}</p>
<p>字符串长度 (2) : ${fn:length(string2)}</p>

17、replace 将输入字符串中指定的位置替换为指定的字符串然后返回
<c:set var="string1" value="I am from google"/>
<c:set var="string2" value="${fn:replace(string1, 
'google', 'runoob')}" />


<p>替换后的字符串 : ${string2}</p>

18、startWith 亿指定字符串开始
<c:set var="string" value="Runoob: I am from Runoob."/>
<c:if test="${fn:startsWith(string, 'Google')}">
  <p>字符串以 Google 开头</p>
</c:if>
<br />
<c:if test="${fn:startsWith(string, 'Runoob')}">
  <p>字符串以 Runoob 开头</p>
</c:if>

输出内容为:字符串以 Runoob 开头

19、substring 截取字符串
<c:set var="string1" value="This is first String."/>
<c:set var="string2" value="${fn:substring(string1, 5, 15)}" />


<p>生成的子字符串为 : ${string2}</p>

输出内容为:生成的子字符串为 : is first S

20、所有字符转换为大写或小写
<c:set var="string1" value="I am from RUNOOB"/>
<c:set var="string2" value="${fn:toLowerCase(string1)}" />


<p>字符串为 : ${string2}</p>

输出内容为:字符串为 : i am from runoob

<c:set var="string1" value="I am from runoob"/>
<c:set var="string2" value="${fn:toUpperCase(string1)}" />


<p>字符串为 : ${string2}</p>

输出内容为:字符串为 : I AM FROM RUNOOB

21、trim去除两端的空格
<c:set var="string1" value="I am from runoob         "/>
<p>string1 长度 : ${fn:length(string1)}</p>


<c:set var="string2" value="${fn:trim(string1)}" />
<p>string2 长度 : ${fn:length(string2)}</p>
<p>字符串为 : ${string2}</p>

输出内容为:
string1 长度 : 25


string2 长度 : 16


字符串为 : I am from runoob
也欢迎登录我的个人网站,里面有更多的文章及技术咨询在等你:http://www.guangmuhua.com

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值