JSTL

Posted ZYXS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSTL相关的知识,希望对你有一定的参考价值。

参考知识:https://www.runoob.com/jsp/jsp-jstl.html

JSTL

JSTL(JSP standard Tag Library,JSP标准标签库 )。

核心标签库:

核心标签

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

<%@ taglib prefix="c" 
           uri="http://java.sun.com/jsp/jstl/core" %>
标签描述
<c:out> 用于在JSP中显示数据,就像<%= ... >
技术分享图片
 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8"%>
 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 8 <title>c:out</title>
 9 </head>
10 <body>
11 <%
12     pageContext.setAttribute("people", "张三");
13 %>
14 <h1><c:out value="${people }" /></h1>
15 <h1><c:out value="${people2 }" default="某人"></c:out></h1>
16 </body>
17 </html>
c:out
<c:set> 用于保存(设置)数据
技术分享图片
 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8"%>
 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 8 <title>c:out</title>
 9 </head>
10 <body>
11 <c:set var="people" value="张三" scope="request"></c:set>
12 <c:out value="${people } "></c:out> 
13 <jsp:useBean id="people" class="com.java1234.model.People" scope="page"></jsp:useBean>
14 <c:set property="id" target="${people }" value="001"></c:set>
15 <c:set property="name" target="${people }" value="凌凌漆"></c:set>
16 <c:set property="age" target="${people }" value="18"></c:set>
17 <h1>${people.id }</h1>
18 <h1>${people.name }</h1>
19 <h1>${people.age }</h1>
20 </body>
21 </html>
c:set
<c:remove> 用于删除数据 
技术分享图片
 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8"%>
 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 8 <title>c:remove</title>
 9 </head>
10 <body>
11 <c:set var="people" value="张二蛋" scope="request"></c:set>
12    <h2><c:out value="${people }"/></h2>
13 <c:remove var="people" scope="request"/>
14 <h2><c:out value="${people }" default="没人啊!"></c:out></h2>
15 </body>
16 </html>
c:set
<c:catch>

用来处理产生错误的异常状况,并且将错误信息储存起来

技术分享图片
 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8"%>
 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 8 <title>c:out</title>
 9 </head>
10 <body>
11 <c:catch var="errmg">
12 <%
13 int a=1/0;
14 %>
15 </c:catch>
16 <h3>异常信息:<c:out value="${errmg }"></c:out></h3>
17 </body>
18 </html>
c:catch
<c:if> 与我们在一般程序中用的if相似但是没有else 
技术分享图片
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>c:if</title>
</head>
<body>
<jsp:useBean id="people" class="com.java1234.model.People" scope="page"></jsp:useBean>
<c:set property="id" target="${people }" value="007"></c:set>
<c:set property="name" target="${people }" value="王二小"></c:set>
<c:set property="age" target="${people }" value="18"></c:set>
<c:if test="${people.id == ‘007‘ }" var="s" scope="page">
    <h1>是二小啊!</h1>
</c:if>
<c:if test="${people.age >= 18 }">
    <h1>成年啦</h1>
</c:if>
</body>
</html>
c:if
<c:choose> 本身只当做<c:when>和<c:otherwise>的父标签
技术分享图片
 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8"%>
 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 8 <title>c:choose</title>
 9 </head>
10 <body>
11 <jsp:useBean id="people" class="com.java1234.model.People" scope="page"></jsp:useBean>
12 <c:set property="id" target="${people }" value="007"></c:set>
13 <c:set property="name" target="${people }" value="王二小"></c:set>
14 <c:set property="age" target="${people }" value="18"></c:set>
15 <c:choose>
16     <c:when test="${people.age == ‘18‘ }">
17         <h2>十八岁</h2>
18     </c:when> 
19     <c:when test="${people.age<‘18‘ }">
20         <h2>小于18岁</h2>
21     </c:when>
22     <c:when test="${people.age>‘18‘ }">
23         <h2>大于18岁</h2>
24     </c:when>
25 </c:choose>
26 </body>
27 </html>
c:choose
<c:when> <c:choose>的子标签,用来判断条件是否成立
<c:otherwise> <c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行
<c:import> 检索一个绝对或相对 URL,然后将其内容暴露给页面
技术分享图片
 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8"%>
 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 8 <title>c:forTaken</title>
 9 </head>
10 <body>
11 <c:import url="c_if.jsp"></c:import>
12 <c:import url="c_forTaken.jsp"></c:import>
13 </body>
14 </html>
c:import
<c:forEach> 基础迭代标签,接受多种集合类型
技术分享图片
 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8"%>
 3 <%@ taglib  uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 4 <%@ page import="com.java1234.model.*" %>
 5 <%@ page import="java.util.*" %>
 6 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 7 <html>
 8 <head>
 9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
10 <title>Insert title here</title>
11 </head>
12 <body>
13 <%
14     List<People> plist=new ArrayList<People>();
15     plist.add(new People(1,"张三",18));
16     plist.add(new People(2,"李四",19));
17     plist.add(new People(3,"王五",20));
18     pageContext.setAttribute("plist", plist);
19 %>
20 <table cellpadding="1"> 
21     <tr>
22         <th>编号</th>
23         <th>姓名</th>
24         <th>年龄</th>
25     </tr>
26     <c:forEach items="${plist }" var="p">
27         <tr>
28             <td>${p.id }</td>
29             <td>${p.name }</td>
30             <td>${p.age }</td>
31         </tr>
32     </c:forEach>
33 </table>
34 </body>
35 </html>
c:forEach
<c:forTokens> 根据指定的分隔符来分隔内容并迭代输出
技术分享图片
 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8"%>
 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 8 <title>c:forTaken</title>
 9 </head>
10 <body>
11 <%
12     String str1="www.java.1234.model";
13     String str2="王二小,小二,大小啊";
14     pageContext.setAttribute("str1", str1);
15     pageContext.setAttribute("str2", str2);
16 %>
17 <c:forTokens items="${str1}" delims="." var="st1">
18     ${st1 }
19 </c:forTokens>
20 <hr/>
21 <c:forTokens items="${ str2}" delims="," var="st2">
22     ${st2 }
23 </c:forTokens>
24 </body>
25 </html>
c:forTakens
<c:param>

用来给包含或重定向的页面传递参数

<c:redirect>

重定向至一个新的URL.

技术分享图片
 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8"%>
 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 8 <title>c:rediret</title>
 9 </head>
10 <body>
11 <c:redirect url="target.jsp">
12     <c:param name="name" value="yxs"></c:param>
13     <c:param name="age" value="23"></c:param>
14 </c:redirect>
15 </body>
16 </html>
c:redirect
技术分享图片target.jsp
<c:url> 使用可选的查询参数来创造一个URL
技术分享图片
 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8"%>
 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 8 <title>c:url</title>
 9 </head>
10 <body>
11 <c:url value="http://www.baidu.com" var="url">
12     <c:param name="name" value="yxs"></c:param>
13     <c:param name="age" value="23"></c:param>
14 </c:url>
15 <a href="${url }">百度</a>
16 </body>
17 </html>
c:url

格式化标签

JSTL格式化标签用来格式化并输出文本、日期、时间、数字。引用格式化标签库的语法如下:

<%@ taglib prefix="fmt" 
           uri="http://java.sun.com/jsp/jstl/fmt" %>
标签描述
<fmt:formatNumber> 使用指定的格式或精度格式化数字
<fmt:parseNumber> 解析一个代表着数字,货币或百分比的字符串
<fmt:formatDate> 使用指定的风格或模式格式化日期和时间
<fmt:parseDate> 解析一个代表着日期或时间的字符串
<fmt:bundle> 绑定资源
<fmt:setLocale> 指定地区
<fmt:setBundle> 绑定资源
<fmt:timeZone> 指定时区
<fmt:setTimeZone> 指定时区
<fmt:message> 显示资源配置文件信息
<fmt:requestEncoding> 设置request的字符编码

SQL标签

JSTL SQL标签库提供了与关系型数据库(Oracle,mysql,SQL Server等等)进行交互的标签。引用SQL标签库的语法如下:

<%@ taglib prefix="sql" 
           uri="http://java.sun.com/jsp/jstl/sql" %>
标签描述
<sql:setDataSource> 指定数据源
<sql:query> 运行SQL查询语句
<sql:update> 运行SQL更新语句
<sql:param> 将SQL语句中的参数设为指定值
<sql:dateParam> 将SQL语句中的日期参数设为指定的java.util.Date 对象值
<sql:transaction> 在共享数据库连接中提供嵌套的数据库行为元素,将所有语句以一个事务的形式来运行

XML 标签

JSTL XML标签库提供了创建和操作XML文档的标签。引用XML标签库的语法如下:

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

在使用xml标签前,你必须将XML 和 XPath 的相关包拷贝至你的<Tomcat 安装目录>lib下:

标签描述
<x:out> 与<%= ... >,类似,不过只用于XPath表达式
<x:parse> 解析 XML 数据
<x:set> 设置XPath表达式
<x:if> 判断XPath表达式,若为真,则执行本体中的内容,否则跳过本体
<x:forEach> 迭代XML文档中的节点
<x:choose> <x:when>和<x:otherwise>的父标签
<x:when> <x:choose>的子标签,用来进行条件判断
<x:otherwise> <x:choose>的子标签,当<x:when>判断为false时被执行
<x:transform> 将XSL转换应用在XML文档中
<x:param> 与<x:transform>共同使用,用于设置XSL样式表

JSTL函数

JSTL包含一系列标准函数,大部分是通用的字符串处理函数。引用JSTL函数库的语法如下:

<%@ taglib prefix="fn" 
           uri="http://java.sun.com/jsp/jstl/functions" %>
函数描述
fn:contains() 测试输入的字符串是否包含指定的子串
fn:containsIgnoreCase() 测试输入的字符串是否包含指定的子串,大小写不敏感
fn:endsWith() 测试输入的字符串是否以指定的后缀结尾
fn:escapeXml() 跳过可以作为XML标记的字符
fn:indexOf() 返回指定字符串在输入字符串中出现的位置
fn:join() 将数组中的元素合成一个字符串然后输出
fn:length() 返回字符串长度
fn:replace() 将输入字符串中指定的位置替换为指定的字符串然后返回
fn:split() 将字符串用指定的分隔符分隔然后组成一个子字符串数组并返回
fn:startsWith() 测试输入字符串是否以指定的前缀开始
fn:substring() 返回字符串的子集
fn:substringAfter() 返回字符串在指定子串之后的子集
fn:substringBefore() 返回字符串在指定子串之前的子集
fn:toLowerCase() 将字符串中的字符转为小写
fn:toUpperCase() 将字符串中的字符转为大写
fn:trim() 移除首位的空白符

以上是关于JSTL的主要内容,如果未能解决你的问题,请参考以下文章

JSTL的if-else表式

jsp&el&jstl-01

JSTL

什么是Taglib?

可以注释掉 JSTL 代码吗?

El表达式详解