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中的名称
pagepageScope,例如${pageScope.username},表示在page范围内查找username变量,找不到返null
requestrequstScope
sessionsessionScope
applicationapplicationScope

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和标签库的相关知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值