EL表达式
只要是支持Servlet2.4 或 JSP2.0 的容器,就可以在JSP 页面中直接使用EL
所有EL 都是以 ${ 为起始,以 } 为结尾的。
如
${sessionScope.person.name}等效于
<%
Person person = (Person) session.getAttribute("person");
String name = person.getName();
out.println(name);
%>
EL 提供 . 与 [ ] 两种运算符来存取数据
普通字符串
request.setAttribute("hello", "hello world");
${hello }
el的隐含对象pageScope,requestScope,sessionScope,applicationScope,如果未指定 scope,它的搜索顺序为pageScope--> requestScope--> sessionScope--> applicationScope
对象
Group group = new Group();
group.setName("尚学堂");
User user = new User();
user.setUsername("张三");
user.setAge(18);
user.setGroup(group);
request.setAttribute("user", user);
${user.username }<br>${user.age }<br>${user.group.name }<br>
map
Map mapValue = new HashMap();
mapValue.put("key1", "value1");
mapValue.put("key2", "value2");
request.setAttribute("mapvalue", mapValue);
${mapvalue.key1 }<br>${mapvalue.key2 }<br>
字符串数组
String[] strArray = new String[]{"a", "b", "c"};
request.setAttribute("strarray", strArray);
${strarray[0] }<br>${strarray[1] }<br>${strarray[2] }<br>
对象数组
User[] users = new User[10];
for (int i=0; i<10; i++) {
User u = new User();
u.setUsername("U_" + i);
users[i] = u;
}
request.setAttribute("users", users);
${users[0].username }<br>${users[1].username }<br>${users[2].username }<br>
list
List userList = new ArrayList();
for (int i=0; i<10; i++) {
User uu = new User();
uu.setUsername("UU_" + i);
userList.add(uu);
}
request.setAttribute("userlist", userList);
${userlist[4].username }
测试empty
request.setAttribute("value1", null);
request.setAttribute("value2", "");
request.setAttribute("value3", new ArrayList());
request.setAttribute("value4", "123456");
value1:${empty value1 }<br>
value2:${empty value2 }<br>
value3:${empty value3 }<br>
value4:${empty value4 }<br>
value4:${!empty value4 }<br>
取web.xml 初始化参数
<context-param>
<param-name>encoding</param-name>
<param-value>大五码</param-value>
</context-param>
${initParam.encoding }
取URL参数
<a href="el.jsp?a=aaa&b=bbb">链接 ELp2</a>
${param.a} <br> ${param.b} <br>
el表达式支持运算符