语法格式:
${expression}
1. 表达式支持算术运算符合逻辑运算符
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>EL表达式</h2>
<table border="1" bgcolor="#aaaadd">
<tr>
<td><b>表达式语言</b></td>
<td><b>计算结果</b></td>
<tr>
<tr>
<td>${1}</td>
<td>${1}</td>
</tr>
<tr>
<td>${1+2 }</td>
<td>${1+2 }</td>
<tr>
<tr>
<td>${(1 == 2) ? 3 : 4}
<td>${(1 == 2) ? 3 : 4}
</tr>
<tr>
<td>${1 > 2 }</td>
<td>${1 > 2 }</td>
</tr>
<tr>
<td>${1 lt 2 }</td>
<td>${1 lt 2 }</td>
</tr>
</table>
</body>
</html>
结果:

2. 表达式语言的内置对象
表达式语言包含了11个内置对象
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>EL - 内置对象</h2>
<form action="" method="post">
名字: <input type="text" name="name" value=${param['name'] }>
<input type="submit" value="提交">
</form><br/>
<% session.setAttribute("user", "张三") ;
Cookie c = new Cookie("name","scott");
c.setMaxAge(24 * 3600);
response.addCookie(c);
%>
<table border="1" width="600" bgcolor="#aaaadd">
<tr>
<td width="170"><b>功能</b></td>
<td width="200"><b>表达式语言</b></td>
<td width="300"><b>计算结果</b></td>
</tr>
<!-- 使用两种方式获取请求参数值 -->
<tr>
<td>获取请求参数值</td>
<td>${param.name }</td>
<td>${param.name }</td>
</tr>
<tr>
<td>获取请求参数值</td>
<td>${param['name']}</td>
<td>${param['name'] }</td>
</tr>
<!-- 获取请求头的信息 -->
<tr>
<td>获取请求头的值</td>
<td>${header['user-agent']}</td>
<td>${header['user-agent'] }</td>
</tr>
<!-- 获取Web应用的初始化参数值 -->
<tr>
<td>获取初始化参数值</td>
<td>${initParam.author}</td>
<td>${initParam.author}</td>
</tr>
<!-- 获取session的属性值 -->
<tr>
<td>获取session的属性值</td>
<td>${sessionScope.user}</td>
<td>${sessionScope.user}</td>
</tr>
<!-- 获取Cookie的属相值 -->
<tr>
<td>获取session的属性值</td>
<td>${cookie.name.value}</td>
<td>${cookie.name.value}</td>
</tr>
</table>
</body>
</html>
结果:

3. EL的自定义函数
自定义函数的开发步骤:
3.1 开发函数处理类
该处理类必须包含静态方法,每一个静态方法都可以定义成一个函数
srcelFunctions.java
package el;
public class Functions {
//对字符串进行反转
public static String reverse (String text){
return new StringBuffer(text).reverse().toString();
}
//返回字符串的长度
public static int countChar(String text){
return text.length();
}
}
3.2 使用标签库定义函数
WEB-INF ldsmytaglib.tld
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>itcast</description>
<display-name>itcast-function</display-name>
<tlib-version>1.0</tlib-version>
<short-name>it</short-name>
<uri>http://localhost/functions</uri>
<!-- 定义第一个函数 -->
<function>
<!-- 定义函数名 -->
<name>reverse</name>
<!--定义函数处理类 -->
<function-class>el.Functions</function-class>
<!--定义函数的实现方法 -->
<function-signature>java.lang.String reverse(java.lang.String)</function-signature>
</function>
<!-- 定义第二个函数 -->
<function>
<!-- 定义函数名 -->
<name>countChar</name>
<!--定义函数处理类 -->
<function-class>el.Functions</function-class>
<!--定义函数的实现方法 -->
<function-signature>int countChar(java.lang.String)</function-signature>
</function>
</taglib>
3.3 在JSP页面EL中使用函数
Web03WebContentELELDemo3.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="it" uri="http://localhost/functions"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${it:reverse(param.name)}
${it:countChar(param.name)}
</body>
</html>
访问结果:
