JSTL

本文深入讲解JSP标准标签库(JSTL),涵盖核心标签库、格式化标签、SQL标签、XML标签及JSTL函数,提供详实示例,助您掌握JSTL在Web开发中的应用。

参考知识: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()移除首位的空白符

转载于:https://www.cnblogs.com/zyxsblogs/p/9747486.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值