EL表达式简介
1. EL简介
1.1 什么是EL表达式?
Expression Language(表达式语言)。
1.2 EL的功能
替代JSP页面中的复杂代码。
1.3 EL的特点
自动转换类型,使用简单。
1.4 使用变量名获取值的简单例子:
//传统
<%
Employee employee = (Employee)request.getAttribute("employee");
Computer comp = employee.getComputer();
String manufacturer = comp.getManufacturer();
%>
//EL
${${requestScope.employee.computer.manufacturer};
2. 变量属性范围名称
属性范围 | EL中的名称 |
---|---|
page | pageScope,例如${pageScope.username},表示在page范围内查找username变量,找不到返null |
request | requstScope |
session | sessionScope |
application | applicationScope |
3. 获取对象的属性值的方法
点操作符: ${user.name}
[]操作符: ${user[“name”]}
3.1 获取集合-List
<%
List names = new ArrayList();
names.add(0, "LiYang");
names.add(1,"WangHua");
request.setAttribute("names", names);
%>
姓名:${names[0]}
姓名:${names[1]}
3.2 获取-Map
<%
Map names = new HashMap();
names.put("one","LiYang");
names.put("two","WangHua");
request.setAttribute("names",names);
%>
姓名:${names.one}
姓名:${names["two"] }
4. EL隐式对象介绍
对象名称 | 说明 |
---|---|
pageScope | 返回页面范围的变量名,这些名称已映射至相应的值 |
requestScope | 返回请求范围的变量名,这些名称已映射至相应的值 |
sessionScope | 返回会话范围的变量名,这些名称已映射至相应的值 |
applicationScope | 返回应用范围的变量名,这些名称已映射至相应的值 |
param | 返回客户端请求参数的字符串值 |
paramValues | 返回返回映射至客户端的请求参数的一组值 |
pageContext | 提供对用户请求和页面信息的访问 |
5. EL表达式一个综合例子
User实体类:
public class User {
private String name;
private String password;
private String[] habits;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String[] getHabits() {
return habits;
}
public void setHabits(String[] habits) {
this.habits = habits;
}
}
注册页面register.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>用户注册</title>
</head>
<body>
<form id="regFrm" action="doRegister.jsp" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input id="userName" name="userName" type="text"></td>
</tr>
<tr>
<td>密码:</td>
<td><input id="password" name="password" type="password"></td>
</tr>
<tr>
<td>业余爱好:</td>
<td><input name="habit" type="checkbox" value="Reading">看书
<input name="habit" type="checkbox" value="Game">玩游戏 <input
name="habit" type="checkbox" value="Travelling">旅游 <input
name="habit" type="checkbox" value="Swimming">游泳 <input
name="habit" type="checkbox" value="TV">看电视</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="提交"></td>
</tr>
</table>
</form>
</body>
</html>
== 处理注册的页面 doRegister.jsp==
<%@ page language="java"
import="java.util.*,com.rainsia.register.entity.User"
pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>用EL展示注册信息</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
//从请求参数中取得用户名
String userName = request.getParameter("userName");
//密码
String password = request.getParameter("password");
//业余爱好
String[] habits = request.getParameterValues("habit");
//此处生成一个User对象,以便展示EL访问某个作用域内的对象
User user = new User();
user.setName(userName);
user.setPassword(password);
user.setHabits(habits);
//把此user对象设置为request范围内的一个属性
request.setAttribute("userObj", user);
%>
====使用request作用域内的userObj对象展示注册信息====
<br /> 注册成功,您的注册信息是:
<br /> 用户名:${requestScope.userObj.name }
<br /> 业余爱好:
<%
for (int i = 0; i < habits.length; i++) {
if (i > 0) {
out.print("、");
}
out.print(habits[i]);
}
%>
<br />
<br />
<br />
<br /> ====使用param对象与paramValues对象展示注册信息====
<br> 用户名:${param.userName }
<br /> 业余爱好:
<%
for (int i = 0; i < habits.length; i++) {
if (i > 0) {
out.print("、");
}
request.setAttribute("i", i); //将索引放到请求域中
%>
${paramValues.habit[i]}
<%
}
%>
<br />
<br />
<br />
<br /> ====EL表达式中的简单运算====
<br /> userObj是否为空:${ empty userObj }
<br /> userObject是否为空:${ empty userObject }
<br /> 23.0/4.0 是否大于 43.3/6.0 ${ 23.0/4.0 > 43.3/6.0 }
</body>
</html>
本文到此就结束了,后续文章继续记录JSTL和标签库的相关知识。