javascript
JSTL(Java 标准标签库)
文章目錄
- JSTL 簡介
- JSTL 可以使用在哪里
- JSTL 使用步驟
- 使用標簽
- if 語句
- 選擇語句
- 迭代遍歷語句
- URL重寫
- 設置屬性值
- 刪除屬性值
- 異常捕獲
- 導入其它 JSP 頁面
- 重定向
- 輸出指定的值
 
JSTL 簡介
Java Standard Taglib(Java 標準標簽庫)。
JSTL 是一種代替 JSP 中的 Java 代碼的技術。sun 公司制訂的一種技術規(guī)范,用來將 JSP 頁面中的 java 代碼使用類似于 html 當中的標記來替換的一種技術。這樣做的目的,是為了使 JSP 頁面更好維護以及更好的測試。
JSTL 其實質是什么?
 JSTL 底層其實是一些 Java 代碼,在 JSP 轉換成 Servlet 類時,會在 service() 方法體內(nèi)生成 JSTL 對應的 Java 代碼。每種 JSTL 標簽都有其固定的含義,最后會生成固定的 Java 代碼。
JSTL 可以使用在哪里
JSTL 只能用在 JSP 文件中,不可以在 XML 和 HTML 文件中使用,不可以用在 JS 語境中,不可以用在 Java 的語境中。
可以用在標簽的屬性值中,例如:
<a href="<c:url value='/jstl05.jsp'/>">訪問jstl05</a>JSTL 使用步驟
1.需要引用 JSTL 標準標簽庫相關的 jar 文件。
 你如果使用 eclipse 開發(fā),則將 jar 文件 copy 到 WEB-INF\lib,并添加到構建路徑中(構建的 classpath 中)。
jar 文件有:jstl.jar、standard.jar
2.在 jsp 文件當中,使用 taglib 指令導入標簽。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>使用標簽
jstl 標簽都是結合 el 表達式一起使用的。
 jstl 標簽中不能使用 ognl 表達式。
if 語句
<c:if test="" var="" scope="">test 屬性:當值為 true,執(zhí)行標簽體的內(nèi)容(其實就是將內(nèi)容輸出到頁面),為 false,則不執(zhí)行。
 var 屬性:指定一個綁定名。
 scope 屬性:指定一個綁定范圍。
 var 屬性和 scope 屬性用于將 test 的結果綁定到指定的對象(pageContext、request、session、application)上。
示例代碼:
<%@ page import="priv.lwx.jstl.bean.User" %><%--Created by IntelliJ IDEA.User: liaowenxiongDate: 2022/2/4Time: 19:22To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html> <head><title>Title</title> </head> <body style="font-size:30px"> <%User user = new User();user.setName("liaowenxiong");user.setGendar("f");request.setAttribute("user1", user); %> user's name:${user1.name}<br> user's gendar: <c:if test="${user1.gendar == 'm'}" var="rs" scope="request">男 </c:if> <c:if test="${!rs}">女 </c:if> </body> </html>選擇語句
<c:choose>用于分支,當某個條件滿足,執(zhí)行某一個分支。每一個分支條件用 when 標簽來表示。
<c:when test="">
 可出現(xiàn)多次,只用于<c:choose>。
 test 屬性: 當值為 true,執(zhí)行標簽體的內(nèi)容。
<c:otherwise>
 只出現(xiàn) 1 次,只用于 <c:choose>。
 當其它分支都不滿足條件,則執(zhí)行該標簽體的內(nèi)容。
示例代碼:
<%@ page import="priv.lwx.jstl.bean.User" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html> <head><title>Title</title> </head> <body style="font-size:30px"> <%User user = new User();user.setName("liaowenxiong");user.setGendar("f");request.setAttribute("user1",user); %>user's gendar: <c:choose><c:when test="${user1.gendar == 'm'}">男</c:when><c:otherwise>女</c:otherwise> </c:choose> </body> </html>迭代遍歷語句
<c:forEach var="" items="" varStatus="">用于遍歷集合
 items 屬性:指定要遍歷的集合。
 var 屬性: 指定一個綁定名,jsp 引擎會從集合當中取一個對象,綁定到 pageContext 對象上。
 varStatus 屬性: 指定一個綁定名,對應的綁定值是一個 java 對象,封裝了遍歷時的一些信息,包括當前遍歷的對象的下標(index)以及
 是第幾次(count)遍歷。
示例代碼1:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page import="java.util.ArrayList" %> <%@ page import="priv.lwx.jstl.bean.User" %> <%@ page import="java.util.List" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title><style>td {text-align: center;}</style> </head> <body style="font-size: 30px;"> <%List<User> users = new ArrayList<>();User user1 = new User();user1.setName("zs");user1.setGendar("f");User user2 = new User();user2.setName("ww");user2.setGendar("m");users.add(user1);users.add(user2);request.setAttribute("users", users); %> <table border="1" width="60%" cellpadding="0" cellspacing="0"><tr><td>name</td><td>gendar</td></tr><c:forEach var="user" items="${users}"><tr><td>${user.name}</td><td>${user.gendar}</td></tr></c:forEach> </table> </body> </html>示例代碼2:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page import="priv.lwx.jstl.bean.User" %> <%@ page import="java.util.ArrayList" %> <%@ page import="java.util.List" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title><style>.row1 {background-color: red;}.row2 {background-color: yellow;}td {text-align: center;}</style> </head> <body style="font-size: 30px;"> <%List<User> users = new ArrayList<>();User user1 = new User();user1.setName("zs");user1.setGendar("f");User user2 = new User();user2.setName("ww");user2.setGendar("m");users.add(user1);users.add(user2);request.setAttribute("users", users); %> <table border="1" width="60%" cellpadding="0" cellspacing="0"><tr><td>name</td><td>gendar</td><td>count</td><td>index</td></tr><c:forEach var="user" items="${users}" varStatus="status"><tr class="row${status.index%2+1}"><td>${user.name}</td><td>${user.gendar}</td><%--遍歷次數(shù)--%><td>${status.count}</td><%--遍歷元素的下標--%><td>${status.index}</td></tr></c:forEach> </table> </body> </html>URL重寫
<c:url>當用戶禁止 cookie 以后,會自動在地址后面添加sessionId。
 當使用絕對路徑時,會自動在地址前添加應用名。
 value 屬性:指定地址。在表單提交、鏈接當中,可以使用該標簽。
設置屬性值
<c:set var="" scope="" value="">綁定一個對象到指定的范圍。
 var 屬性: 指定一個綁定名。
 scope 屬性:指定一個綁定范圍。
 value 屬性: 綁定值。
示例代碼:
<%--Created by IntelliJ IDEA.User: liaowenxiongDate: 2022/2/5Time: 10:47To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html> <head><title>Title</title> </head> <body style="font-size: 30px;"> <c:set var="rs" scope="session" value="${1+1}"/> 之前 rs=${rs}<br> <c:remove var="rs" scope="session"/> 之后 rs=${rs} </body> </html>刪除屬性值
<c:remove var="" scope="">解除綁定
異常捕獲
<c:catch var="">處理異常,會將異常信息封裝成一個對象,綁定到 pageContext 對象上。屬性 var 就是用來指定綁定名的。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%--Created by IntelliJ IDEA.User: liaowenxiongDate: 2022/2/5Time: 11:00To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>捕獲異常</title> </head> <body style="font-size: 30px;"> <c:catch var="msg"><%Integer.parseInt("123a");%> </c:catch> ${msg} </body> </html>導入其它 JSP 頁面
<c:import url="">url 指定一個 jsp 文件的地址,jsp 會在運行時調用這個 jsp。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%--Created by IntelliJ IDEA.User: liaowenxiongDate: 2022/2/5Time: 11:15To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body style="font-size: 30px;"> jstl10...<br> <c:import url="jstl06.jsp"/><br> </body> </html>重定向
<c:redirect url="">重定向到另外一個地址。url 屬性指定重定向的地址。
當禁止 Cookie 后,會自動在地址后加上 SessionId。
示例代碼:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body style="font-size: 30px;"> <c:set var="rs" scope="session" value="${1+1}"/> <c:redirect url="jstl12.jsp"/> </body> </html>輸出指定的值
<c:out value="" default="" escapeXml="">用于輸出 el 表達式的值。
 value 屬性: 指定輸出的值。
 default 屬性: 指定缺省值。
 escapeXml 屬性: 設置成 true,會將 value 中的特殊字符替換成相應的實體。缺省值就是 true。
示例代碼:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>輸出指定的值</title> </head> <body style="font-size: 30px;"> <%--寫法1--%> <c:out value="${1+1}"/><br> 等價于 <%--寫法2--%> ${1+1}<br> <%--輸出變量的值--%> str:<c:out value="${str}" default="hello"/><br> <%--轉義字符--%> <table><br> <c:out value="<table>" escapeXml="true"/> </body> </html> 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的JSTL(Java 标准标签库)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: csdn信息泄露与ddos(ddos导致
- 下一篇: Java声明定义抽象类_接口_继承_实现
