0


EL表达式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

本文介绍了EL表达式的使用方法以及特点

一、EL表达式是什么?

EL是JSP 2.0增加的技术规范,其全称是表达式语言(Expression Language)。EL语言的灵感来自于ECMAScript和XPath表达式语言。

二、EL表达式的作用是什么

EL表达式主要代替了jsp页面中的表达式脚本,在jsp页面中,表达式脚本经常与代码脚本共同使用,这样会让代码显得非常复杂,可读性大大降低。EL表达式就解决了这一问题。

三、EL表达式的使用

1.EL表达式的语法

EL表达式的格式是${表达式},并且在使用回传控制的时候,回传给客户端的会是空白,而jsp表达式回传给客户端的是null值。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <%
      request.setAttribute("key",null);
  %>
  jsp表达式脚本空值:<%=request.getAttribute("key")%>   <br/>
  EL表达式空值:${requestScope.key}

2.EL表达式输出对象

EL表达式可以输出我们封装的对象,并且输出其中的属性。注意!在EL表达式中输出的属性,必须要有get()方法,EL表达式输出对象属性的时候是去寻找属性对应的get方法,如果没有get方法就会出现空指针异常。(NullPointerException)

**

3.EL表达式搜索域的特性

**

在开发中我们主要使用EL表达式输出域对象中保存的数据,jsp的内置9大对象中:pageContext,request,session,application这四个域对象,他们的有效范围不同,具体如下。

在我们使用EL表达式的时候,如果碰到不同域对象,但其中的数据的键是一样的时候,EL表达式会默认按数据存储有效范围从小到大取数据,实例如下。

在实例中我们可以发现,EL表达式并不是以顺序读取域对象中的数据,而是以数据存储有效访问以从小到大的优先级读取


  <%
      /*向四个域对象中,分别存放键相同的键值对*/
      request.setAttribute("key","request");
      session.setAttribute("key","session");
      pageContext.setAttribute("key","pageContext");
      application.setAttribute("key","application");
  %>
  <%--用EL表达式输出--%>
  ${key}

4.EL表达式中的运算

1.关系运算

2.empty运算

empty运算格式${empty 待判断语句}

可以判断数据是不是空值,(null,空串,集合元素个数0,数组长度为0)

以下实例用empty运算均输出true

  1. "."运算与[]运算

.点运算,可以输出 Bean 对象中某个属性的值。上文提到的输出对象就是用的.运算

[]中括号运算,可以输出有序集合中某个元素的值。 并且[]中括号运算,还可以输出 map 集合中 key 里含有特殊字符的 key 的值。

如下代码中域对象的键中含有EL表达式的关键字,所以要使用[]运算

<body>
<%
Map<String,Object> map = new HashMap<String, Object>();
map.put("a.a.a", "Value1");
map.put("b+b+b", "Value2");
map.put("c-c-c", "Value2");
request.setAttribute("map", map);
%>
${ map['a.a.a'] } <br>
${ map["b+b+b"] } <br>
${ map['c-c-c'] } <br>
</body

EL表达式的11个隐含对象

在上文中我们提到EL表达式在搜索域对象数据的时候会默认按数据有效范围从小到大读取,而pageScope,requestSocpe,sessionScope,applicationScope这四个隐含对象就可以帮助我们按我们需要读取域对象数据

 <%
      /*向四个域对象中,分别存放键相同的键值对*/
      request.setAttribute("key","request");
      session.setAttribute("key","session");
      pageContext.setAttribute("key","pageContext");
      application.setAttribute("key","application");
  %>
  <%--用EL表达式输出--%>
  ${sessionScope.key}

在11个隐含对象中我们还要关注一下pageContext对象,这个对象可以获取jsp页面内置的9个对象。

<%
pageContext.setAttribute("req", request);
%>
<%=request.getScheme() %> <br>
1.协议: ${ req.scheme }<br>
2.服务器 ip:${ pageContext.request.serverName }<br>
3.服务器端口:${ pageContext.request.serverPort }<br>
4.获取工程路径:${ pageContext.request.contextPath }<br>
5.获取请求方法:${ pageContext.request.method }<br>
6.获取客户端 ip 地址:${ pageContext.request.remoteHost }<br>
7.获取会话的 id 编号:${ pageContext.session.id }<br>

总结

本文对EL表达式进行了较为详细的讲解,希望可以帮到大家。

标签: tomcat servlet

本文转载自: https://blog.csdn.net/m0_57334678/article/details/127099504
版权归原作者 电信Java仔 所有, 如有侵权,请联系我们删除。

“EL表达式”的评论:

还没有评论