EL表达式
EL(Expression Language 表达式语言)定义了一系列隐含对象和操作符,无须Java代码即可·方便地访问pageContext、request、session、application作用域中的对象。
1、EI表达式显示数据
1.1基本数据类型与String类型
<%
request.setAttribute("score",11.0);
request.setAttribute("name","Jim");
%>
成绩:${score}<br/>
姓名:${name}<br/>
1.2自定义类型
a、在页面中要显示的自定义类成员变量必须要有get方法;
b、显示方式${key.成员变量名}(key为setAttribute中的key)
例如:
ppublic class UserInfo {
private String id;
private String name;
private String address;
public UserInfo(String id, String name, String address) {
this.id = id;
this.name = name;
this.address = address;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public String getAddress() {
return address;
}
}
//jsp代码如下
<%
request.setAttribute("user",new UserInfo("111","AAA","China"));
%>
ID:${user.id}
Name:${user.name}
Address:${user.address}
1.3集合或数组
List
<%
List<String> list = new ArrayList<String>();
list.add("AAA");
list.add("BBB");
request.setAttribute("names",list);
%>
姓名:${names[0]}
<c:forEach var="name" items="${names}">
姓名:${name}<br/>
</c:forEach>
数组
//Java代码
public class Student{
private String name;
public Student(String name){
this.name=name;
}
public String getName(){
return name;
}
}
<!--jsp代码-->
<%
Student [] studentArray = (new Student("AAA"),new Student("BBB"));
request.setAttribute("stuArray",studentArray);
%>
<!--输出单个-->
姓名:${stuArray[0].name}
<!--遍历数组-->
<c:forEach var="student" items="${stuArray}">
姓名:${student.name}
</c:forEach>
Set集合:无法获取单个元素,但可以使用<c:Foreach></c:Foreach>遍历Set集合中元素。
Map集合
<%
Map<String,String> teacherMap = new HashMap<String,String>();
teacherMap.put("语文","李老师");
teacherMap.put("数学","张老师");
request.setAttribute("teachers",teacherMap);
%>
<!--输出单个-->
姓名:${teachers.语文}
姓名:${teachers['数学']}
姓名:${teachers["数学"]}
<!--遍历-->
<c:forEach var="teacher" items="${teachers}">
姓名:${teachers.key}---------${teachers.value}
</c:forEach>
2、EL表达式中的运算符
1.1算术运算符
运算符号:+、-、*、/、或div(没有按照最高精度保留结果的特点)、%或mod
<!--两目运算-->
<%
request.setAttribute("a",1);
request.setAttribute("b",2);
%>
${a+b }<br/>
${a-b }<br/>
${a/b }<br/>
${a div b }<br/
${a%b }<br/>
${a mod b }<br/>
${a*b }<br/>
${a==b }<br/
<!--三目运算-->
${a==1?"相等":"不相等"}
1.2关系运算符
运算符号:==或eq、!=或ne、<或lt、>或gt、<=或le、>=或ge
<%
request.setAttribute("a",1);
request.setAttribute("b",2);
request.setAttribute("str1",qqq);
request.setAttribute("str2",qqq);
request.setAttribute("date1",new Student());
request.setAttribute("date2",new Student());
%>
数值相等:${a==b} ${a eq b}
字符串相等:${str1==str2} ${str1 eq str2}
自定义类相等:${date1==date2} ${date1 eq date2}
不等于:${a!=b} ${a ne b}
小于:${a<b} ${a lt b}
小于等于:${a<=b} ${a le b}
大于:${a>b} ${a gt b}
大于等于:${a>=b} ${a ge b}
1.3逻辑运算符
运算符符号:&&或and、||或or、!或not(注意:只能对boolean类型数据运算)
<%
request.setAttribute("a",true);
request.setAttribute("b",false);
%>
逻辑与:${a && b} ${a and b}
逻辑或:${a || b} ${a or b}
逻辑非:${!b} ${not b}
1.4 empty运算符
说明:如果集合或数组中没有数据,或者其值为null,则empty判断为true,not empty判断为false
<%
request.setAttribute("str1",null);
request.setAttribute("str2","");
List<String> list1 = new ArrayList<String>();
request.setAttribute("list1",list1);
List<String> list2 = new ArrayList<String>();
list2.add("^^^^");
request.setAttribute("list2",list2);
%>
字符串null:${empty str1}---------------${not empty str1}
字符串空:${empty str2}---------------${!empty str2}
集合没有数据:${empty list1}---------------${not empty list1}
集合有数据:${empty list2}---------------${! empty list2}