JSTL

补充

EL中判断布尔值
参考How to check a boolean condition in EL?

<c:if test="${theBooleanVariable == false}">It's false!</c:if>

或者

<c:if test="${!theBooleanVariable}">It's false!</c:if>

或者

<c:if test="${not theBooleanVariable}">It's false!</c:if>

JSTL

JSTL 库安装

Apache Tomcat安装JSTL 库步骤如下:

  • 从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip)。下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
  • 下载jakarta-taglibs-standard-1.1.2.zip 包并解压,将jakarta-taglibs-standard-1.1.2/lib/下的两个jar文件:standard.jarjstl.jar文件拷贝到/WEB-INF/lib/下。

在JSP页面中导入标签库

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

EL

EL变量
EL变量

如果没有范围限定,寻找顺序为page、request、session、application。
如果没有找到,会输出一个为空的字符串。

EL自动类型转换
EL自动类型转换

EL隐式对象
EL隐式对象

EL运算符
EL运算符

<% String username="zhangsan"; request.setAttribute("username", username); %>
<c:out value="${empty username} }"></c:out>

输出结果为false

JSTL核心标签

out标签

使用out标签输出常量

<c:out value="this is our first jstl demo"></c:out>

使用out标签输出变量

<%session.setAttribute("name", "John"); %>
<c:out value="${name}"></c:out><br>

当变量不存在时,通过default输出默认值

<c:out value="${ password }" default="error"></c:out>

escapeXml转义

<c:out value="&gtout标签&lt" escapeXml="false"></c:out><br>

此时的显示结果为>out标签<

set标签

set标签有两种用法
第一种,存值到scope种,有两种形式

<c:set value="today" var="day" scope="session"></c:set>
<c:out value="${day}"></c:out><br>


<c:set var="age" scope="application">eleven</c:set>
<c:out value="${age}"></c:out><br>

第二种,存值到JavaBean中

<jsp:useBean id="person" class="com.imooc.test.Person"></jsp:useBean>
<c:set target="${person}" property="nickname" value="wangwu"></c:set>
<c:out value="${person.nickname}"></c:out><br>

remove标签

remove去掉某个变量,在remove中var属性是必选的,scope属性是可选的。

<c:set var="firstname" value="zhang"></c:set>
<c:out value="${firstname}"></c:out>
<c:remove var="firstname"/>

catch标签

catch标签中可以包含那些容易出错的JSTL标签(逻辑)

<c:catch var="error">
    <c:set target="aa" property="bb">cccc</c:set>
</c:catch>
<c:out value="${error}"></c:out>

在页面上输出的结果为:javax.servlet.jsp.JspTagException: Invalid property in &lt;set&gt;: "bb"

if标签

用来实现分支条件控制,常用属性

  • test 用来存放判断的条件,一般使用EL表达式来编写
  • var指定名称用来存放判断的结果类型为true或false
  • scope用来存放var属性存放的范围

使用例子

<form action="firstDemo.jsp"  method="post">
    <input type="text" name="score" value="${param.score}">
    <input type="submit">
</form>
<c:if test="${param.score >= 90}" var="result">
    <c:out value="优秀"></c:out>
</c:if>
<c:out value="${result}"></c:out>

choose-when-otherwise标签

choose-when-otherwise标签

用法一:三个标签一起使用
三个标签一起使用

<form action="firstDemo.jsp"  method="post">
    <input type="text" name="score" value="${param.score}">
    <input type="submit">
</form>

<c:choose>
    <c:when test="${param.score >=90 && param.score <=100 }">
        <c:out value="优秀"></c:out>
    </c:when>
    <c:when test="${param.score >=80 && param.score < 90 }">
        <c:out value="良好"></c:out>
    </c:when>
    <c:when test="${param.score >=70 && param.score < 80 }">
        <c:out value="中等"></c:out>
    </c:when>
    <c:when test="${param.score >=60 && param.score < 70 }">
        <c:out value="及格"></c:out>
    </c:when>
    <c:when test="${param.score < 60 }">
        <c:out value="不及格"></c:out>
    </c:when>
    <c:otherwise>
        <c:out value="输入有误"></c:out>
    </c:otherwise>
</c:choose>

用法二:只使用choose和when标签
只使用choose和when标签

foreach标签

foreach标签根据循环条件遍历(Collection)中的元素

  • var 设定变量名用于存储从集合中取出元素(必须无默认值)
  • items指定要遍历的集合(必须无默认值)
  • begin、end用于指定遍历的起始位置和终止位置(有默认)
  • step 指定循环的步长(有默认)
  • varStatus 通过index、count、first、last几个状态值,描述begin和end子集中元素的状态

用法一:全部遍历
常用用法1-全部遍历

<%
    List<String> fruits = new ArrayList<String>(); 
    fruits.add("apple");
    fruits.add("orange");
    fruits.add("pear");
    fruits.add("banana");
    request.setAttribute("fruits", fruits);
%>
<c:forEach var="fruit" items="${fruits}">
    <c:out value="${fruit}"></c:out><br>
</c:forEach>

用法二:部分遍历

<c:forEach var="fruit" items="${fruits}" begin="1" end="2">
    <c:out value="${fruit}"></c:out><br>
</c:forEach>

输出结果为:orange pear

用法三:部分遍历中指定步长
部分遍历中指定步长

<c:forEach var="fruit" items="${fruits}" begin="0" end="2" step="2">
    <c:out value="${fruit}"></c:out><br>
</c:forEach>
<c:out value="==============="></c:out><br>

输出结果为:apple pear

用法四:部分遍历并指定步长并输出元素状态

<c:forEach var="fruit" items="${fruits}" begin="0" end="3" varStatus="fru">
    <c:out value="${fruit}的四个属性值"></c:out><br>
    <c:out value="index属性值:${fru.index}"></c:out><br>
    <c:out value="count属性值:${fru.count}"></c:out><br>
    <c:out value="first属性值:${fru.first}"></c:out><br>
    <c:out value="last属性值:${fru.last}"></c:out><br>
    <c:out value="----------------------------------"></c:out><br>
</c:forEach>
<c:out value="==============="></c:out><br>

输出结果为:

apple的四个属性值
index属性值:0
count属性值:1
first属性值:true
last属性值:false
----------------------------------
orange的四个属性值
index属性值:1
count属性值:2
first属性值:false
last属性值:false
----------------------------------
pear的四个属性值
index属性值:2
count属性值:3
first属性值:false
last属性值:false
----------------------------------
banana的四个属性值
index属性值:3
count属性值:4
first属性值:false
last属性值:true
----------------------------------

forTokens标签

forTokens标签用于浏览字符串,并根据指定的字符将字符串截取

  • items 指定被迭代的字符串
  • delims 指定使用的分隔符
  • var 指定用来存放遍历的成员

例子:

<c:forTokens items="010-88967543-123" delims="-" var="num">
    <c:out value="${num}"></c:out><br>
</c:forTokens>

输出结果为:

010
88967543
123

import标签

import标签可以把其他静态或动态文件包含到本JSP页面
<jsp:include>的区别是:只能包含同一个web应用中的文件。而<c:import>可以包含其他web应用中的文件,甚至是网路上的资源。

import标签

导入网络上的绝对路径

<c:catch var="import_error">
    <c:import url="http://www.imooc.com">

    </c:import>
</c:catch>

redirect标签

redirect标签用来实现请求的重定向,同时可以在url中加入指定的参数

  • url 指定重定向页面的地址,可以是一个string类型的绝对地址或相对地址
  • context 用于导入其他web应用中的页面

例子

<c:redirect url="http://www.baidu.com">

</c:redirect>

url标签

该标签用于动态生成一个String类型的URL,可以同<c:param>标签共同使用,也可以使用html的<a>标签实现超链接。

  • value 表示url路径值
  • var 将url路径存储在变量中
  • scope var变量的范围

例子

<c:if test="${ 1<3 }">
    <c:set var="partUrl">aa</c:set>
</c:if>
<c:url value="http://localhost:8080/${ partUrl }"  var="newUrl" scope="session"></c:url>
<a href="${newUrl }">新的URL</a>

函数

在使用之前,在页面中添加

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

是否包含子串

<c:out value="${fn:contains('hello word', 'hello')}"></c:out>

containsIgnoreCase忽略大小写

<c:out value="${fn:containsIgnoreCase('hello word', 'Hello')}"></c:out>

输出xml标签, 如下输出结果为&lt;book&gt;1111&lt;/book&gt;

<c:out value="${fn:escapeXml('<book>1111</book>')}"></c:out>

indexOf出现的索引

<c:out value="${fn:indexOf('hello word', 'llo')}"></c:out>

常用JSTL函数介绍

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值