jsp EL表达式

EL表达式与JSTL标签作用

    简化jsp文件上Java代码开发步骤

jsp开发主要任务

  将域对象中数据读取并写入到响应体

在jsp文件上使用Java命令,将域对象中数据读取并写入到响应体开发步骤

<%
String value=(String)request.getAttribute("key");
//out.write(value)
%>
<%=value%>

1.从域对象读取数据
2.对得到数据进行类型转换
3.将最终结果写入到响应体

在这里插入图片描述
运行结果如下:在这里插入图片描述

EL工具包

1.是一个由Java开发的工具包
2.专门从域对象读取数据并写入响应体开发任务``
3.语法格式:路径格式,类似于jQuery中的选择器和过滤器语法
4.EL工具包自动保存Toncat中lib(el-api.jar)
开发时可直接使用,无需额外导包

EL的标准格式

${域对象别名.关键字}:到指定域对象读取对应关键字的内容,并自动将内容写入到响应体

JSP文件中的域对象:

1.application:全局作用域对象
2.session:回话作用域对象
3.request:请求作用域对象
4.pageContext:当前页作用域对象(只能在当前jsp页面使用 用来初始化jsp内的内置对象 便于jsp的标签工具类运行)

EL表达式中域对象的别名

JSP EL
application applicationScope
session sessionScope
request requestScope
pageContext pageScope
在这里插入图片描述
在这里插入图片描述

EL表达式将高级对象属性写入响应体

${域对象别名.关键字。属性名}
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
原因:十八行属性sid在学生类中找不到
EL表达式使用反射机制,通过调用当前属性对应的get方法读取属性内容
在这里插入图片描述
在这里插入图片描述

EL表达式简化版

${关键字}可以省略域对象别名
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
问题:
简化版工作原理:
首先到【pageContext】定位关键字,如果有读取输出并结束执行
【request】,【session】,【application】依次寻找关键字,如果依然没有找到,返回null。
弊端:增加运行时间
容易导致定位错误
适用场景:专门为pageContext读取数据并写入响应体做准备

EL表达式支持的运算

1.支持数学运算
2.关系运算 > >= < <= == !=
gt ge lt le eq !=
3,.逻辑运算 & || !

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
EL表达式中其他的内置对象
1.param:
【使用】:${param.请求参数名}
【作用】:读取请求协议包中参数的内容 代替request.getParameter(“请求参数名”);
out.write(value);
在这里插入图片描述
在这里插入图片描述
2.paramValues:
【作用】:读取请求协议包中关联多个值的请求参数,将参数内容保存到数组
【使用】:
${paramValues.请求参数名} 代替 request.getParameterValues(“ck”);
在这里插入图片描述
在这里插入图片描述
3.initParam:
【代替】:String valueapplication.getInitParameter(“driver”);
out.write(value);
【使用】:
${initParam.共享数据名}
将来自配置文件中的共享数据写入到响应体中
在这里插入图片描述
在这里插入图片描述
# 相对路径和绝对路径
1.区别
相对路径:以当前文件位置为起点,定位其他文件。
绝对路径:以当前网站的根目录为起点,定位其他的资源文件。
在这里插入图片描述
# EL表达式缺陷
1.只能读取域对象数据,不能向域对象中写入数据更改数据。
2.不支持控制语句 if判断 while循环
如果单独使用EL表达式,无法确保所有jsp文件中所有Java文件都被替换。
---------------------------------------------------------------------------解决方法JSTL标签

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值