请同学们先浏览PPT,这是一个任务点哈!完成后有惊喜哟!
表达式语言(EL)是JSP2.0版本之后引入的新功能,该语言是一种简单,容易使用的语言。可以使用标签快速的访问JSP的隐含对象和JavaBean组件,简化对对象、对象属性、集合元素、请求参数等的访问。它可以非常方便的操作各种算术、关系、逻辑或空值测试运算符,从而提高运算效率。
1.EL语法结构
调用EL表达式的一般格式如下:
${expression}
expression代表一个合法的EL表达式或者变量名,$和{}不要漏写,它是组成EL表达式不可缺少的一部分。功能是在JSP页面中输出该表达式或变量对应的值。
2.EL运算符
EL提供“.”和“[ ]”两种运算符来存取数据。当要存取的属性名称中包含一些特殊字符,如“*”或“?”等非字母或数字的符号,就一定要使用“[ ]”;或者如果要动态取值时,也要用“[ ]”来做,“.”无法做到动态取值。例如:
${user.My-Name}应当改为${user["My-Name"] }
${sessionScope.user[data]}中data是一个变量。
3.变量
EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。
因为我们并没有指定哪一个范围的username,所以它会依序从page、request、session、application范围查找。属性范围在EL中的名称:
page: pageScope
request:requestScope
session:sessionScope
application:applicationScope
4.EL隐含对象
(1)与范围有关的隐含对象
与范围有关的EL 隐含对象包含以下四个:pageScope、requestScope、sessionScope 和applicationScope
在EL中则使用下列方法, ${sessionScope.username}
(2)与输入有关的隐含对象
与输入有关的隐含对象有两个:param和paramValues
在EL中则可以使用param和paramValues两者来取得数据:
${param.name}
${paramValues.name}
5.其他隐含对象
(1)cookie
EL并没有提供设定cookie的动作,例:要取得cookie中有一个设定名称为userCountry的值,可以使用${cookie.userCountry}来取得它。
(2)header和headerValues
header 储存用户浏览器和服务端用来沟通的数据
有可能同一标头名称拥有不同的值,此时必须改为使用headerValues 来取得这些值。
(3)initParam
initParam取得设定web站点的环境参数(Context)
(4)pageContext
pageContext取得其他有关用户要求或页面的详细信息。
| 类别 | 隐含对象 | 描述 |
| JSP页面 | pageContext | 代表此JSP页面的pageContext对象 |
| 作用范围 | pageScope | 用于读取page范围内的属性值 |
| requestScope | 用于读取request范围内的属性值 | |
| sessionScope | 用于读取session范围内的属性值 | |
| applicationScope | 用于读取application范围内的属性值 | |
| 请求参数 | param | 用于读取请求参数中的参数值,等同JSP中的request. getParameter(String name) |
| paramValues | 用于取得请求参数中的参数值数组,等同JSP中的request. getParameterValues(String name) | |
| 请求头 | header | 用于取得指定请求头的值,等同JSP中的request. getHeader(String name) |
| headerValues | 用于取得指定请求头的值数组,等同JSP中的request. getHeaders(String name) | |
| Cookie | cookie | 用于取得request中的cookie集,等同JSP中的request. getCookies() |
| 初始化参数 | initParam | 用于取得Web应用程序上下文初始化参数值,等同JSP中的: application. getInitParameter(String name) |
EL内建对象
【案例8-1】EL简化JSP开发(注册页面)
8_1.jsp
| <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ tagliburi="http://java.sun.com/jsp/jstl/core" prefix="c" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head><title>JSTL标签库</title> </head> <body> <% String username="admin"; //将变量添加到作用域中request.setAttribute("username",username); request.setAttribute("student.name","lanmin"); ArrayList <String> list=new ArrayList<String>(); list.add("水果"); list.add("核桃"); //将集合添加到作用域中 request.setAttribute("list", list); %> <!-- 访问变量 --> ${username}<br> <!-- 含有特殊字符的变量 --> ${requestScope["student.name"]}<br> <!-- 访问集合 --> ${list[1]} </body> </html> |
6.EL运算符
(1)算术运算符有五个:+、-、*或$、/或div、%或mod
(2)关系运算符有六个:==或eq、!=或ne、<或lt、>或gt、<=或le、>=或ge
(3)逻辑运算符有三个:&&或and、||或or、!或not
(4)其它运算符有三个:Empty运算符、条件运算符、()运算符
例:${empty param.name}、${A?B:C}、${A*(B+C)}
上述条件运算符中,如果A表达式为真,则计算表达式C,否则计算表达式C。EL表示式中的条件运算符功能还是比较弱,一般可以用JSTL(见下一节)。

