前言
EL(表达式语言)的特点是简介 增加程序的可读性和可维护性 其语法如下
${expression} expression是用于指定要输出的内容 可以是字符串 也可以是由EL运算符组成的表达式
一、EL的特点?
1:可以与JSTL结合使用 也可以与JavaScript语句结合使用
2:EL中会自动进行类型转换
3:EL不仅可以访问一般变量 还可以访问JavaBean中的属性以及嵌套属性和集合对象
4:在EL中可以执行算术运算 逻辑运算 关系运算 条件运算等操作
5:在EL中可以获得命名空间
6:在EL中进行除法运算时 如果0作为除数 则返回无穷大而不是错误
7:在EL中可以访问JSP的作用域
8:扩展函数可以与Java类的静态方法进行映射
二、禁用EL的三种方法
1:使用斜杠\符号 语法如下
\${expression}
2:使用page指令来禁用
<%@ page isELIgnored="布尔值"%>
3:在web.xml中配置<el-ignored>元素
<jsp:config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <el-ignored>true</el-ignored> </jsp-property-group> </jsp-config>
三:通过EL访问数据
通过EL提供的[] 和 .运算符可以访问数据 通常情况下这两个运算符是等价的 可以相互替代
但是当访问数组或者列表的元素时最好用[]运算符 因为可以具体访问第几个元素
在EL中判断对象是否为空
${empty expression} 判断是否为非空 ${not empty expression}
其余的算数 逻辑条件运算等等与JAVA区别不大 此处不再赘述
四:EL的隐含对象
1:页面上下文对象pageContext
用于访问JSP内置对象和servletContext 在获取到这些内置对象后 就可以获取其属性值 语法如下
等等内置对象都可以访问
${pageContext.request} ${pageContext.response} ${pageContext.out} ${pageContext.session}
2:访问作用域范围的隐含对象
有以下四个 pageScope ,requestScope, sessionScope, applicationScope。
应用这四个隐含对象指定所要查找的标识符的作用域后 系统将不再按照默认的顺序来查找相应的标识符
3:访问环境信息的隐含对象
1:param和paramValues对象
用于获取请求参数的值 当值有多个的时候用paramValues会方便一些
2:header和headerValues对象
用于获取HTTP请求的一个具体的header的值 在header拥有多个不同值得情况 就必须使用headerValues对象
3:initparam对象
用于获取web应用初始化参数得值
五:定义和使用EL函数
分为以下三步
1:编写一个java类 并在该类中编写公用得静态方法 用于实现自定义EL函数的具体功能
2:编写标签库描述文件 并对函数进行声明 该文件扩展名为.tld 被保存到Web应用的WEB-INF文件夹下
3:在JSP页面中引用标签库 并调用定义的EL函数 实现相应的功能
对应代码如下
java类
package.com.wgh; public class StringDeal{ public static String shiftEnter(String str){ String newStr=str.replacedAll("\r\n","<br>"); newStr=newStr.replaceAll(""," "); return newStr; } }
标签库描述文件
<?xml version="1.0" encoding="utf-8"?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/SMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd" version="2.0"> <tlib-version>1.0</tlib-version> <uri>/stringDeal</uri> <function> <name>shiftEnter</name> <function-class>com.wgh.StringDeal</function-class> <function-signature>java.lang.String.shiftEnter(java.lang.String) </function-signature) </function> </taglib>