El常規用法: 2016年5月4日
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>.和[]等效 後者主要考慮到特殊符號的參數和動態獲取
${sessionScope.name}=${sessionScope["name"]}
${sessionScope.list[n]}
隨意一個變量,可從當前頁面尋找,page找不到,就會Request、session、application範圍尋找
jsp中內置對象名稱 El中
page pageScope
request requestScope
session sessionScope
application applicationScope
${範圍.變量名} 取出範圍內變量的值
El隱含對象
pageContext javax.servlet.ServletContext表示JSP的pageContextpageScope page範圍的屬性名稱所對應的值
request requestScope範圍的屬性名稱所對應的值
session sessionScope範圍的屬性名稱所對應的值
application applicationScope範圍的屬性名稱所對應的值
param 同request.getParameter(String name)
paramValues 同getParameterValues(String name)回傳數組
header 同request.getHeader(String name)返回String類型的值
headerValues 同request.getHeaders(String name)回傳數組
cookie 同request.getCookies()
initParam 同request.getInitParameter(String name)
比較字符:
<||lt 小於>||gt 大於
<=||le 小於等於
>=||ge 大於等於
==||eq 等於
!=||ne 不等於
13個標籤,功能分四類
表達式控制標籤:out、set、remove、catch
流程控制標籤:if、choose、when、otherwise
循環標籤:forEach、forTokens
URL操作標籤:import、url、redirect
out
<c:out value="hellow" /><%String s="hellow";
request.setAttribute("s", s);
%>
<c:out value="${s }" default="s" ></c:out>
set
<% User user=new User();request.setAttribute("user", user);
%>
<c:set target="${user }" property="uname" value="hello" />
<c:out value="${user.uname }" default="暫無"></c:out>
remove
msg=<c:out value="${msg }" default="null" /><br /><c:set var="msg" value="hellow" scope="page" />
msg=<c:out value="${msg }" default="null" /><br />
<c:remove var="msg" scope="page"/>
msg=<c:out value="${msg }" default="null" /><br />
msg=null
msg=hellow
msg=null
catch
<c:catch var="error"><!-- 容易異常部分 -->
</c:catch>
${error }
if
<c:if test="${1==1 }" var="name" scope="page">真纔出現啊
</c:if>
${name }
choose when otherwise
<% session.setAttribute("score", 20); %><c:choose>
<c:when test="${score<60 }">不及格</c:when>
<c:when test="${score>60 }">及格</c:when>
<c:otherwise>剛好及格</c:otherwise>
</c:choose>
forEach
<% List<User> list=new ArrayList<User>();User u1=new User("s","d","f");
User u2=new User("s","d","f");
User u3=new User("s","d","f");
User u4=new User("s","d","f");
list.add(u1);
list.add(u2);
list.add(u3);
list.add(u4);
session.setAttribute("s", list);
%>
//開始||結束||步長||狀態屬性
<c:forEach var="s" items="${s }" begin="1" end="1" step="1" varStatus="a">
${s.uid }<br />
${s.uname }<br />
${s.upassword }<br />
輸出行號(從0開始):${a.index }<br />
輸出行號(從1開始):${a.count }<br />
當前迭代的項 :${a.current }<br />
判斷當前項是否爲第一項:${a.first }<br />
判斷當前項是否爲第一項:${a.last }<br />
</c:forEach>
Map
<% Map map=new HashMap();map.put("k1", "v1");
map.put("k2", "v2");
session.setAttribute("s", map);
%>
<c:forEach var="s" items="${s }" varStatus="a">
${s.key }<br />
${s.value }<br />
</c:forEach>
forTokens
//值||分隔符||狀態屬性<c:forTokens items="ww-wwwww-wwwww-wwww-wwwwww" delims="-" var="t" varStatus="a">
${t }<br />
${a.count }
<br />
</c:forTokens>
import
//導入頁面<c:import url="/1.jsp" var="s"></c:import>
${s }
url
//路徑<c:url value="/2/11.jsp" scope="page" var="a22"></c:url>
<a href="${a22 }" >ww</a>
redirect
//重定向,一般和if一起使用<c:redirect url="1.jsp"></c:redirect>//直接同目錄
<c:redirect context="/w" url="/1.jsp" ></c:redirect>
context最初的地方/w
出現它時候需要以/開頭、url也要以/開頭、最終會去/w/1.jsp
EL函數標籤:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>fn:substring
<% session.setAttribute("w", "2006-11-12 11:22:22.0"); %>原來得到的:${w}<br />
截取得到的:${fn:substring(w, 0, 16)}
原來得到的:2006-11-12 11:22:22.0
截取得到的:2006-11-12 11:22
fn:length
<%String[] w={"w","d"};
session.setAttribute("w", w); %>
原來得到的:${w[0]}、${w[1]}<br />
數組的長度:${fn:length(w)}
原來得到的:w、d
截取得到的:2
fn:contains(string, substring)
<% session.setAttribute("w", "2006-11-12 11:22:22.0"); %>原來得到的:${w}<br />
判斷得到的:${fn:contains(w, "2")}
原來得到的:2006-11-12 11:22:22.0
判斷得到的:true
<% session.setAttribute("w", "2006-11-12 11:22:22.0"); %>
原來得到的:${w}<br />
判斷得到的:${fn:contains(w, "9")}
原來得到的:2006-11-12 11:22:22.0
判斷得到的:false
fn:containsIgnoreCase(string, substring)
假如參數string中包含參數substring(忽略大小寫),返回truefn:endsWith(string, suffix)
假如參數 string 以參數suffix結尾,返回truefn:escapeXml(string)
將有非凡意義的XML (和HTML)轉換爲對應的XML character entity code,並返回fn:indexOf(string, substring)
返回參數substring在參數string中第一次出現的位置fn:join(array, separator)
將一個給定的數組array用給定的間隔符separator串在一起,組成一個新的字符串並返回。fn:length(item)
返回參數item中包含元素的數量。參數Item類型是數組、collection或者String。假如是String類型,返回值是String中的字符數。fn:replace(string, before, after)
返回一個String對象。用參數after字符串替換參數string中所有出現參數before字符串的地方,並返回替換後的結果fn:split(string, separator)
返回一個數組,以參數separator 爲分割符分割參數string,分割後的每一部分就是數組的一個元素fn:startsWith(string, prefix)
假如參數string以參數prefix開頭,返回true
fn:substring(string, begin, end)
返回參數string部分字符串, 從參數begin開始到參數end位置,包括end位置的字符fn:substringAfter(string, substring)
返回參數substring在參數string中後面的那一部分字符串
fn:substringBefore(string, substring)
返回參數substring在參數string中前面的那一部分字符串fn:toLowerCase(string)
將參數string所有的字符變爲小寫,並將其返回fn:toUpperCase(string)
將參數string所有的字符變爲大寫,並將其返回fn:trim(string)
去除參數string 首尾的空格,並將其返回截取字符串!使用!
<c:if test="${fn:length(onebeans.info)>100 }">${ fn:substring( onebeans.info ,0,100)} ...</c:if>
<c:if test="${fn:length(onebeans.info)<=100 }">${ onebeans.info }</c:if>
EL表達式語法:
${ EL expression}
其中:
$表示EL表達式的開始。
EL expression指定表達式。
一、JSP EL表達式可用於如下幾種方式。
1 靜態文本:包含EL表達式,其值在運行時計算出來。如: ${8+5}
2 標準標籤和自定義標籤屬性:幫助顯示網頁上的動態內容。
JSP提供一些標準標籤,<jsp:useBean>、<jsp:include>等。自定義標籤是由用戶使用taglib指令 編寫的。
EL表達式可以作爲一個值傳遞給上述標籤的屬性。表達式在運行時計算,結果值將作爲屬性值進行傳遞。
如:
<%
pageContext.setAttribute("color","#ffccff");
%>
<body bgcolor="${pageScope.color}">
7+8=${7+8}
</body>
3 JavaBean與EL表達式:使用EL表達式可以簡潔地讀出JavaBean的屬性值。
傳統的JSP通常使用如下方法訪問JavaBean:
<jsp:getProperty name=”myBean” property=”name”/>
<%=myBean.getName()%>
EL表達式則簡化爲:
${myBean.name}
二、啓用/禁用EL表達式
<%@ page isELIgnored=”true|false” %>爲true時,支持EL表達式計算。
爲false時,不支持EL表達式計算。
三、變量
JSP表達式${product}的計算結果與調用pageContext.findAttribute(“product”)一樣,EL表達式 中的變量可以引用存儲在標準範圍(如:page request session application)中的屬性。點運算符(.)和”[]”用於獲取變量的值。
如:a.identifier-b與expr-a[identifier-b]等價。
四、隱式對象
JSP隱式對象是一組標準的類。在JSP EL定義瞭如下隱式對象:1 pageContext:提供對頁面屬性的訪問。通過pageContext對象可以訪問和使用下列對象。
2 request:表示接受的客戶端的JSP頁面請求。請求的信息可以使用request對象來訪問。 如:${pageContext.request.contextPath}返回請求的上下文路徑。
3 param:返回將請求參數名映射至單個字符串值的值。如:${param[“name”]}
4 paramValues:返回映射至客戶端的請求參數的一組值。
5 pageScope:返回頁面範圍的變量名,這些名稱已映射至相應的值。
6 requestScope:提供對請求對象的屬性的訪問權限。
7 sessionScope:返回會話範圍內的變量名。
8 applicationScope: 返順應用程序範圍內抽變量名。
五、文字常量
JSP表達式語言定義了下列文字常量:
1 布爾型:true或false。
2 整型:與Java中的整型相同。
3 浮點型:與Java中的浮點型相同。
4 字符串型:用單引號或雙引號引起。
5 null:表示沒有值。0和空字符串表示的不是null值。
六、運算符
點運算符(.)和”[]”用於獲取變量的值。
!或not 布爾值取反
empty 檢查空值
* 乘法
/或div 除法
%或mod 求餘數或取模
+ 加
- 減
<或lt 小於
>或gt 大於
<=或le 小於等於
>=或ge 大於等於
==或eq 等於
!=或ne 不等於
&&或and 邏輯與
||或 or 邏輯或
num1?num2:result 條件運算符
=================================================================
[size=large]EL表達式 動態表格數據加序號
<c:forEach var="zb" items="${list}" varStatus="index">
${index.count}
</c:forEach>
================================================================
定義頁面變量,自增
<c:set value="0" var="i" scope="page"/> <c:forEach var="fb" items="${FB}" varStatus="index">
<tr> <td width="10%" align="center">
<c:if test="${!empty fb.sfbz}">
<c:set value="${pageScope.i + 1}" var="i" scope="page"/>
<c:out value="${pageScope.i }"/>
</c:if>
</td> <td width="40%">
${fb.xmmc}
</td>
<td width="40%">
${fb.sfbz}
</td>
</tr>
</c:forEach>
==================================================================
格式化時間
<fmt:formatDate value="${yxqjz}" pattern="yyyy-MM-dd" />
<fmt:formatDate value="${zxyprice.startdate2}" type="date" dateStyle="medium"/>
====================================================================
跨行
<c:if test="${status.index == 0}" >
<td rowspan="${size}">1月</td>
</c:if>
=====================================================================
<script type="text/javascript">
<!--
var TabbedPanels1 = new Spry.Widget.TabbedPanels("TabbedPanels1");
TabbedPanels1.showPanel(${tabId});
//-->
</script>
<div id="TabbedPanels1" class="TabbedPanels">
<ul class="TabbedPanelsTabGroup">
<li class="TabbedPanelsTab" tabindex="0" style="font-size:12px;background-color:#DED465;">
工作計劃
</li>
</ul>
</div>
原創筆記。若有錯誤,請及時告知