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>