核心标签

核心组标签是最常用的JSTL标签,包括:

TagDescription
<c:out > 和<%= ... >标签一样功能, 但对于表达式。
<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

<c:out>显示表达式的结果,类似于<%=表达式%>

语法:

<c:out value="value"  [escapeXml="{true|false}"]  [default ="defaultValue"] />

<c:out value="value" [escapeXml="{true|false}"]>
  default value
</c:out>
属性描述必需默认值
value 输出的信息 Yes None
default 反馈输出的信息 No body
escapeXml True,如果标签转义特殊XML字符 No true

eg:

<%@ page language="java" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Tag Example - www.yiibai.com</title>
</head>
<body>
    <c:out value="${'this a string type '}"/>
</body>
</html>

//结果输出为:

this a string type

<c:set> 用于保存数据的语法,是<jsp:setProperty>行为标签的孪生兄弟,计算表达式的值,然后使用计算结果来设置javabean对象或java.util.Map对象的值。

语法:

<c:set value="value"  var="varName"  [scope="{ page|request|session|application }"] />   //将value的值储存至范围为scope的varName变量之中

<c:set var="varName"  [scope="{ page|request|session|application }"]>
… 本体内容
</c:set> //将本体内容的数据储存至范围为scope的varName变量之中
<c:set value="value" target="target" property="propertyName" /> //将value的值储存至target对象的属性中 ,target与property同时指定
<c:set target="target" property="propertyName">
… 本体内容
</c:set> //将本体内容的数据储存至target对象的属性中
属性描述必需默认值
value 需要保存的信息 No body
target 为一JavaBean或java.util.Map对象 No None
property 指定target对象的属性 No None
var 欲存入的变量名称 No None
scope var变量的JSP范围 No Page

eg:

<%@ page language="java" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Tag Example - www.yiibai.com</title>
</head>
<body>
    <hr>设置userName的属性为hellking,然后输出这个属性值:
    <c:set value="hellking" var="userName" />
    <c:out value="${userName}"/>
    <hr>设置password的属性,属性值在body中,然后输出这个属性值:
    <c:set var="password">
        1234
    </c:set>
    <hr>设置javaBean的属性,然后输出这些属性值:
    <c:set value="hk2" target="${user}" property="userName" />
    <c:set target="${user}" property="password">
        1234
    </c:set>
    userName=<c:out value="${user.userName}" />
    password=<c:out value="${user.password}" />
    <hr>设置不同的属性,并且制定它们的范围:
    <c:set value="1000" var="maxUser" scope="application" />
    <c:set value="100" var="maxIdelTime" scope="session" />
    <c:set value="next.jsp" var="nextPage" scope="page" />    
</body>
</html>

<c:remove> 用于删除数据

语法:

<c:remove var="varName" [scope="{ page|request|session|application }"] />

属性描述必需默认值
var 删除的变量名称 Yes None
scope 要删除变量的范围 No All scopes

eg:

<%@ page language="java" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Tag Example - www.yiibai.com</title>
</head>
<body>
    <c:set var="salary" scope="session"  value="${2000*2}" />
    删除前:<c:out value="${salary}" /><br>
    <c:remove var="salary" /> 
    删除后:<c:out value="${salary}" default="null"/>
</body>
</html>

//结果输出为:
    删除前:4000
    删除后:null

<c:catch> 主要用来处理产生错误的异常状况,并且将错误信息储存起来

语法:

<c:catch [var="varName"] >
… 欲抓取错误的部分
</c:catch>
属性描述必需默认值
var 变量的名称保存在java.lang。如果抛出的Throwable在body元素内。 No None
eg:
<%@ page language="java" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Tag Example - www.yiibai.com</title>
</head>
<body>
    <c:catch var="catchException">
        <% int x=5/0; %>
    </c:catch>
    <c:if test="${catchException!=null}">
        <c:out value="${catchException}" /><br>
        <c:out value="${catchException.message}" />
    </c:if>
</body>
</html>

//结果输出为:
java.lang.ArithmeticException: / by zero
/ by zero

<c:if> 相当于if判断

语法:

<c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]/>

<c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]>
  本体内容
</c:if>
属性描述必需默认值
test 条件计算 Yes None
var 变量名称的存储条件的结果 No None
scope 变量的范围的存储条件的结果 No page

eg:

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

//结果输出为:
My salary is 4000

<c:choose> 相当于switch语句

语法:

<c:choose>

  <c:when> //case

  </c:when>

  ...

  <c:otherwise> //default

  <c:otherwise>

</c:choose>

属性描述必需默认值
test 条件计算 Yes None

eg:

<%@ page language="java" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Tag Example - www.yiibai.com</title>
</head>
<body>
    <c:set var="salary" scope="session" value="${2000*2 }" />
    <c:choose>
        <c:when test="${salary<=0 }">
            Salary is very low to survive.
        </c:when>
        <c:when test="${salary>1000 }">
            Salary is very good.
        </c:when>
        <c:otherwise>
            No comment sir...
        </c:otherwise>
    </c:choose>
</body>
</html>

//结果输出为:
Salary is very good.

<c:import> 提供了所有<jsp:include>行为标签所具有的功能,同时也允许包含绝对URL

语法:

<c:import [var="varName"] url="url" [context=""]  [charEncoding=""]  [scope="{page|request|session|application}"]  [varReader="varReader"]>

属性描述必需默认值
url 需要检索和引入的页面的URL
context / 紧接着一个本地网络应用程序的名称 当前应用程序
charEncoding 所引入的数据的字符编码集 ISO-8859-1
var 用于存储所引入的文本的变量 Print to page
scope var属性的作用域 Page
varReader 可选的用于提供java.io.Reader对象的变量

eg:

<%@ page language="java" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Tag Example - www.yiibai.com</title>
</head>
<body>
    <c:import var="data" url="http://www.w3cschool.cc" charEncoding="UTF-8"/>
    <c:out value="${data}" />
</body>
</html>

<c:forEach> 循环控制

语法:

<c:forEach [var="varName"] items="collection" [varStatus="varStatusName"][begin="begin"] [end="end"] [step="step"]>
</c:forEach> //迭代一集合对象的所有成员
<c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end" [step="step"]>
</c:forEach> //迭代指定的次数
属性描述必需            默认值
items 要进行迭代的集合 No None
begin 如果指定了begin,那么迭代就从items[begin]开始进行迭代;如果没有指定items,那么就从0开始迭代。它的类型为整数 No 0
end 如果指定了end,那么就在items[end]结束迭代;如果没有指定items,那么就在items最后结束迭代。它的类 型也为整数 No Last element
step 迭代的步长 No 1
var 迭代参数的名称。在迭代体中可以使用的变量的名称,用来表示每一个迭代变量 No None
varStatus 迭代变量的名称,用来表示迭代的状态,可以访问到迭代自身的信息 No None

注意:

eg:

<%@ page language="java" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Tag Example - www.yiibai.com</title>
</head>
<body>
    <%
        String atts[]=new String[5];
        atts[0]="hello";
        atts[1]="this";
        atts[2]="is";
        atts[3]="a";
        atts[4]="pen";
        request.setAttribute("atts",atts);
    
    %>
    <c:forEach items="${atts}" var="item">
        <c:out value="${item}" />
    </c:forEach>
    <c:forEach items="${atts}" var="item" begin="0" end="4" step="2">
        <c:out value="${item}" />
    </c:forEach>
</body>
</html>

//结果输出为:
hello this is a pen
hello is pen

<c:forTokens> 根据指定的分隔符来分隔内容并迭代输出 ,用法类似于<c:forEach>

属性多一个:

属性描述      必需            默认值    
items 要进行迭代的集合 No None
begin 如果指定了begin,那么迭代就从items[begin]开始进行迭代;如果没有指定items,那么就从0开始迭代。它的类型为整数 No 0
end 如果指定了end,那么就在items[end]结束迭代;如果没有指定items,那么就在items最后结束迭代。它的类 型也为整数 No Last element
step 迭代的步长 No 1
var 迭代参数的名称。在迭代体中可以使用的变量的名称,用来表示每一个迭代变量 No None
varStatus 迭代变量的名称,用来表示迭代的状态,可以访问到迭代自身的信息 No None
delims 分隔符 Yes None

 eg:

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

//结果输出为:
Zara nuha roshy

<c:param> 用来给包含或重定向的页面传递参数,用于在<c:url>标签中指定参数,而且与URL编码相关

语法:

<c:param name="paramName"  [value="value"] />

属性描述必需默认值
name URL中要设置的参数的名称
value 参数的值 Body

eg:

<%@ page language="java" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Tag Example - www.yiibai.com</title>
</head>
<body>
    <c:url value="/index.jsp" var="myURL">
        <c:param name="trackingId" value="1234" />
        <c:param name="reportType" value="summary" />
    </c:url>
    <c:import url="${myURL }" />
</body>
</html>

<c:url> 使用可选的查询参数来创造一个URL,将URL格式化为一个字符串,然后存储在一个变量中,标签在需要的时候自动重写URL.该标签只是用于调用 response.encodeURL()方法的一种可选方法。它提供了合适的URL编码,包括<c:param>中指定的参数。

语法:

<c:url value="url" [context=""] [var=""] [scope="{page|request|session|application}"]>

属性描述是否必要默认值
value 基础URL
context 本地网络应用程序的名称 当前应用程序
var 代表URL的变量名 Print to page
scope var属性的作用域 Page

eg:

<%@ page language="java" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Tag Example - www.yiibai.com</title>
</head>
<body>
    <a href="<c:url value="/index.html" />">Test</a>
</body>
</html>

<c:redirect> 重定向至一个新的URL

语法:

<c:redirect url="redirectUrl" [context="projectName"] />

属性描述必需默认值
url URL重定向用户的浏览器 Yes None
context /后面的本地Web应用程序的名称 No 当前应用

eg:

<%@ page language="java" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Tag Example - www.yiibai.com</title>
</head>
<body>
    <c:redirect url="http://www.yiibai.com" />
</body>
</html>
原文地址:https://www.cnblogs.com/blog-yuesheng521/p/5466069.html