全网最全的JavaWeb---EL表达式 没有之一!!!

简介: EL表达式语言是一种简单的语言,提供了在JSP中简化表达式的方法,目的是为了尽量减少JSP页面中的Java代码,使得JSP页面的处理程序编写起来更加简洁,便于开发和维护。

1.EL工具包介绍


  • 由Java技术开发一个jar包
  • 作用是降低JSP文件开发时Java命令开发强度
  • Tomcat服务器本身自带了一个EL工具包(Tomcat安装地址/lib/el-api.jar)


2.JSP文件作用


代替响应体对象将Servlet中doGet,doPost的执行结果写入到响应体


3.JSP文件中主要开发步骤


将作用域存放的处理结果读取出来并写入到响应体

<%
    Strint value = (String)(request.getSAttribute("key1"));
%>
复制代码

第一步:从指定的作用域对象读取该处理结果

第二步:将得到的数据进行类型强转

第二步:将转换后的数据写入到响应体


3. EL表达式介绍


1.命令格式(此时不是引用对象属性):

${作用域对象别名.共享数据}

2.命令作用:

  • EL表达式是EL工具包提供一种特殊命令格式【表达式命令格式】
  • EL表达式在JSP文件上使用
  • 负责在JSP文件上从作用域对象读取指定的共享数据并输出到响应体


4.JSP文件可以使用的作用域丢对象


注意:JSP有四个作用域对象,Servlet有三个作用域对象

微信截图_20220607195813.png

5.EL表达式提供作用域对象别名

微信截图_20220607195821.png

6.EL表达式将引用对象属性写入到响应体


  1. 命令格式:

${作用域对象别名.共享数据名.属性名}

  1. 例如:${applicationScope.key1.sname}
  2. 命令作用:从作用域对象读取指定共享数据关联的引用对象的属性值。
    并自动将属性值的结果写入到响应体。
  3. 属性名:一定要与引用类型属性名完全一致,包括大小写。
    不论这个属性是私有的还是公有的都可以直接调用
    因为EL表达式使用的是反射机制,通过反射机制来
    得到当前类中的属性。

EL表达式没有提供遍历集合方法,因此无法从作用域对象读取集合内容输出


7.EL表达式简化版


  1. 简化版命令格式:

${共享数据名}

  1. 命令作用:EL表达式允许开发人员时省略作用域对象别名
  2. 工作原理:EL表达式简化版由于没有指定作用域对象,所以在执行时采用【猜】算法。
    微信截图_20220607195918.png
  3. 存在隐患
  • 容易降低程序执行速度【南辕北辙】(因为得挨个作用域进行寻找)
  • 容易导致定位错误
  1. 应用场景
    设计目的,就是简化从pageContext读取共享数据并输出难度
  2. EL表达式简化版尽管存在很多隐患,但是在实际开发过程中,开发人员为了节省时间,一般都使用简化版,拒绝使用标准版。早点下班回家。


8.EL表达式-------支持运算表达式


前提:在JSP文件中有时需要将读取的共享数据进行一番运算后,将运算结果写入到响应体。

  1. 运算表达式:

微信截图_20220607200135.png

  1. 关系运算:微信截图_20220607200144.png

在运算的时候,可以写 > 也可以写 gt 效果是一样的

微信截图_20220607200252.png

  1. 逻辑运算:&& || !


9.EL表达式提供内置对象


第一个内置对象 param


  1. 命令格式:${param.请求参数名}
  2. 命令作用:从通过请求对象读取当前请求包中请求参数内容并将请求参数内容写入到响应体
  3. 代替命令:
    假设此时有一个文件叫做 index.jsp
    发送请求:Http://localhost:8080/myweb/index.jsp?userName=mike&password=123
    此时需要将请求包中的请求参数写入响应体中
<%
    String userName = request.getParameter("userName");
    String password = request.getParameter("password");
%>
<%=userName%>
<%=password%>
复制代码

微信截图_20220607200446.png

输出的结果: 微信截图_20220607200455.png

第二个内置对象 paramValues


  1. 命令格式:${paramValues.请求参数名[下标]}
  2. 命令作用:如果浏览器发送的请求参数是一个请求参数关联多个值
    此时可以通过paramValues读取请求参数下指定位置的值
    并写入到响应体。
  3. 代替命令:
    假设此时有一个文件叫做 index_1.jsp
    发送请求:Http://localhost:8080/myweb/index_1.jsp?pageNo=1&pageNo=2&pageNo=3
    注意以上这个请求中只有一个请求参数,就是pageOn,并不是三个
    此时pageNo请求参数在请求包中的存在形式
    pageNo:[1,2,3]
<%
    String array[] = request.getParamterValues("pageNo");
%>
<!--以前的写法-->
第一个值:<%=array[0]%>
第二个值:<%=array[1]%>
复制代码

微信截图_20220607200602.png 输出的结果: 微信截图_20220607200611.png

10.EL表达式常见异常


以下程序报错的原因:Student中的全局变量为 sname,而在index_1.jsp写成了name导致在index_1.jsp中找不到 name 这个属性,此时会发生对象中没有找到指定属性错误

微信截图_20220607200624.png微信截图_20220607200637.png

javax.el.PropertyNotFoundException : 在对象中没有找到指定属性



相关文章
|
XML SQL Java
JavaWeb 速通 EL 和 JSTL
JavaWeb——服务器渲染技术 EL + JSTL 内容分享
235 0
|
6月前
|
缓存 监控 Java
java动态代理
本文介绍了Java中的动态代理及其优势,通过增强原有方法或拦截调用实现无侵入式代码扩展,如添加日志、缓存等。文章先讲解了静态代理的基本概念和实现方式,随后引出动态代理解决静态代理在多方法、多类场景下的局限性。通过JDK提供的InvocationHandler接口和Proxy类,展示了如何动态生成代理对象。最后,文章还探讨了代理Hook技术,包括寻找Hook点、选择代理方式以及替换原始对象的具体步骤。
190 0
|
10月前
|
自然语言处理 搜索推荐 算法
如何利用电商API接口打造个性化购物体验
在数字化时代,电子商务竞争激烈,传统购物体验难以满足消费者的个性化需求。电商平台需通过创新提供定制化服务,而电商API接口作为系统连接的桥梁,提供了强大技术支持。本文探讨如何利用电商API打造个性化购物体验,涵盖其在个性化推荐、定制营销和智能客服等方面的应用,并提出实施策略与未来展望。通过数据收集与分析、算法设计及智能系统建设,电商平台可显著提升用户体验和满意度,推动业务增长。成功案例如亚马逊、淘宝和Zappos展示了个性化服务的巨大潜力,同时也指出了面临的挑战及应对措施。
487 9
|
关系型数据库 MySQL 网络安全
有关使用Navicat 无法成功连接腾讯云服务器上Mysql的问题解决
这篇文章提供了解决Navicat无法连接腾讯云服务器上MySQL问题的步骤,包括调整防火墙设置、更新MySQL权限和检查远程连接配置。
有关使用Navicat 无法成功连接腾讯云服务器上Mysql的问题解决
物联网:“定向卡”与“通用卡”的区别
在讨论“定向卡”与“通用卡”的区别时,我们首先要明确这两种卡通常是在不同背景下被提及的,比如在营销、金融服务、会员卡系统等领域。不过,为了提供一个通用的、跨领域的理解,我们可以从以下几个维度来探讨它们的区别:
|
JavaScript Java
EL表达式
这篇文章介绍了EL表达式的基本概念、语法、保留关键字、运算符及其优先级,并详细解释了如何在EL中访问数据、进行算术运算、判断对象是否为空、逻辑关系运算和条件运算。
EL表达式
|
Java Spring
ApplicationContextAware 的理解和应用
ApplicationContextAware 的理解和应用
246 2
|
算法 Java
【Java】Java基础飞机大战小游戏完整代码
【Java】Java基础飞机大战小游戏完整代码
724 0