EL表達式的使用
(1)什麼是el表達式
是一套簡單的運算規則,用于給jsp标簽的屬性指派,也可以直接輸出。
(2)el表達式的使用
1)通路bean的屬性
a.方式一 day10_2.e3.jsp
${user.name} :
容器會依次從pageContext,request,session,application中查找(getAttribute)綁訂名稱為"user"的對象,找到該對象之後,會調用該對象的"getName"方法,最後輸出。
注:
a1. 會将null轉換成""輸出。
a2.找不到該對象,不報空指針異常,會輸出""。
a3.可以使用pageScope,requestScope,sessionScope,application來指定查找範圍。
day10_2.e3.jsp 代碼:
<%@page pageEncoding="utf-8" contentType="text/html; charset=utf-8" %>
<%@page import="bean.*" %>
<html>
<head></head>
<body>
<%
User user = new User();
user.setName("zs");
user.setAge(22);
request.setAttribute("user",user);
User user1 = new User();
user1.setName("wangwu");
user1.setAge(24);
session.setAttribute("user",user1);
%>
name:
<%
//User user1 = (User)request.getAttribute("user");
//out.println(user1.getName());
%><br>
姓名:${user.name}<br>
session上的 姓名:${sessionScope.user.name }
</body>
</html>
bean.User.java代碼:
package bean;
public class User {
private String name;
private int age;
private String[] interest;
public String[] getInterest() {
return interest;
}
public void setInterest(String[] interest) {
this.interest = interest;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
b.方式二 day10_2.e4.jsp
${user["name"]} / ${user['name']}
注:
b1.[]裡面可以出現綁訂名(變量)。
b2.[]裡面可以出現從0開始的下标,用于通路數組中的某個元素。${user.interest[1] }(interest為數組)
day10_2.e4.jsp 代碼:
<%@page pageEncoding="utf-8" contentType="text/html; charset=utf-8" %>
<%@page import="bean.*" %>
<html>
<head></head>
<body>
<%
User user = new User();
user.setName("zhangs");
user.setAge(22);
user.setInterest(new String[]{"撞球","足球","籃球"});
request.setAttribute("user",user);
User user1 = new User();
user1.setName("wangw");
user1.setAge(24);
session.setAttribute("user",user1);
%>
name:${user["name"] }<br/>
<%
request.setAttribute("propname","age");
%>
<!-- []裡面可以出現綁訂名(變量) -->
年齡:${user[propname] }<br/>
<!-- []裡面可以出現從0開始的下标,用于通路數組中的某個元素 -->
興趣愛好:${user.interest[1] }<br/>
</body>
</html>
2)進行一些簡單的運算
運算的結果可以給jsp标簽的屬性指派,也可以直接輸出(e5.jsp)。
a.算術運算 +,-,*,/,%
注: +号隻能求和(不能連接配接字元串)。
b.關系運算 >,>=,<,<=,==,!=
c.邏輯運算 && || !
d.empty運算
判斷集合是否為空或者是否是一個空字元串。是,傳回true。
以下四種情況都是true,其他都是false:
d1,空字元串
d2,空的集合(集合中沒有任何元素)
d3,null
d4,找不到值
e5.jsp代碼示例:
<%@page pageEncoding="utf-8" contentType="text/html; charset=utf-8" %>
<%@page import="java.util.*" %>
<html>
<head></head>
<body>
<!-- 算術運算 +,-,*,/,% -->
<!-- +号隻能求和(不能連接配接字元串) -->
1+2=${1+2 }<br/>
100+200=${"100"+"200" }<br/>
<!-- 關系運算 >,>=,<,<=,==,!= -->
<!-- 結果都是true/false -->
1>0?${1>0 }<br/>
<%
request.setAttribute("str1","abc");
request.setAttribute("str2","abcd");
%>
${str1 == str2 }<br/>
${str1 == "abc"}<br/>
${sessionScope.str1 == "abc" }<br/>
<!-- 邏輯運算 && || ! -->
<!-- empty運算 結果為true/false-->
<!-- 判斷集合是否為空或者是否是一個空字元串;是,傳回true -->
<%
request.setAttribute("str3","");
%>
空字元串:${empty str3 }<br/>
<%
List list = new ArrayList();
//list.add("");
request.setAttribute("list",list);
%>
空的集合:${empty list }<br/>
<%
request.setAttribute("obj",null);
%>
值為null:${empty obj}<br/>
找不到值:${empty sss }<br/>
</body>
</html>
3)讀取請求參數值 (e6.jsp)
a. ${param.username} 等價于request.getParameter("username");
b.${paramValues.city} 等價于request.getParamterValues("city");
e6.jsp示例代碼:
<%@page pageEncoding="utf-8" contentType="text/html; charset=utf-8" %>
<html>
<head></head>
<body>
username:${param.username }<br/>
interest:${paramValues.i [1] }<br/>
</body>
</html>