JSTL核心标签

一、核心标签

核心标签是最常用的JSTL标签。引用核心标签库的语法如下:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
标签描述
<c:out>用于在JSP中显示数据,就像<%= ... >
<c:set>用于保存数据
<c:remove>用于删除数据
<c:catch>用来处理产生错误的异常状况,并且将错误信息储存起来
<c:if>与我们在一般程序中用的if一样
<c:choose>本身只当做<c:when>和<c:otherwise>的父标签
<c:when><c:choose>的子标签,用来判断条件是否成立
<c:otherwise><c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行
<c:import>检索一个绝对或相对 URL,然后将其内容暴露给页面
<c:forEach>基础迭代标签,接受多种集合类型
<c:forTokens>根据指定的分隔符来分隔内容并迭代输出
<c:param>用来给包含或重定向的页面传递参数
<c:redirect>重定向至一个新的URL.
<c:url>使用可选的查询参数来创造一个URL

 

 

二、JSTL 核心标签库标签共有13个,功能上分为4类:

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

2.流程控制标签:if、choose、when、otherwise

3.循环标签:forEach、forTokens

4.URL操作标签:import、url、redirect

 

2.1.1、jstl <c:out>标签

标 记<c:out>显示表达式的结果,类似的方式<%=%>效果,与其不同的是标记<c:out>,可以使用简单的 “.”符号来访问属性。例如,要访问customer.address.street,使用的标签是<c:out value="customer.address.street"/>.

标记<c:out>可自动转义XML标签,以便他们都不会计算为实际的标签。

属性:

标记<c:out>具有以下属性:

属性描述必需默认值
value输出的信息YesNone
default反馈输出的信息 Nobody
escapeXmlTrue,如果标签转义特殊XML字符Notrue

例子1:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title><c:out> Tag Example - www.yiibai.com</title>
</head>
<body>
<c:out value="${'<tag> , &'}"/>
</body>
</html>

这将产生以下结果:

<tag> , &

 例子2:

<c:out value="&lt要显示的数据对象(未使用转义字符)&gt" escapeXml="true" default="默认值"></c:out><br/>
<c:out value="&lt要显示的数据对象(使用转义字符)&gt" escapeXml="false" default="默认值"></c:out><br/>
<c:out value="${null}" escapeXml="false">使用的表达式结果为null,则输出该默认值</c:out><br/>

那么网页显示效果为:

 

 

2.1.2、jstl <c:set>标签

<c:set>标记是JSTL的setProperty动作的友好版本。标签是有用的,因为它的表达式求值,并使用结果的JavaBean或java.util.Map对象设置一个值。

属性:

<c:set>标记具有以下属性:

属性
描述 必需 默认值
value 保存信息 No body
target 变量的名称,其属性应该修改 No None
property 要修改的属性 No None
var 变量的名称存储信息 No None
scope 变量来存储信息的范围 No Page

如果指定目标,属性也必须指定。

例子:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title><c:set> Tag Example - www.yiibai.com</title>
</head>
<body>
<c:set var="salary" scope="session" value="${2000*2}"/>
<c:out value="${salary}"/>
</body>
</html>

这将产生以下结果:

4000

2.1.3、jstl <c:remove>标签

<c:remove>标签删除变量,无论是从指定的范围内或范围内的变量(如果没有指定范围)。这个动作通常是不特别有帮助,但它可以帮助确保一个JSP范围内的资源,它负责清理。

属性:

<c:remove>标签具有以下属性:

属性描述必选默认
var删除的变量名称YesNone
scope要删除变量的范围NoAll scopes

例子:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title><c:remove> Tag Example - www.yiibai.com</title>
</head>
<body>
<c:set var="salary" scope="session" value="${2000*2}"/>
<p>Before Remove Value: <c:out value="${salary}"/></p>
<c:remove var="salary"/>
<p>After Remove Value: <c:out value="${salary}"/></p>
</body>
</html>

这将产生以下结果:

Before Remove Value: 4000
After Remove Value: 

 2.1.4、jstl <c:catch>标签

用于异常捕获的<c:catch>标签捕获任何Throwable,发生在它的身上,有选择地公开。简单地用于错误处理,更优雅地处理这个问题。

属性:

<c:catch>标签具有以下属性:

属性描述必选默认
var变量的名称保存在java.lang。如果抛出的Throwable在body元素内。NoNone

实例:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title><c:catch> Tag Example - www.yiibai.com</title>
</head>
<body>

<c:catch var ="catchException">
   <% int x = 5/0;%>
</c:catch>

<c:if test = "${catchException != null}">
   <p>The exception is : ${catchException} <br />
   There is an exception: ${catchException.message}</p>
</c:if>

</body>
</html>

这将产生以下结果:

The exception is : java.lang.ArithmaticException: / by zero
There is an exception: / by zero

<c:catch> 标签允许在 JSP 页面中捕捉异常。它包含一个 var 属性,是一个描述异常的变量,改变量可选。若没有 var 属性的定义,那么仅仅捕捉异常而不做任何事情,若定义了 var 属性,则可以利用 var 所定义的异常变量进行判断转发到其他页面或提示报错信息。看一个示例。
  1. <c:catch var="err">   
  2.        ${param.sampleSingleValue[9] == 3}   
  3. </c:catch>   
  4. ${err}   

当“ ${param.sampleSingleValue[9] == 3} ”表达式有异常时,可以从 var 属性“ err ”得到异常的内容,通常判断“ err ”是否为 null 来决定错误信息的提示。

 

 2.2.1、jstl <c:if>标签

<c:if>标签计算表达式,只有当表达式的值为true,则显示其主体内容。

属性:

<c:if>标签具有以下属性:

属性描述必需默认
test条件计算YesNone
var
保存判断结果 true 或 false 的变量名,该变量可供之后的工作使用(可选)
NoNone
scope变量的作用范围,若没有指定,默认为保存于 page 范围中的变量(可选)Nopage

例子:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title><c:if> Tag Example - www.yiibai.com</title>
</head>
<body>
<c:set var="salary" scope="session" value="${2000*2}"/>
<c:if test="${salary > 2000}" var="visits">
   <p>My salary is: <c:out value="${salary}"/><p>
</c:if>
<br>
${visits} <br>
</body> </html>

这将产生以下结果:

My salary is: 4000
true

  2.2.2、jstl 用于复杂判断的 <c:choose> 、 <c:when> 、 <c:otherwise> 标签

这三个标签用于实现复杂条件判断语句,类似“ if,elseif ”的条件语句。
q  <c:choose> 标签没有属性,可以被认为是父标签, <c:when> 、 <c:otherwise> 将作为其子标签来使用。
q   <c:when> 标签等价于“ if ”语句,它包含一个 test 属性,该属性表示需要判断的条件。
q   <c:otherwise> 标签没有属性,它等价于“ else ”语句。
下面看一个复杂条件语句的示例。

   <c:set var="salary" scope="session" value="${2000*2}"/>
   <p>Your salary is : <c:out value="${salary}"/></p>
   <c:choose>
        <c:when test="${salary <= 1000}">
             Salary is very low to survive.
        </c:when>
        <c:when test="${salary > 3000}">
              Salary is very good.
        </c:when>
        <c:otherwise>
              No comment sir...
        </c:otherwise>
   </c:choose>

 

2.3.1、jstl <c:forEach>标签

<c:forEach>标记有以下属性:

 

属性
描述
items
进行循环的集合(可选)
begin
开始条件(可选)
end
结束条件(可选)
step
循环的步长,默认为 1 (可选)
var
做循环的对象变量名,若存在 items 属性,则表示循环集合中对象的变量名(可选)
varStatus
显示循环状态的变量(可选)
下面看一个集合循环的示例。

<c:forEach>例子:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title><c:forEach> Tag Example - www.yiibai.com</title>
</head>
<body>
<c:forEach var="i" begin="1" end="5">
   Item <c:out value="${i}"/><p>
</c:forEach>
</body>
</html>

这将产生以下结果:

Item 1
Item 2
Item 3
Item 4
Item 5

例子2:

必须先头部引入
<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>

        <h4><c:out value="forEach实例"/></h4>
         <hr>
        <%
             List a=new ArrayList();
             a.add("贝贝");
             a.add("晶晶");
             a.add("欢欢");
             a.add("莹莹");
             a.add("妮妮");
              request.setAttribute("a",a);
         %>
       <B><c:out value="不指定begin和end的迭代:" /></B><br>
       
       <c:forEach var="fuwa" items="${a}">
         &nbsp;<c:out value="${fuwa}"/><br>
       </c:forEach>
       
       <B><c:out value="指定begin和end的迭代:" /></B><br>
       
       <c:forEach var="fuwa" items="${a}" begin="1" end="3" step="2">
         &nbsp;<c:out value="${fuwa}" /><br>
       </c:forEach>
       
       <B><c:out value="输出整个迭代的信息:" /></B><br>
       
       <c:forEach var="fuwa" items="${a}" begin="3" end="4" step="1" varStatus="s">
             &nbsp;<c:out value="${fuwa}" />的四种属性:<br>
             &nbsp;&nbsp;所在位置,即索引:<c:out value="${s.index}" /><br>
             &nbsp;&nbsp;总共已迭代的次数:<c:out value="${s.count}" /><br>
             &nbsp;&nbsp;是否为第一个位置:<c:out value="${s.first}" /><br>
             &nbsp;&nbsp;是否为最后一个位置:<c:out value="${s.last}" /><br>
       </c:forEach>


2.3.2、jstl <c:forEach>标签

<c:forTokens>标签有类似<c:forEach>的属性,除了一个额外的属性delims指定要使用的字符作为分隔符

<c:forTokens>例子:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title><c:forTokens> Tag Example - www.yiibai.com</title>
</head>
<body>
<c:forTokens items="Zara,nuha,roshy" delims="," var="name">
   <c:out value="${name}"/><p>
</c:forTokens>
</body>
</html>

这将产生以下结果:

Zara
nuha
roshy

     <br>
          <br>
          <c:forEach items="Zara,nuha,roshy" var="name">
                <c:out value="${name}"/><p>
          </c:forEach>
          
          
          <br>
          <br>
          <c:forTokens items="Zara,nuha,roshy" delims="," var="name">
                <c:out value="${name}"/><p>
          </c:forTokens>

 

例子2:

       <!-- forToken实例 -->
        <h4>
            <c:out value="forToken实例" />
        </h4>
        <hr>
        
        <c:forTokens items="北、京、欢、迎、您" delims="、" var="c1">
            <c:out value="${c1}"></c:out>
        </c:forTokens>
        <br>
        
        <c:forTokens items="123-4567-8854" delims="-" var="t">
            <c:out value="${t}"></c:out>
        </c:forTokens>
        <br>
        
        <c:forTokens items="1*2*3*4*5*6*7" delims="*" begin="1" end="3"
            var="n" varStatus="s">
            &nbsp;<c:out value="${n}" />的四种属性:<br>
            &nbsp;&nbsp;所在位置,即索引:<c:out value="${s.index}" />
                <br>
            &nbsp;&nbsp;总共已迭代的次数:<c:out value="${s.count}" />
                <br>
            &nbsp;&nbsp;是否为第一个位置:<c:out value="${s.first}" />
                <br>
            &nbsp;&nbsp;是否为最后一个位置:<c:out value="${s.last}" />
                <br>
        </c:forTokens> 

 2.4.1、jstl <c:import>标签

 

转载于:https://www.cnblogs.com/zhp404/articles/5191943.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值