EL表达式
为什么需要EL表达式
什么是EL表达式
它是一种借鉴了JavaScript和XPath的表达式语言,EL表达式定义一系列的隐含对象和操作符,使开发人员能够很方便的访问页面的上下文。
EL表达式语法
EL表达式的语法有两个要素,$和{ } 两者缺一不可。
.操作符
EL表达式通常由两部分组成,对象和属性,就像在java代码中一样,在EL表达式中也可以用点操作符来访问某个对象的属性。例如通过美元符号{user.name}可以访问user对象的name属性。
[ ] 操作符
与点操作符相似 【】 操作符也可以访问对象的某个属性,如美元符号{user[“name”]}可以访问user对象的name属性,除此之外【】操作符还提供了更强大的功能。
- 当属性名中包含了特殊字符如 . 或- 的等情况下,就不能使用点操作符了,使用时只能使用【】操作符。
- 访问数组,可以根据索引值来访问其中的元素,例如:美元符号{names[0]}。
示例:
<html>
<head>
<title>示例4EL表达式</title>
</head>
<body>
<%
Map names = new HashMap();
names.put("one","zhangsan");
names.put("two","lisi");
request.setAttribute("names",names);
%>
姓名:${
names.one}<br/>
姓名:${
names.two}
</body>
</html>
关系操作符
逻辑操作符
Empty操作符
EL表达式隐式对象
作用域访问对象
通过一个示例加以说明,下面以用户注册为例,制作一个注册页面,提交注册后,以EL表达式展示信息。
注册页面代码如下:
<html>
<head>
<title>用户注册</title>
</head>
<body>
<form action="/ch08yx/userServlet" method="post" id="regfrm">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" id="userName" name="userName"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" id="userPwd" name="userPwd"></td>
</tr>
<tr>
<td>业余爱好</td>
<td>
<input type="checkbox" name="habit" value="看书">看书
<input type="checkbox" name="habit" value="玩游戏">玩游戏
<input type="checkbox" name="habit" value="旅游">旅游
<input type="checkbox" name="habit" value="游泳">游泳
<input type="checkbox" name="habit" value="看电视">看电视
</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="提交"></td>
</tr>
</table>
</form>
</body>
</html>
当用户点击提交后,将表单提交到与注册功能相关的Servlet。处理完毕后跳转到注册成功页面展示信息。
用户示例类User代码如下:
public class User implements Serializable {
private static final long serialVersionUID=8959761497403478596L;
private String name;
private String password;
private String role;
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
private List<String> habits;
public static long getSerialVersionUID() {
return serialVersionUID