丁勇 Email:18442056@QQ.com
学习目标 描述 JSP 表达式语言的语法 认识使用 JSP 表达式的优点 在 JSP 中使用表达式语言
表达式语言简介 5 1 EL 为表达式语言 由两个组开发 JSP 标准标签库专家组 JSP 2.0 专家组 JSP 表达式语言的语法 ${EL Expression} JSP EL 表达式用于以下情形 静态文本 标准标签和自定义标签
表达式语言简介 5 2 请求 响应 JSP 页面 静态内容 动态内容 响应 客户端 服务器 ${ EL Expression } 请求
表达式语言简介 5 3 <html> <td> 或 </td> <body> <td>${'${'}true or true}</td> <h1>el <td>${true Logic</h1> or true}</td> <table </tr> border="1"> <tr> <td><b> 或 </td> 逻辑运算 </b></td> <td><b>el <td>${'${'}true 表达式 </b></td> false}</td> <td><b>result</b></td> <td>${true false}</td> </tr> <tr> <td> 与非 </td> <td>${'${'}true <td>${'${'}not true}</td> and true}</td> <td>${true <td>${not true}</td> and true}</td></tr> <tr> </tr> <tr> <td> 与 </td> <td>${'${'}true 非 </td> && false}</td> <td>${true <td>${'${'}'!false}</td> && false}</td></tr> <tr> <td>${!false}</td> </tr> </table> </body> </html> 演示 : 示例 1 <table> 标签中的 EL 表达式 <table> 标签中的 EL 表达式
表达式语言简介 5 4 <html> <body> <h2> 该商品的价格是 ${84.5E4}.</h2> </body> <input <html> type = " text " name = " num " value <h2> 标签 ( 静态文本 ) 中的表达式 = " ${param[" num "]} " > 在运行时计算的 EL 表达式 演示 : 示例 2
表达式语言简介 5 5 <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %> <html> <head> <title> 表达式示例 </title> </head> <% %> pagecontext.setattribute("color","#ffffcc"); <body bgcolor = '${pagescope.color}' > <h1> 变化的背景色 </h1> </body> </html> 作为背景色属性值传递的 EL 表达式 演示 : 示例 3
禁用 EL 2 1 在 JSP 中禁用计算, 以忽略 JSP 中 EL 表达式的执行 禁用 EL 计算的语法为 : <%@ page iselignored ="true false" %> <html> <html> <%@ <%@ page page iselignored iselignored = true" = false" %> %> <head> <head> <title> < 使用 JSP 使用表达式语言 JSP 表达式语言 </title> </title> </head> </head> <body> <body> <h1> <h1> 表达式语言表达式语言 </h1> </h1> <b> <b> 浏览器类型是浏览器类型是 </b> </b> ${header["user-agent"]}. ${header["user-agent"]}. </body> </body> </html> </html> false true 计算不计算 EL EL
禁用 EL 2 2 <%@page iselignored="false" %> <html> <head> <title> 表达式示例 </title> </head> <body bgcolor="#ffffff"> <h1> 启用表达式语言 </h1> <form method="post" action="expressionexample.jsp"> <b>${'first Name: '}<input type="text value= ${ 请输入您的名字 '}" /></b> <b>${'last Name: '}<input type="text value= ${ 请输入您的姓氏 '}" /></b> <input type= submit name= Submit value= ${ 提交表单 '}"> <input type= reset value= ${ 重置表单 '}"> </form> </body> </html> iselignored 设置为 false JSP 引擎计算 EL 演示 : 示例 6
Web 容器计算变量 变量 用 pagecontext.findattribute(string) 确定变量的值 点运算符 (. ) 或方括号 ( [ ] ) 访问变量的值
隐式对象 4 1 隐式对象 pagecontext param paramvalues initparam cookie pagescope requestscope header headervalue s sessionscope applicationscope
隐式对象 4 2 pagecontext: 提供对页面属性的访问 param: 返回客户端的请求参数的字符串值 paramvalues: 返回映射至客户端的请求参数的一组值
隐式对象 4 3 header: 返回一个请求标题名称, 然后将该值映射至单个字符串值 headervalues: 返回映射至请求标题的一组值 cookie: 返回映射至单个 Cookie 对象的 Cookie 名称 initparam: 返回映射至单个值的上下文初始化参数名称 pagescope: 返回页面范围的变量名, 这些名称已映射至相应的值
隐式对象 4 4 requestscope: 返回对请求对象的属性的访问权限 sessionscope: 返回会话范围的变量名, 这些名称已映射至相应的值 applicationscope: 返回应用范围内的变量, 并将变量名映射至相应的值
文字常量 2 1 文字常量被指定为固定值 JSP 表达式语言支持文字常量 文字常量 布尔型 整型 浮点型 字符串型 Null
文字常量 2 2 布尔型 指定或检查运算结果, 返回结果为 true 或 false 整型 表示十进制 十六进制和八进制类型的值 浮点型 由两部分组成, 如用 E 或 e 和后缀类型表示的指数 字符串型 由 0 个或多个字符组成 Null 表示无值,Null 值可用于代码中检查方法是否返回值
运算符 3 1 运算符 算术 关系 逻辑 Empty 运算符 运算符描述 描述运算符 运算符描述 * < 或 lt 乘法 小于 && and Empty 逻辑与 / 或 div > 或 gt 大于除法 or < = 或 le 小于等于 逻辑或 + > = 加法或 ge 大于等于 - = = 减法 or eq 等于 描述 检查空值!= 不等于
<html> <head> <title> 运算符 </title> </head> <body> <h1> 比较运算符 </h1> <b> </b> <b> </b> </body> </html> 4 > 3 ${4 > 3}<br/> 4 < 3 ${4 < 3}<br/> 4 3 ${4 >= 3}<br/> 4 3 ${4 le 3} <br/> 4 = 4 ${4 == 4} <h1>empty 运算符 </h1> empty " " ${empty "}<br/> 演示 : 示例 8 运算符 3 2 empty " sometext " ${empty " sometext "}<br/> 比较运算符 Empty 运算符
运算符 3 3 <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %> <html> <head> <body bgcolor='${pagescope.color}' text="${pagescope.textclr}"> <title>el 中的对象 </title> </head> <h1>use of implicit objects in EL.</h1> <% <Font color="${pagescope.foregr}" String size="${pagescope.size}"> color="#66ffff"; String 修改背景色和文本色 size="12"; 声明文字常量 String </Font><br/> textclr="blue"; String value of foregr="red"; num1=${pagescope.num1}<br /> pagecontext.setattribute("num1","5"); value of num2=${pagescope.num2}<br /> pagecontext.setattribute("num2","3"); value of num1 = <b>${pagescope.num1}</b> * num2 = <b> pagecontext.setattribute("color",color); ${pagescope.num2}</b> =<b> ${pagescope.num1 * pagecontext.setattribute("size",size); pagescope.num2}</b> </body> pagecontext.setattribute("textclr",textclr); </html> pagecontext.setattribute("foregr",foregr); %> EL 用于访问变量和设置属性 设置属性 * 运算符的用法 演示 : 示例 9
保留字 程序中不应使用保留字作为变量名或方法的名称运算符描述运算符描述 and 与 ge 大于等于 or 或 true True not 非 false False eq 等于 null Null ne 不等于 empty 清空 le 小于等于 div 相除 gt 大于 mod 取模
总结 EL 为表达式语言 社区组织的 JSP 标准标签库专家组和 JSP 2.0 专家组开发了 JSP 表达式语言 JSP 表达式语言可用于任何静态文本 标准标签和自定义标签 点运算符 (. ) 或 ( [ ] ) 用于获取变量的值 pagescope requestscope sessionscope 和 applicationscope 隐式对象用于访问各种范围的变量 param 对象返回一个值, 将请求参数名称映射至单个字符串值 只包含一个字符的字符串以单引号 ( ) 声明 在代码中可以使用 Null 值检查方法是否返回值 JSP 表达式语言定义了一些保留字, 如 and or not 和 eq