基本的语法特点
以“${"开头,以”}“结束
一 与低版本的环境兼容----禁用EL
(1) 使用斜杠"\"符号: \${expression}
(2) 使用page命令: <%@ page isELIgored="true" %> // 属性为true则忽略EL表达式,反之则解析EL表达式
(3) 在web.xml文件中配置<el-ignored>元素
eg:
<jsp-config> <jsp-property-group> <ul-pattern>*.jsp</url-pattern> <el-Ignored>true</el-Ignored> //此处设置为false,表示使用EL </jsp-property-group> </jsp-config>
二 保留的关键字
el也有自己的保留的关键字,在为变量命名时候,应尽量避免给这些关键字
and eq gt instanseof div .......
三 EL的运算符及优先级
1 通过EL访问数据
通常情况下,"[]"和"."运算符是等价的。可以相互替代
eg ${userInfo.id} == ${userInfo[id]}
特别情况;例如在数组元素的获取,集合元素的获取
2 EL中进行算术运算
除 /或div
求余 %或mod
在这里值得注意的是+号两边的类型如果可以转换成数值类型的话就进行加运算,否则抛出异常
3 在EL中判断对象是否为空
${empty expression}
4 在EL中进行条件运算
这一点和Java中的一样
${条件表达式 ?表达式1:表达式2}
如果条件为true,则执行表达式1;否则执行表达式2
四 EL的隐含对象
EL提供了11个隐含对象,这些对象类似于JSP的内置对象,也是直接通过对象名进行操作的
1 页面上下文对象 pageContext
这里除了application,config和pageContext)都可以访问Jsp内置核心对象
eg: ${pageContext.request}
2 访问作用域范围的隐含对象
EL中提供了4个用于访问作用域范围的隐含对象,即pageScope,requestScope,sessionScope,applicationScope
3 访问环境信息的隐含对象
EL中提供了6个访问环境信息的隐含对象,即param,paramValues,header和headerValues对象,initParam对象
五 自定义EL
步骤:
(1) 编写一个Java类,并在该类中编写公用的静态方法,用于实现自定义EL函数的具体功能
(2)编写标签库描述文件,对函数进行声明。该文件的扩展名为.tld,被保存到Web应用的WEB-INF文件夹下
(3)在JSP页面总引用标签库,并调用定义的EL函数,实现响应的功能。
(1) Java代码
package com.yc public class String{ public static void main(String[] args){ String newStr=str.replaceAll("\r\n","<br>"); newStr=newStr.replaceAll(""," "); ruturn newStr; } }
(2) 编写标签库文件,名称为stringDel.tld
<?xml version="1.0" encoding="GBK"?> <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"> <!-- 定义函数版本 --> <tlib-version>1.0</tlib-version> <uri>/stringDeal</uri>
<!--定义函数名称-->
<short-name>el<short-name>
<!-- 定义第一个函数 -->
<function> <!-- 定义第一个函数:reverse --> <name>reverse</name> <!-- 定义函数处理类 --> <function-class>com.yc.StringDeal</function-class> <!-- 定义函数的对应方法 --> <function-signature> java.lang.String shiftEnter(java.lang.String) </function-signature> </function> </taglib>
(3) 编写index.jsp,使用自定义标签
<%@ taglib uri="/stringDeal" prefix="el" %> <body> ${shiftEnter("ad") } </body>