EL 表达式
1. EL 语法和使用
EL(Expression Language) 是为了使 JSP 写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让 Jsp 的代码更 加简化。语法结构非常简单: ${expressio}EL 表达式一般操作的都是域对象中的数据,操作不了局部变量。域对象的概念在 JSP 中一共有四个:page, request, session, application;范围依次是,本页面,一次请求, 一次会话,整个应用程序。而 EL 默认的查找方式为从小到大查找,找到即可。当域对象全 找完了还未找到则返回空字符串””。
当需要指定从某个特定的域对象中查找数据时可以使用四个域对象对应的空间对象,分别是:pageScope, requestScope, sessionScope, applicationScope。
2. EL 运算
使用 EL 表达式可以用来判断集合中是否有元素 ${empty list}
1) List 遍历
<%
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
request.setAttribute("list", list);
%>
${empty list} (是否为空,如果为空就是true,不为空就是false)
<br /> ${list[1] }
<br />
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC > <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> ${param }<br/> ${param.uname }<br/> ${param['upwd'] }<br/> ${paramValues }<br/> ${paramValues['uname'] }<br/> ${paramValues['uname'][0] }<br/> ${paramValues.upwd[0] }<br/> <%-- ${paramValues.upwd[1] }<br/> --%> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC > <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% pageContext.setAttribute("uname", "zhaoliu"); request.setAttribute("uname", "zhangsan"); session.setAttribute("uname", "wangwu"); application.setAttribute("uname", "admin"); %> ${uname } <br/> <%=pageContext.getAttribute("uname") %> <br/> ${upwd } <br/> <%=pageContext.getAttribute("upwd") %><br/> ${sessionScope.uname }<br/> ${100 }<br/> </body> </html>
<%@page import="java.util.List"%> <%@page import="java.util.ArrayList" %> <%@page import="com.shsxt.entity.User" %> <%@page import="java.util.Map" %> <%@page import="java.util.HashMap" %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC > <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% List<String> nn = new ArrayList<>(); nn.add("hello"); nn.add("world"); User user= new User("zhangsan","zhangsan666",18,true); user.setNn(nn); request.setAttribute("userObject", user); %> ${userObject }<br/> ${userObject.userName } ${userObject.userAge } ${userObject.userSex } ${userObject.nn } ${userObject.nn[0] } <% List<String> list=new ArrayList(); list.add("aaa"); list.add("bbb"); list.add("ccc"); list.add("ddd"); request.setAttribute("list", list); List<String> list2 =new ArrayList<String>(); request.setAttribute("list2",list2); %> ${list } ${list2 } ${list3 } ${list[0] } ${list2[0] } ${empty list } ${empty list2 } ${empty list3 } ${list.size() } ${list3.size() } ${list2.size() } <% Map map = new HashMap(); map.put("aaa", "111"); map.put("bbb", 2222); map.put("ccc", 333); request.setAttribute("map", map); %> ${map } ${map.aaa } ${map['bbb'] } </body> </html>
2) 访问 map
这里使用到了 el 的另一种取值方式[“”]
<%
Map map = new HashMap();
map.put("aaa", "111");
map.put("bbb", 2222);
map.put("ccc-a", 333);
request.setAttribute("map", map);
%>
${empty map} ${map.aaa }
<br /> ${map["bbb"]}
<br /> ${map["ccc-a"]}
3) 做+ 、- 、* 、/( 也可以使用 div 来表示) 、% 、==
<%
String a = "aaa";
String b = "aaa";
%>
<%=a == b%>
${4 div 2 }
<br />
注意:String 也使用==比较
<%
request.setAttribute("a", 10);
request.setAttribute("b", 10);
%>
<h2>${a+b }</h2>
<h2>${a==b }</h2>
<%
request.setAttribute("a", "aaaa");
request.setAttribute("b", "aaaa");
%>
<h2>${a==b }</h2>