-
EL表達式的概述
1.在JSP開發中,為了擷取Servlet域對象中存儲的資料,經常要書寫很多代碼,這樣做會使jsp頁面混亂,難以維護,為此,JSP2.0版本中提供了EL表達式,它是一種簡單的資料通路語言
-
什麼是EL
1.EL可以簡化JSP的書寫方式,是以在JSP學習中,掌握EL是相當重要的,使用EL首先要學習EL表達式.首先要學習它 的文法.EL表達式很簡單,都是從”${“符号開始的,”}”結束的具體格式如下
${表達式}
2.EL的使用:内置對象
内置對象名稱
pageScope page作用域
requestScope request作用域
sessionScope session作用域
applicationScope application作用域
param 擷取一個參數
paramValues 擷取一組參數
header 獲得一個請求頭
headerValues 獲得一組請求頭
pageContext JSP上下文對象
initParam 全局初始化參數
cookie cokkie
- 獲得指定作用域對象
<%--初始化資料--%>
<%
pageContext.setAttribute("name","pValue");
session.setAttribute("name","sValue");
request.setAttribute("name","rValue");
application.setAttribute("name","aValute");
%>
<%--使用jsp腳本擷取資料--%>
<%=pagetContext.getAttribute("name")%><!-- 沒有找到傳回null -->
<%=session.getAttribute("name")%>
<%=request.getAttribute("name")%>
<%=application.getAttribute("name")%>
<% s使用EL表達式%>
${pageScope.name}<!-- 傳回的是"" -->
${requestScope.name}
${sessionScope.name}
${applicationScope.name}
<%--依次獲得資料--%>
${name}<!--底層使用 pageContext.getAttribute("name"),依次從page,request,session,application擷取,如果沒有傳回null如果找到就立馬停止查詢-->
- 請求參數
//請求路徑:/項目名/index.jsp?username=admin&hobby=chouyan&hobby=hejiu
<%--
param.xxx 對應 request.getParamter("xxx");
params.xxx 對應 request.getParamters("xx");
--%>
<%
${param.username}<br/>
${param.hobby}<br/><%--擷取第一個參數--%>
${paramValues.hobby}<br/><%--擷取一個數組--%>
${paramValues.hobby[]}<%-如果是數組,用下标擷取-%>
%>
- 請求頭
<%--
header.xxx 對應request.getHeader("xxx");
headerValues.xxx 對象request.getHeaders("xxx");
--%>
${header.acept}<br/>
${header.accept-Encoding}<br/><%--非法的,有異常的,"-"被解析成減号.使用"/"進行單個EL表達式轉義--%>
${header['accept-Encoding']}<br/>
${headerValues['accept-Encoding'][]}
- pageContext
<%--
pageContext對應pageContext對象
jsp:<%=((HttpServletRequest)pageContext.getRequest).getContextPath%><br/>
EL:${pageContext.request.contextPath}
--%>
- cookie
<%--
cookie沒有對應的api.底層使用request.getCookies()擷取所有的cookie,然後周遊放到Map中Map<name,obj>
-%>
${cookie}</br><%--擷取所有cookie Map存儲--%>
${cooke.company}<%--map.key對應的Value--%>
${cookie.company.name}<%--通過JavaBean 屬性獲得屬性,獲得cookie的名稱,對應方法getName()--%>
- “.”和”[]”的差別
1) []用于有下标的資料(數組,集合) .用于有屬性的資料(map,對象)
2) 如果屬性名中包含有特殊的字元.必須使用[]