一、核心标签

核心标签是最常用的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

输出的信息

Yes

None

default

反馈输出的信息

No

body

escapeXml

True,如果标签转义特殊XML字符

No

true

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

那么网页显示效果为:

java 如何判断html标签不对 jstl判断标签有哪些_html

 

 

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

删除的变量名称

Yes

None

scope

要删除变量的范围

No

All 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元素内。

No

None

实例:

<%@ 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

条件计算

Yes

None

var

保存判断结果 true 或 false 的变量名,该变量可供之后的工作使用(可选)

No

None

scope

变量的作用范围,若没有指定,默认为保存于 page 范围中的变量(可选)

No

page

例子:

<%@ 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}">
          <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">
          <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">
              <c:out value="${fuwa}" />的四种属性:<br>
               所在位置,即索引:<c:out value="${s.index}" /><br>
               总共已迭代的次数:<c:out value="${s.count}" /><br>
               是否为第一个位置:<c:out value="${s.first}" /><br>
               是否为最后一个位置:<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">
             <c:out value="${n}" />的四种属性:<br>
              所在位置,即索引:<c:out value="${s.index}" />
                <br>
              总共已迭代的次数:<c:out value="${s.count}" />
                <br>
              是否为第一个位置:<c:out value="${s.first}" />
                <br>
              是否为最后一个位置:<c:out value="${s.last}" />
                <br>
        </c:forTokens>

2.4.1、jstl <c:import>标签