日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

EL_JSTL

發布時間:2024/10/14 javascript 74 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EL_JSTL 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.導言

  • 表達式語言 EL(Expression Language)是 JSP 2.0 的重要特性。 EL 設計成可以輕松地編寫免腳本的 JSP 頁面,也就是說,頁面不使用任何 JSP 聲明、表達式或者 scriptlets 。
  • JSTL(JavaServer Pages Standard Tag Library,JSP 標準標簽庫)主要提供給 Java Web 開發人員一個標準通用的標簽函數庫,標簽庫同時支持 EL 用于獲取數據,Web開發人員能夠用此標簽庫取代直接在頁面中嵌入 Java 程序的做法,以提高程序的可讀性和易維護性。

2. EL 簡介

EL表達式以'${'開頭,并以'}'結束。
語法格式為:${expression} 。
EL表達式中的常量包括布爾常量、整型常量、字符串常量和NULL常量。

(1)EL中的標識符
EL 的標識符可以由任意的大小寫字母、數字和下劃線組成。但 EL 的標識符:① 不能以數字開頭;② 不能是EL 中的保留字;③ 不能是隱式對象;④ 不能包含單引號、雙引號、減號和正斜杠等特殊字符。

(2)變量與保留關鍵字
EL 表達式中的變量須從 JSP 四大作用域范圍中依序進行查找。( page、request、session 和 application )
以下是 EL 中的保留關鍵字,不能用作標識符。
and、or、not、eq、ne、lt、gt、le、ge、true、false、null、instanceof、empty、div、mod 。

(3) [ ] 和 . 運算符
通過 EL 提供的“[ ]”和“.”運算符可以訪問數據。
①“.”運算符:EL 表達式可使用點操作符來訪問對象的屬性。例如 object.propertyname。②“[]”運算符:與點操作符類似,也用于訪問對象的屬性,屬性名須用雙引號括起來。③“[]”運算符可以訪問Map對象的key關鍵字的值,例如{object.propertyname} 。 ②“[ ]”運算符:與點操作符類似,也用于訪問對象的屬性,屬性名須用雙引號括起來。 ③“[ ]”運算符可以訪問 Map 對象的 key 關鍵字的值,例如object.propertyname[][]Mapkey{map[ “key”]}。

2.1 EL 的運算符和優先級

2.2 EL 隱式對象

EL為了能夠獲得Web 應用程序中的相關數據,EL 提供了11個隱式對象,類似于JSP的內置對象。

在EL的隱式對象中,除 PageContext 是JavaBean對象,對應于javax.servlet.jsp.PageContext類型外,其他的隱式對象都對應于java.util.Map類型。

這些隱式對象可分為頁面上下文對象、訪問作用域范圍的隱式對象和訪問環境信息的隱式對象 3 種。如表 5-5 所示。

2.2.1 PageContext對象

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>PageContext隱式對象的使用</title> </head> <body> PageContext隱式對象的使用<br><hr> 獲取請求URI:${pageContext.request.requestURI }<br> 獲取請求URL:${pageContext.request.requestURL }<br> 獲取響應的內容類型:${pageContext.response.contentType }<br> 獲取服務器信息:${pageContext.servletContext.serverInfo }<br> 獲取Servlet注冊名:${pageContext.servletConfig.servletName }<br> 獲取session創建時間:${pageContext.session.creationTime }<br> 獲取session會話最長空閑時間:${pageContext.session.maxInactiveInterval }<br> 獲取session會話的id:${pageContext.session.id } </body> </html>

2.2.2 作用域范圍隱式對象(pageScope—requestScope—sessionScope—applicationScope)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>作用域范圍隱式對象的使用</title> </head> <body> <% pageContext.setAttribute("cityName", "Soochow"); %> <% request.setAttribute("university", "華東師范大學"); %> <% session.setAttribute("bookName", "《Android應用開發實踐教程》"); %> <% application.setAttribute("cityName", "New York"); %> <p>pageScope隱式對象中key為"cityName"的值:${pageScope.cityName }</p> <p>requestScope隱式對象中key為"university"的值:${requestScope.university }</p> <p>session隱式對象中key為"bookName"的值:${sessionScope.bookName }</p> <p>applicationScope隱式對象中key為"cityName"的值:${applicationScope.cityName }</p> <p>表達式\${cityName}的值:${pageScope.cityName}</p> </body> </html>

2.2.3 param和paramValues對象

訪問param.jsp,提交到param_result.jsp

param.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>param和paramValues隱式對象的使用</title> </head> <body> <h2>個人信息</h2> <form action="${pageContext.request.contextPath}/page/ch5/param_result.jsp"> <p>姓名:<input type="text" name="user" /></p> <p>愛好:<input type="checkbox" name="hobby" value="swim">游泳 <input type="checkbox" name="hobby" value="pingpang">乒乓球 <input type="checkbox" name="hobby" value="music">音樂 <input type="checkbox" name="hobby" value="Go">圍棋</p> <p><input type="submit" value="提交"></p> </form> </body> </html>

param_result.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>個人信息</title> </head> <body> <p>姓名:${param.user}</p> <p>愛好:${paramValues.hobby[0]}&nbsp;${paramValues.hobby[1]}&nbsp;${paramValues.hobby[2]}</p> </body> </html>

2.2.4 Cookie對象

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>Cookie隱式對象的使用</title> </head> <body><h3>Cookie隱式對象的使用</h3><p>獲取名為JSESSIONID的Cookie對象:${cookie.JSESSIONID }</p><p>獲取名為JSESSIONID的Cookie對象的名稱:${cookie.JSESSIONID.name }</p><p>獲取名為JSESSIONID的Cookie對象的值:${cookie.JSESSIONID.value }</p><hr><%Cookie cookie2 = new Cookie("username", "admin");response.addCookie(cookie2);%><p>獲取名為username的Cookie對象:${cookie.username }</p><p>獲取名為username的Cookie對象的名稱:${cookie.username.name }</p><p>獲取名為username的Cookie對象的值:${cookie.username.value }</p> <hr><%Cookie[] cookies = request.getCookies();if (cookies != null)for (Cookie c : cookies) {out.println(c);out.println(c.getName());out.println(c.getValue());out.println("<br>");}%></body> </html>

設置Cookie請看:https://www.bithachi.cn/posts/f768f9d3.html

2.2.5 header對象

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>header隱式對象的使用</title> </head> <body> <h3>header隱式對象的使用</h3> <p>獲取請求頭Host的值:${header.host }</p> <p>獲取請求頭的connection屬性(是否需要持久連接):${header.connection }</p> </body> </html>

2.2…6 initParam對象

web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><context-param><param-name>driverClassName</param-name><param-value>com.mysql.jdbc.Driver</param-value></context-param> </web-app> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>initParam隱式對象的使用</title> </head> <body> <h3>initParam隱式對象的使用</h3> <p>driverClassName的值:${initParam.driverClassName }</p> </body> </html>

2.3. 定義和使用 EL 函數

EL 自定義函數就是提供一種語法允許在 EL 中調用某個Java類的靜態方法。
EL自定義函數的開發與應用包括以下3個步驟:
(1)編寫一個Java類,并在該類中編寫公用的靜態方法,用于實現自定義EL函數的具體功能。
(2)編寫標簽庫描述文件(擴展名為*.tld),對函數進行聲明,保存到Web應用的WEB-INF文件夾下。
(3)在JSP頁面中引用標簽庫,并調用定義的EL函數,實現相應的功能。

<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"version="2.0"><tlib-version>1.0</tlib-version><short-name>customEL</short-name><uri>http://book.ch5.CustomEL/cFilter</uri><function><description>HTML過濾</description><name>cfilter</name><function-class>book.ch5.CustomEL</function-class><function-signature>java.lang.String cFilter( java.lang.String )</function-signature></function> </taglib> package book.ch5;public final class CustomEL {public static String cFilter(String message) {if (message == null) {return (null);}char content[] = new char[message.length()];message.getChars(0, message.length(), content, 0);StringBuilder result = new StringBuilder(content.length + 50);for (int i = 0; i < content.length; i++) {switch (content[i]) {case '<':result.append("&lt;");break;case '>':result.append("&gt;");break;case '&':result.append("&amp;");break;case '"':result.append("&quot;");break;default:result.append(content[i]);}}return (result.toString());} } <%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%@taglib prefix="mlab" uri="http://book.ch5.CustomEL/cFilter"%> <!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>EL自定義函數示例</title> </head> <body><h3>白日依山盡,黃河入海流</h3>${mlab:cfilter("<h3>白日依山盡,黃河入海流</h3>") } </body> </html>

3. JSTL 簡介

JSP 標準標簽庫(JSTL)是一個 JSP 標簽集合,它封裝了 JSP 應用的通用核心功能。
JSTL 支持通用的、結構化的任務,比如迭代,條件判斷,XML 文檔操作,國際化標簽,SQL 標簽。
除了這些,它還提供了一個框架來使用集成JSTL的自定義標簽。

根據JSTL標簽所提供的功能,可以將其分為5個類別。

  • 核心標簽

  • 格式化標簽

  • SQL標簽

  • XML標簽

  • JSTL函數

3.1 核心標簽庫

JSTL 核心標簽庫包含 Web 應用中最常使用的標簽,是 JSTL 中比較重要的標簽庫。核心標簽庫的標簽按功能可分為4類:表達式標簽、條件標簽、迭代標簽、URL相關標簽。
如表 5-6 所示。引用核心標簽庫的語法如下:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

更多用法:https://www.runoob.com/jsp/jsp-jstl.html

3.2 <c:out>輸出標簽、<c:set>變量設置標簽、<c:remove>變量移除標簽

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!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>Hello,JSTL</title> </head> <body><c:set var="mystr" value="Hello,我們開始學習JSTL!"></c:set><c:out value="${mystr}"></c:out> </body> </html>

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!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>使用 &lt;c:remove&gt; 標簽</title> </head> <body> <c:set var="user" value="一劍沖天" scope="session" /> session中的user:<c:out value="${user}" /> <br><hr> <c:remove var="user" scope="session" /> 從session中移除user再訪問:<c:out value="${user}" /> </body> </html>

3.3 <c:catch> 捕獲異常標簽

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!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>使用 &lt;c:catch&gt; 標簽</title> </head> <body><c:catch var="exception1"><%=169/0%></c:catch><c:out value="${exception1}" /><br><c:out value="${exception1.message}" /> </body> </html>

3.4 <c:if>、 <c:choose>、 <c:when>、 <c:otherwise>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!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>使用 &lt;c:choose&gt; 標簽</title> </head> <body><c:set var="user1" value="一劍沖天" scope="session" /><c:if test="${not empty sessionScope.user1}">您好,${sessionScope.user1}</c:if><c:set var="user" value="admin222" scope="session" /><c:set var="actor1" value="admin1" scope="session" /><c:set var="actor2" value="admin2" scope="session" /><c:choose><c:when test="${sessionScope.user eq sessionScope.actor1}">歡迎您,一級管理員!</c:when><c:when test="${sessionScope.user eq sessionScope.actor2}">歡迎您,二級管理員!</c:when><c:otherwise>對不起,您只是游客,無權訪問該資源!</c:otherwise></c:choose> </body> </html>

3.5 <c:forEach>迭代標簽

<c:forEach>迭代標簽標簽有如下屬性:

屬性描述是否必要默認值
items要被循環的信息
begin開始的元素(0=第一個元素,1=第二個元素)0
end最后一個元素(0=第一個元素,1=第二個元素)Last element
step每一次迭代的步長1
var代表當前條目的變量名稱
varStatus代表循環狀態的變量名稱
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ page import="java.util.*" %> <!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>使用 &lt;c:forEach&gt; 標簽</title> </head> <body> <%List<String> bookList = new ArrayList<String>();bookList.add("《Android應用開發實踐教程》");bookList.add("《Web應用開發》");bookList.add("《軟件項目管理》");bookList.add("《iOS程序設計》");session.setAttribute("bookList", bookList); %> <c:forEach items="${sessionScope.bookList}" var="book" varStatus="bookvst"> <p>圖書序號:${bookvst.index+1},圖書名稱:${book}</p> </c:forEach> </body> </html>

3.6 <c:import>

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!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>使用 &lt;c:import&gt; 標簽</title> </head> <body><c:import url="navigation.jsp" /> </body> </html> <%--navigation.jsp--%><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <!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>電影天堂</title> </head> <body> <font color="blue"><b>最新影片 | 經典影片 | 國內電影 | 歐美電影 | 歐美電視 | 最新綜藝</b></font> </body> </html>

3.7 <c:url>、 <c:set>、 <c:remove>

<%-- url_test.jsp --%><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!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>使用 &lt;c:url&gt; 標簽</title> </head> <body><c:url var="path" value="navigation.jsp" scope="page" /><a href="${pageScope.path}">電影天堂首頁</a> </body> </html>

<%-- redirect_test.jsp --%><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!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>使用 &lt;c:redirect&gt; 標簽</title> </head> <body><c:redirect url="main.jsp"><c:param name="user" value="詩仙李白" /></c:redirect> </body> </html> <%-- main.jsp --%> <%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <!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>重定向頁面并傳遞參數</title> </head> <body> <p>原來你是${param.user}</p> </body> </html>

總結

以上是生活随笔為你收集整理的EL_JSTL的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。