Java EE开发技术(第六章:EL表达式)

目录

一、EL表达式的概念

语法格式

实例

二、EL表达式的语法及各种功能

EL运算符

实例

三、EL作用域对象

隐含对象

四大作用域对象

实例

四、EL访问对象、集合

实例


一、EL表达式的概念

  • EL(Expression Language),表达式语言,用于简化JSP脚本表达式开发
  • EL表达式主要用于访问作用域中的对象、执行算术和逻辑运算、调用JavaBean的方法等

语法格式

java 复制代码
 ${表达式}

实例

java 复制代码
<%--EL表达式简化JSP表达式--%>
        <%=10+20%><br>
        <%--EL表达式的写法--%>
        ${10+20}
        <%--EL表达式访问变量--变量必须放在作用域张(pageContext,request,session,application)--%>
        <%
            int a = 6;
            int b = 3;
            //将要计算的变量放到作用域中
            pageContext.setAttribute("a",a);
            pageContext.setAttribute("b",b);
            //可以将变量放到其他作用域中
        %>
        <p>
          通过JSP表达式做运算:<%=a+b%><br>
          通过EL表达式做运算:${a+b}
        </p>

二、EL表达式的语法及各种功能

EL运算符

  • 算术运算符:+ - * / %
  • 关系运算符:== != > < >= <=
  • 逻辑运算符:&& || !
  • **empty运算符:**判断是否为空
  • not empty运算符:判断不为空
  • 条件运算符:判断条件 ? value1 : value2

实例

java 复制代码
<%--EL表达式 算数运算 + - * / %--%>
<%--除法运算不报错,当除数为0时,得到的是Infinity无穷大--%>
<p>
    ${a+b}<br>
    ${a-b}<br>
    ${a*b}<br>
    ${a/b}<br>
</p>
<%--EL表达式 关系运算 == != < > <= >=--%>
<p>
    判断a是否等于b:${a==b}<br>
    判断a是否不等于b:${a!=b}<br>
    判断a是否小于b:${a<b}<br>
    判断a是否大于b:${a>b}<br>
</p>
    <%--EL表达式 逻辑运算 && || !!--%>
    判断a,b是否同时大于4:${a>4&&b>4}<br>
    判断a,b是否有一个大于4:${a>4||b>4}<br>
    判断a是否不大于4:${!(a>4)}<br>
java 复制代码
<%--判断变量对象是否为空 empty
    判断变量对象是否不为空 not empty
--%>
<%
    Date date =(Date) request.getAttribute("date");
%>
<p>
    判断变量a是否为空:${empty a}<br>
    判断变量a是否为空:${empty date}<br>
<%--脚本表达式获取data对象的值:<%=date.toString()%>--%>
<%--EL获取的是null值,会显示空白字符串,不会显示异常--%>
    EL表达式获取date对象的值:${date.toString()}<br>
</p>
<%--EL表达式 三目运算符 条件判断?表达式1:表达式2--%>
<p>
    获取a和b中的最大值:${a>b?a:b}
</p>

三、EL作用域对象

隐含对象

四大作用域对象

实例

java 复制代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>EL表达式-四大作用域对象</title>
    </head>
    <body>
    <%--EL表达式四大作用域(pageScope、requestScop、applicationScope)
    pageScope:在JSP页面中声明变量,在整个页面有效,除非被删除或重新赋值。--JSP中pageContext对象
    requestScope:在同一次请求中有效。--request对象
    sessionScope:在同一个会话中有效。--session对象
    applicatiionScope:在整个web应用中有效。--application对象
    --%>
    <%
      pageContext.setAttribute("name","张三");
      request.setAttribute("age",18);
      session.setAttribute("sex","男");
      application.setAttribute("address","北京市");
    %>
    <p>
      JSP脚本获取name的值:<%=pageContext.getAttribute("name")%><br>
      EL表达式获取name的值:${pageScope.name}<br>
      EL表达式省略作用域:${name}<br>
      EL表达式从request作用域获取age的值:${requestScope.age}<br>
      EL表达式从session作用域获取sex的值:${sessionScope.sex}<br>
      EL表达式从application作用域获取address的值:${applicationScope.address}<br>
    </p>
    <%--EL表达式支持省略作用域对象获取属性值,EL表达式会自动在作用域中查找属性值,按照从小到大的顺序进行查询,如果所有作用域中都获取不到则获取到null值
    注意:在实际开发中,不建议省略作用域对象;如果省略,虽然简化代码写法,但是会导致程序执行效率降低。
    --%>
    <%
//      pageContext.setAttribute("str","page");
      request.setAttribute("str","request");
      session.setAttribute("str","session");
      application.setAttribute("str","application");
    %>
    <p>
      EL表达式省略作用域获取str属性值:${str}<br>
    </p>
    </body>
</html>
java 复制代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>El表达式隐含对象param和paramValues-请求参数</title>
    </head>
    <body>
        通过脚本表达式获取请求参数中name的值:<%=request.getParameter("name")%><br>
        <%--param队形 等价于request.getParameter()方法--%>
        通过EL表达式param对象获取请求参数中name中的值:${param.name}<br>
        <%--如果一个请求参数名有多个参数值,则在EL表达式中可以通过paramValues隐含对象获取--%>
        通过EL表达式paramValues隐含对象获取请求参数中hobby的所有值:${paramValues.hobby[0]},${paramValues.hobby[1]}
    </body>
</html>

四、EL访问对象、集合

实例

相关推荐
论迹2 小时前
【JavaEE】-- Cookie &&Session
java·java-ee
掘金012 小时前
在 Vue 3 项目中使用 MQTT 获取数据
前端·javascript·vue.js
QuantumLeap丶2 小时前
《uni-app跨平台开发完全指南》- 03 - Vue.js基础入门
前端·vue.js·uni-app
一 乐2 小时前
个人理财系统|基于java+小程序+APP的个人理财系统设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·后端·小程序
wyzqhhhh2 小时前
同时打开两个浏览器页面,关闭 A 页面的时候,要求 B 页面同时关闭,怎么实现?
前端·javascript·react.js
晴殇i2 小时前
从 WebSocket 到 SSE:实时通信的轻量化演进
前端·javascript
网络点点滴2 小时前
reactive创建对象类型的响应式数据
前端·javascript·vue.js
携欢3 小时前
PortSwigger靶场之盲 SSRF(服务器端请求伪造)漏洞通关秘籍
前端·网络·安全·web安全
慧慧吖@3 小时前
前端关于埋点
前端