1. 程式人生 > >el表示式與標籤庫

el表示式與標籤庫

EL有效表示式基礎操作符

EL表示式內建物件


el表示式的四大作用域

<!-- 建立物件 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/><!-- 獲取上下文物件 -->
param:一般是從伺服器傳遞結果到頁面,在頁面中取出伺服器儲存的值
<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>