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标签
来源:CSDN
作者:mamiou_
链接:https://blog.csdn.net/mamiou_/article/details/103398846