el表示式與標籤庫
阿新 • • 發佈:2019-02-13
EL有效表示式基礎操作符
EL表示式內建物件
el表示式的四大作用域
param:一般是從伺服器傳遞結果到頁面,在頁面中取出伺服器儲存的值<!-- 建立物件 id:變數名,class:物件名,scope:作用域 預設page--> <jsp:useBean id="user" class="lesson04.User" scope="page"></jsp:useBean> <!-- 設值 property:物件的屬性名,name:物件變數名,value:賦值--> <jsp:setProperty property="name" name="user" value="小二"/> <jsp:setProperty property="age" name="user" value="4"/> <!-- 建立物件 id:變數名,class:物件名,scope:作用域--> <jsp:useBean id="user1" class="lesson04.User" scope="request"></jsp:useBean> <!-- 設值 property:物件的屬性名,name:物件變數名,value:賦值--> <jsp:setProperty property="name" name="user1" value="小三"/> <jsp:setProperty property="age" name="user1" value="8"/> <!-- el表示式也擁有四個對應的內建物件 pageScope requestScope sessionScope applicationScope --> <!-- page --> ${pageScope.user.name }---------${pageScope.user.age }<br/> <!-- request --> ${requestScope.user1.name }----------${requestScope.user1.age }<br/> <% //jsp內建物件 pageContext request session application //useBean的scope page request session application //el表示式內建物件 pageScope requestScope sessionScope applicationScope //el表示式內建物件實際上就是Map 只是填充了 通過setAtrribute()方法寫入的鍵值對 //如果不指定作用域物件 會從作用域最低的物件搜尋 pageScope<requestScope<sessionScope<applicationScope //如果不指定域名物件 影響搜尋的效率 建議加上 pageContext.setAttribute("id", 1); request.setAttribute("id", 2); session.setAttribute("id", 3); application.setAttribute("id", 4); %> ${sessionScope.id }<br/> <!-- el表示式提供了全域性物件 pageContext 可以用於處理頁面上任意的內建--> ${pageContext.session.id }<br/><!-- 獲取sessionID --> ${pageContext.request.contextPath }<br/><!-- 獲取上下文物件 -->
效果<form> <input type='text' name="num1" value="${param.num1 }"/>+<input type='text' name="num2" value="${param.num2 }"/><input type='submit' value="="/> <input type='text' name="result" value="${param.num1+param.num2 }"> </form>
2.JSTL標籤庫
JavaSE專案需要新增jstl的jar包
網上所搜下載jar包 點選開啟連結
maven專案所需依賴的jar包
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
標記庫名稱 |
URI |
字首 |
說明 |
core |
http://java.sun.com/jsp/jstl/core |
c |
核心功能實現,包括變數管理、迭代和條件判斷等 |
I18N |
http://java.sun.com/jsp/jstl/fmt |
fmt |
國際化,資料格式顯示 |
SQL |
http://java.sun.com/jsp/jstl/sql |
sql |
操作資料庫 |
XML |
http://java.sun.com/jsp/jstl/xml |
x |
操作XML |
Fn |
http://java.sun.com/jsp/jstl/functions |
fn |
常用函式庫,包括String操作,集合型別操作等 |
引入標籤庫
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
Core標記庫內容
例如
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<!-- 引入自定義標籤 -->
<%@taglib tagdir="/WEB-INF/tags" prefix="ex" %>
<!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>Insert title here</title>
</head>
<body>
<!-- core標籤庫 -->
<!-- 1、定義變數 變數儲存在四大作用域中 page request session application
標籤的屬性 value 一般都支援el表示式計算
-->
<c:set var="name" value="zs" scope="page"></c:set>
${pageScope.name }
<!-- 2、if語句 不支援else-->
<c:set var="sal" value="20000" scope="page"></c:set>
<c:if test="${pageScope.sal<=10000 }">低薪</c:if>
<c:if test="${pageScope.sal>10000 }">高薪</c:if>
<!-- 3、choose when otherwise 相當於if....else...-->
<c:choose>
<c:when test="${pageScope.sal<=10000 }">低薪</c:when>
<c:when test="${pageScope.sal>10000 and pageScope.sal<=20000 }">中薪</c:when>
<c:otherwise>高薪</c:otherwise>
</c:choose>
<!-- 4、迴圈 forEach -->
<!-- for(int i=1;i<=10;i++){} -->
<c:forEach var="i" begin="1" end="10" step="1">
${pageScope.i }
</c:forEach>
<!-- foreach(){} -->
<%
String[] str=new String[]{"籃球","足球"};
pageContext.setAttribute("str", str);
List list=new ArrayList();
list.add("羽毛球");
list.add("排球");
pageContext.setAttribute("myList", list);
%>
<c:forEach var="ste" items="${pageScope.myList }">
${pageScope.ste }
</c:forEach>
<!-- 5、out輸出內容 c:out標籤能夠對內容的特殊符號進行轉譯
escapeXml 預設值true 表示對html進行轉譯五風險 false和el表示式有風險
-->
<c:set var="tt" value="<font color=red>你好</font>"></c:set>
<%-- ${pageScope.tt } --%>
<c:out value="${pageScope.tt }" escapeXml="true"></c:out>
<!-- 其他標籤 -->
<!-- 跳轉 -->
<%-- <c:redirect url="http://www.pan.com/jspLesson/lesson05work/db.jsp"></c:redirect> --%>
<!-- catch 異常 -->
<c:catch var="myEx">
<%
String ss=null;
ss.toString();
%>
</c:catch>
${pageScope.myEx }
<!-- 國際化,資料格式顯示 -->
<jsp:useBean id="date" class="java.util.Date"></jsp:useBean>
<!-- formaDate 將日期型別轉換成字串 -->
<fmt:formatDate value="${pageScope.date }" pattern="yyyy-MM-dd"/>
<!-- parseDate 將字串轉換成日期型別 -->
<fmt:parseDate value="2017/12/12" pattern="yyyy/MM/dd"></fmt:parseDate>
<!-- 四捨五入 pattern="###.#" 保留的小數位-->
<fmt:formatNumber value="123.56" pattern="###.#"></fmt:formatNumber>
<!-- 國際化 -->
<!-- 設值瀏覽器的locale物件 -->
<fmt:setLocale value="${pageContext.request.locale }"/>
<!-- 設定讀取的資原始檔的basename -->
<fmt:setBundle basename="my"/>
<!-- 讀取資原始檔的資訊 -->
<fmt:message key="hello"></fmt:message>
<!-- 字串 -->
<!-- 去空格 -->
${fn:trim(' hello world ') }
<!-- 包含 -->
${fn:contains('nihao','i') }
<!-- 把字串以指定的字元拆分 -->
<c:forEach var="ee" items="${fn:split('a,b,c',',') }">
${pageScope.ee }
</c:forEach>
<!-- 是否已指定字元結尾 -->
${fn:endsWith('dddd.txt', '.txt')}
<!-- 是否以指定的字元開頭 -->
${fn:startsWith('你好', '你')}
<!-- 在一個字串中 查詢指定的字元並返回所在的下標(下標從0開始) 未找到返回-1-->
${fn:indexOf('hello','o')}
<!-- 返回字串的長度 -->
${fn:length('dfdfdf')}
<!-- 字串替換 -->
${fn:replace('a,b,c', ',', ';')}
<!-- -->
${fn:join(fn:split('a,b,c',',') ,';')}
<!-- 擷取字串 包左不包右 -->
${fn:substring('jdfldj', 0, 2)}
<!-- 從左往右查詢指定字元並截斷 -->
${fn:substringAfter('lfjglg', "f")}
<!-- 從右往左查詢指定字元並截斷 -->
${fn:substringBefore('lfjglg', "j")}
<!-- 轉小寫 -->
${fn:toLowerCase("DDDD")}
<!-- 轉大寫 -->
${fn:toUpperCase("aaaa")}
</body>
</html>