一、初次接触EL表达式:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isELIgnored="false"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>EL表达式接触</title>
</head>
<body>
<%
String name = "mzy";
// 把变量放入域对象中 name value
pageContext.setAttribute("name", name);
pageContext.setAttribute("name", name, PageContext.REQUEST_SCOPE);
%>
<%=name %>
<br/>
EL表达式:${name}
<br/>
<%--
1) 以上的写法,EL从四个域中自动搜索
${name} 等价于<%=pageContext.findAttribute("name") %>
--%>
<%--
2) EL从指定的域中获取
pageScope:page域
requestScope:request域
sessionScope:session域
applicationScope:application域
--%>
指定域获取的EL:${pageScope.name}
${name }
<%
response.sendRedirect("04pre_04el.jsp");
%>
</body>
</html>
二、使用EL表达式从不同类型的容器中获得数据:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isELIgnored="false"%>
<%@ page import="entity.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>EL表达式获取不同类型的数据</title>
</head>
<body>
<%--
1) 普通的字符串
--%>
<%
String email = "zhangsan@qq.com";
// 一定要把数据放入域中
pageContext.setAttribute("email", email);
%>
普通字符串:${email }
<hr/>
<%--
2) 普通的对象
EL表达式的属性表示调用对象的getXX方法。例如
stu.name 调用Student对象的getName()方法
--%>
<%
Student stu = new Student("mzy", "123456");
pageContext.setAttribute("stu", stu);
%>
普通的对象:${stu} <br/>
对象的属性: ${stu.name } ---- ${stu.id }
<hr/>
<%--
3) 数组或List集合(集合只能是List集合)
--%>
<%
// 数组
Student[] stus = new Student[3];
stus[0] = new Student("Jack", "123456");
stus[1] = new Student("Bob", "123456");
stus[2] = new Student("Rose", "123456");
pageContext.setAttribute("stus", stus);
// List
List<Student> list = new ArrayList<Student>();
list.add(new Student("Jack", "654321"));
list.add(new Student("Bob", "654321"));
list.add(new Student("Rose", "654321"));
pageContext.setAttribute("list", list);
%>
<%--
在EL表达式中,不能循环,取元素只能单个单个的取
--%>
数组:<br/>
${stus[0].name } -- ${stus[0].id }<br/>
${stus[1].name } -- ${stus[1].id }<br/>
${stus[2].name } -- ${stus[2].id }<br/>
<hr/>
list集合:<br/>
${list[0].name } -- ${list[0].id }<br/>
${list[1].name } -- ${list[1].id }<br/>
${list[2].name } -- ${list[2].id }<br/>
<hr/>
<%--
4) Map集合
--%>
<%
Map<String,Student> map = new HashMap<String,Student>();
map.put("001",new Student("eric","123456"));
map.put("002",new Student("jacky","123456"));
map.put("003",new Student("rose","123456"));
pageContext.setAttribute("map",map);
%>
Map集合: <br/>
${map['001'].name } - ${map['001'].id }<br/>
${map['002'].name } - ${map['002'].id }<br/>
${map['003'].name } - ${map['003'].id }<br/>
</body>
</html>
三、EL中可执行的算式:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isELIgnored="false" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>EL中可以执行的算式</title>
</head>
<body>
<%--
1) 算数表达式: + - * /
--%>
<%
int a = 10;
int b = 5;
pageContext.setAttribute("a", a);
pageContext.setAttribute("b", b);
%>
${a+b }<br>
${a-b }<br>
${a*b }<br>
<hr>
<%--
2) 比较表达式:> < >= <=
--%>
${a>b }<br>
${a==b }<br>
<hr>
<%--
3) 逻辑表达式: &&、||、!
--%>
${true&&true }<br>
${true||false }<br>
${!true }<br>
${!(a>b) }
<hr/>
<%--
4) 判空表达式 empty
null: == null
空字符串:==""
--%>
<%
// String name = null;
String name01 = null;
String name02 = "";
pageContext.setAttribute("name01", name01);
pageContext.setAttribute("name02", name02);
%>
null:${name01 == null }<br>
空字符串:${name02 == "" }<br>
null或空字符串:${name01 == null || name01 =="" }<br>
null或空字符串可以直接用empty进行判断:${empty name01 }
</body>
</html>