JavaWeb—EI表达式

1.EI工具包介绍

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

2.EL表达式

1.命令格式

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

2.命令作用

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

3.EI表达式作用域对象别名

1.JSP文件可以使用的作用域对象
  • 1.ServletContext application:全局作用域对象
  • 2.HttpSession session:会话作用域对象
  • 3.HttpServletRequest request:请求作用域对象
  • 4.PageContext pageContext 当前页作用域对象
    这是【JSP文件独有的作用域对象】,Servlet中不存在,在当前页作用域对象存放的共享数据仅能在当前JSP文件中使用,不能共享给其他Servlet或者其他JSP文件。【真实开发过程中】,主要用于【JSTL标签】与【JSP文件】之间共享数据。
  • JSTL---->pageContext----->JSP
2.EI表达式【提供】作用域对象别名
JSPEI表达式
application${applicationScope.共享数据名}
session${sessionScope.共享数据名}
request${requestScope.共享数据名}
pageContext${pageScope.共享数据名}

3.EI表达式将引用对象属性【写入】到响应体

1.命令格式

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

2.命令作用

从【作用域对象】读取【指定共享数据】关联的应用对象属性值,并自动将属性的结果写入到响应体。

3.属性名

一定要去引用类型属性名,完全一致(大小写)

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

4.EI表达式简化版

1.命令格式

  •   ${共享数据名}
    

2.命令作用

EI表达式允许开发人员开发时省略作用域对象别名

3.工作原理

EI表达式简化版由于没有指定作用域对象,所以执行时采用【猜算法

  • 1.首先到【pageContext】定位共享数据,如果存在直接读取输出并结束执行;
  • 2.如果1未成功,到【request】定位共享数据,如果存在直接读取输出并结束执行;
  • 3.如果2未成功,到【session】定位共享数据,如果存在直接读取输出并结束执行;
  • 4.如果3未成功,到【application】定位共享数据,如果存在直接读取输出并结束执行;
  • 5.如果4未成功,返回null。
  • pageContext------>request--------->session--------->application

4.存在隐患

  • 容易降低程序执行速度
  • 容易导致数据定位错误

5.应用场景

设计目的:简化从pageContext读取共享数据并输出的难度。

6.即使存在隐患,实际开发时仍然用简化版

拒绝使用标准版!!!(手动狗头)

5.EI表达式----支持运算表达式

1.前提

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

2.运算表达式

  • 1.数学运算
  • 2.关系运算

==(eq) 、 >(gt) 、 >=(ge) 、 <(lt) 、 <=(le) 、 !=

  • 3.逻辑运算

&& 、 || 、!

6.EI表达式提供内置对象

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%>

4.命令格式

  •   ${paramValues.请求参数名[下标]}
    

5.命令作用

如果浏览器发送的请求参数是【一个请求参数关联多个值】
此时可以通过paramValues读取请求参数指定位置的值,并写入到响应体。

6.代替命令

  •   http://localhost:8080/myWeb/index_2.jsp?pageNo=1&pageNo=2&pageNo=3
    

此时pageNo请求参数在请求包内以数组形式存在:

  •   pageNo:[1,2,3]
    
  •   <%
      String array[] = request.getParameterValues("pageNo");
      %>
    
  • 第1个值:<%=array[0]%>

  • 第2个值:<%=array[1]%>

7.EI表达式常见异常

  • 在对象中没有找到指定属性
  •   javax.ei.PropertyNotFoundException
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值