1. 程式人生 > 其它 >JavaWeb基礎-EL簡單學習

JavaWeb基礎-EL簡單學習

技術標籤:Java基礎javajsp

EL簡單學習

EL的概述

什麼是EL

在這裡插入圖片描述
EL:Expression Language

EL的作用

EL和JSPL一起使用取代JSP頁面嵌入Java程式碼寫法。

EL功能

EL獲取資料
EL執行運算
EL獲取web開發常用的物件
EL呼叫Java方法

EL的語法

語法:
 ${ EL 表示式}

EL獲取資料

EL如何獲取資料

EL表示式再執行的時候,會呼叫pageContext,findAttribute()方法。分別從page、request、session、application範圍查詢相應物件,找到就會返回相應物件,找不到返回""(返回的不是nul,是空字串)。EL所獲取的資料需要在四個作用範圍中。

演示EL獲取資料

<%--
  Created by IntelliJ IDEA.
  User: James
  Date: 2021/1/16
  Time: 13:16
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title<
/title> </head> <body> <h1>EL資料獲取</h1> <% pageContext.setAttribute("name","張三"); request.setAttribute("name","張三"); session.setAttribute("name","張三"); application.setAttribute("name","張三"
); %> <%= pageContext.getAttribute("name")%> -${pageScope.name}</br> <%= request.getAttribute("name")%> -${requestScope.name}</br> <%= session.getAttribute("name")%> -${sessionScope.name}</br> <%= application.getAttribute("name")%> -${applicationScope.name}</br> <!-- --> ${ name } <!-- 先找到的是pageContext的裡面的值 然後依次request、session、application --> </body> </html>

EL獲取陣列和集合的資料

獲取陣列的資料

<%--
  Created by IntelliJ IDEA.
  User: James
  Date: 2021/1/16
  Time: 13:16
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>EL獲取陣列的資料</h1>
<%
    String[] str = {"aa","bb","cc"};
    pageContext.setAttribute("str",str);
%>
${str[0]}
${str[1]}
${str[2]}

</body>
</html>

獲取List集合的資料

<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %><%--
  Created by IntelliJ IDEA.
  User: James
  Date: 2021/1/16
  Time: 13:16
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>EL獲取List集合的資料</h1>
<%
    List<String> list = new ArrayList<>();
    list.add("11");
    list.add("22");
    list.add("33");
    pageContext.setAttribute("List",list);
%>
${ list[0] }
${ list[1] }
${ list[2] }

</body>
</html>

獲取Map中的資料

<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %><%--
  Created by IntelliJ IDEA.
  User: James
  Date: 2021/1/16
  Time: 13:16
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>EL獲取map集合的資料</h1>
<%
    Map<String,Integer> map = new HashMap<String,Integer>();
    map.put("aaa",111);
    map.put("bbb",222);
    map.put("ccc",333);
    map.put("ddd.fff",444);
    pageContext.setAttribute("map",map);
%>
${ map.aaa }
${ map.bbb }
${ map.ccc }
${map["ddd.fff"]}
<!--
	如果map中的key中包含了特殊字元,那麼不能直接使用.來獲得物件值,需要使用[""]
	.是用來獲取屬性的
	[]是用來獲取下標的
-->
</body>
</html>

EL執行運算

EL可以執行算數運算 、執行關係運算、執行邏輯運算、執行三元運算。

<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %><%--
  Created by IntelliJ IDEA.
  User: James
  Date: 2021/1/16
  Time: 13:16
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>EL執行算數運算</h1>
<%
    pageContext.setAttribute("n1", 10);
    pageContext.setAttribute("n2", 20);
%>
${ n1+n2 }

<h1>執行關係運算</h1>
${ n1 < n2}--${ n1 lt n2}</br>
${ n1 > n2}--${ n1 gt n2}</br>
${ n1 == n2}--${ n1 eq n2}</br>
${ n1 >= n2}--${ n1 ge n2}</br>
${ n1 <= n2}--${ n1 le n2}</br>
${ n1 != n2}--${ n1 ne n2}</br>

<h1>執行邏輯運算</h1>
<%
    pageContext.setAttribute("n3", 30);
    pageContext.setAttribute("n4", 40);
%>
${(n1 < n2) && (n3 < n4)}---${(n1 < n2) and (n3 < n4)}</br>
${(n1 < n2) || (n3 < n4)}---${(n1 < n2) or (n3 < n4)}</br>
${!(n1 < n2) }---${ not(n1 < n2) }</br>

<h1>執行三元運算</h1>
${ n1 < n2 ? "n1小於n2" : "n1不小於n2"}

<h1>空運算子</h1>
${ empty user }
${ not empty user }

</body>
</html>

EL獲取web開發常用物件

EL表示式定義了11個web開發常用物件。使用這些物件可以很方便獲取web開發中的一些常見物件,並可以讀取這些物件中的資料。
pageContext:相當於JSP內建物件的中的pageContext
pageScope:獲取指定域下的名稱的資料
requestScope:獲取指定域下的名稱的資料
sessionScope:獲取指定域下的名稱的資料
applicationScope:獲取指定域下的名稱的資料
param:在頁面中接收請求引數(接收一個名稱對應一個值引數)
paramValues:在頁面中接收請求引數(接收一個名稱對應多個值引數)
header:在頁面上獲取請求頭(獲取一個key對應一個value頭)
headerValues:在頁面上獲取請求頭(獲取一個key對應多個value頭)
cookie:訪問cookie的名稱和值(${cookie.key.name} ${cookie.key.value})
initParam:獲得全域性初始化引數的值

<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %><%--
  Created by IntelliJ IDEA.
  User: James
  Date: 2021/1/16
  Time: 13:16
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>EL獲取web開發常用物件</h1>
${ param.name }<!-- 相當於request.getParameter("name")-->
${ paramValues.hobby[0] }-${ paramValues.hobby[1] }<!-- 相當於request.getParameterValues("hobby")-->
${ header["User-Agent"] }<!--獲取cookie頭-->
${ initParam.username }<!--獲取全域性物件-->
${ pageContext.request.contextPath}<!--獲取專案路徑-->
${ pageContext.request.remoteAddr }<!--獲取IP-->
</body>
</html>