1作用:简化jsp文件上java代码开发步骤
例如在jsp上使用java,将域对象中的数据读取到响应体:
<% String value=(String)request.getAttribute("key"); //out.write(value) %> <%=value %>
但是这个步骤要使用多次,对项目组的开发影响很大,因此采用了封装技术:EL表达式
使用EL表达式:
${requestScope.key}
只需要一行,因此极大程度的提高了自己的效率
2.EL是一个java开发工具包,用于从域对象中读取数据并写入到响应体
3.语法格式:路径格式类似于jquery中的选择器和过滤器语法
4.不需要导包
5标注格式${域对象别名.关键字}
域对象名:
(1)application:全局作用域对象
(2)session:会话作用域对象
(3)request:请求作用域对象
(4)pageContext:当前页作用域对象
作用:1.用来初始化jsp内置对象 2.保存标签工具类的结果
作用范围由上到下减小。
域对象别名
jsp EL
(1)application applicationScope
(2)session sessionScope
(3)request requestScope
(4)pageContext pageScope
将存放高级对象属性写到响应体中
${域对象别名.关键字.属性名}
EL表达式使用反射机制,通过调用当前属性的get方法读取属性内容,因此需要有每个属性的get方法
6.EL表达式简化版:可以省略域对象的别名即:${关键字}
工作原理:没有指定域对象,先去当前作用域中定位,如果有读取输出并结束执行,如果没有则去request中,以此递归,其先会去范围小的域对象中读取,如果作用域最大的application也没有找到,则会不报错,而显示null
弊端:
1增加运行时间
例子:加入存放在session中,则先要去pageScope,再去requestScope,最后才到sessionScope中找到,因此会增加运行时间
2导致定位错误,如果两个作用域中都有,则你要显示作用域大的,这是不行的,如果小的里面也有,则只会显示作用域小的,因此会导致定位错误。
适用场景:专门为pageContext读取数据并写入响应体。原因:不增加运行时间,也不会导致定位错误。
7.EL表达式支持的运算:
(1)数学运算:+、-、*、/
(2)关系运算:<、>、=、>= 、<= 、==
(3)逻辑运算:与、或、非
8.EL表达式其他内置对象:
1.param
【使用】:${param.请求参数名}
【作用】:读取请求协议包参数内容
【代替】:
String value=request.getParameter("请求参数名");
out.write(value);
2.paramValues
【使用】:${paramValues.请求参数名}
【作用】:读取请求协议包中关联多个值得请求参数,将内容保存到数组中
【代替】:String array[] =request.getParameterValues("请求参数名");
3.initParam
【使用】:${initParam.共享数据名}
【作用】:将全局对象中来自配置文件的数据写入响应体中
【代替】:
String value=application.getInitParameter("driver");
out.write(value);
4.
9.EL表达式缺陷:
1.只能从域对象中读取数据,不能向域对象中写入数据。
2.不支持控制语句。
4