EL-表达式语言

谁践踏了优雅 2022-12-17 10:54 217阅读 0赞

概述

EL是expression Language的简称,意思是表达式语言,在EL出现之前,开发jsp程序时,经常需要写如大量的Java语言嵌入在jsp页面,它的出现使得页面看起来更加简洁

1、基本语法

  1. EL的语言非常简单,它是以"**$\{"**开头,以"**\}"**结束

具体的语法格式:

  1. $\{expression\},其中expression是指定要输出的内容

使用page指令可以禁止使用EL表达式,其中具体语法如下:

  1. <%@ page isELIgnored="布尔值" %>

isELIgnored属性:用于是否禁止页面使用EL,true表示页面禁止使用EL,false就可以使用EL,不写这个是默认可以使用EL的,禁止使用的代码如下:

  1. <%@ page isELIgnored="true" %>

在web.xml文件中配置元素

在web.xml文件中配置元素可以禁止服务器中的EL。在web.xml文件配置元素的具体代码如下:

  1. <jsp-config>
  2. <jsp-property-group>
  3. <url-pattern>*.jsp</url-pattern>
  4. <el-ignored>true</el-ignored> <!-- 将此处的值设置为false,表示使用EL-->
  5. </jsp-property-group>
  6. </jsp-config>

在EL中判断对象是否为空

在EL中判断对象是否为空,可以通过empty运算符实现,来确定一个对象或者变量是否为null或者空

empty运算符的语法格式:

${empty expression}

如果是真,就返回true

在EL中进行逻辑关系运算

1、关系运算符














































运算符 功能 示例 结果
==或eq 等于 ${10==10}或者${10 eq 10} true
!=或ne 不等于 ${10!=10}或者${10 ne 10} true
<或lt 小于 ${10 <0}或者${10 lt 0} false
>或gt 大于 ${10>1}或者${10 ge 1} true
<=或le 小于等于 ${10<=20}或者${10  le 20} true
>=或ge 大于等于 ${10>=20}或者${10  ge 20} false

2、逻辑运算符




























运算符 功能 示例 结果
&& 或 and ${true && false}或${true and false} false
|| 或 or ${true || false}或${true or false} true
!或 not ${!true}或${not true} false

在EL中进行条件运算

EL运算的唯一优点就是非常简单和方便,和Java的用法一样,其语法格式如下

${ 条件表达式 ?表达式1 :表达式2 }

条件为真时表达式1作为返回的值,条件为假时表达式2为返回的值

${ empty name ? “名字为空” :name }

获取值

EL表达式只能从域对象中获取值

语法:

  1. **1**、 $\{域名称.键名\}:从指定域中获取指定键的值























域名称    
pageScope pageContext
requestScope request
sessionScope  session
applicationScope application

例如:在request域中存储了name=张三,获取:${requestScope.name}

2、${键名}

  1. 表示依次从最小的域中查找是否有该键对应的值,直到找到为止。
  2. **3、**获取对象、List集合、Map集合的值
  3. 1. 对象:**$\{ 域名称.键名.属性名\}**
  4. 本质上会去调用对象的getter方法
  5. 2. List集合:**$\{域名称.键名\[索引\]\}**
  6. 3. Map集合:
  7. $\{域名称.键名.key名称\}
  8. \*$\{域名称.键名\["key名称"\]\}
  9. <%@page import="java.util.ArrayList"%>
  10. <%@page import="java.util.List"%>
  11. <%@page import="com.atguigu.javaweb.Customer"%>
  12. <%@ page language="java" contentType="text/html; charset=UTF-8"
  13. pageEncoding="UTF-8"%>
  14. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  15. <html>
  16. <head>
  17. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  18. <title>Insert title here</title>
  19. </head>
  20. <body>
  21. <!-- 7. EL 的运算符 -->
  22. ${param.score > 60 ? "及格" : "不及格" }
  23. <br>
  24. <%
  25. List<String> names = new ArrayList<String>();
  26. names.add("abc");
  27. request.setAttribute("names", names);
  28. %>
  29. <!-- empty 可以作用于一个集合, 若该集合不存在或集合中没有元素, 其结果都为 true -->
  30. names is empty: ${empty requestScope.names }
  31. <br>
  32. <!-- 6. 其他隐含对象: pageContext 等(cookie, header, initParam 只需了解.) -->
  33. pageContext: pageContext 即为 PageContext 类型, 但只能读取属性就可以一直的 . 下去。
  34. <br>
  35. contextPath: ${pageContext.request.contextPath }
  36. <br>
  37. sessionId: ${pageContext.session.id }
  38. <br>
  39. sessionAttributeNames: ${pageContext.session.attributeNames }
  40. <br>
  41. initParam: ${initParam.initName }
  42. <br>
  43. Accept-Language: ${header["Accept-Language"] }
  44. <br>
  45. JSESSIONID: ${cookie.JSESSIONID.name } -- ${cookie.JSESSIONID.value }
  46. <br>
  47. <!-- 5. 与输入有关的隐含对象: param, paramValues -->
  48. score: ${param.score }
  49. <%--
  50. <%= request.getParameter("score") %>
  51. --%>
  52. <br>
  53. names: ${paramValues.name[0].class.name }
  54. <%--
  55. <%=
  56. request.getParameterValues("name")[0].getClass().getName()
  57. %>
  58. --%>
  59. <br>
  60. <!-- 4. 隐含对象之与范围相关的: pageScope, requestScope, sessionScope, applicationScope -->
  61. time: ${applicationScope.time.time }
  62. <%--
  63. <%= application.getAttribute("time") %>
  64. --%>
  65. <br>
  66. <!-- 3. EL 可以进行自动的类型转换 -->
  67. score: ${param.score + 11}
  68. <br>
  69. score: <%= request.getParameter("score") + 11 %>
  70. <br>
  71. <!-- 2. EL 中的隐含对象 -->
  72. <%
  73. Customer cust2 = new Customer();
  74. cust2.setAge(28);
  75. request.setAttribute("customer", cust2);
  76. %>
  77. age: ${customer.age }
  78. <br>
  79. <!-- 1. EL . [] 运算符 -->
  80. age: ${sessionScope.customer["age"] }
  81. <%--
  82. Customer customer = (Customer)session.getAttribute("customer");
  83. out.print(customer.getAge());
  84. --%>
  85. <%
  86. Customer customer = new Customer();
  87. customer.setName("ATGUIGU"); session.setAttribute("com.atguigu.customer", customer);
  88. %>
  89. <br>
  90. <!--
  91. 如果域对象中的属性名带有特殊字符, 则使用 [] 运算符会很方便.
  92. -->
  93. name: ${sessionScope["com.atguigu.customer"].name }
  94. </body>
  95. </html>

发表评论

表情:
评论列表 (有 0 条评论,217人围观)

还没有评论,来说两句吧...

相关阅读

    相关 EL-表达式语言

    概述 EL是expression Language的简称,意思是表达式语言,在EL出现之前,开发jsp程序时,经常需要写如大量的Java语言嵌入在jsp页面,它的出现使得页面

    相关 EL表达式语言(二)

    接上篇:[EL表达式语言(一)][EL] 一、EL函数库 1. 什么EL函数库 EL函数库是由第三方对EL的扩展,我们现在学习的EL函数库是由JSTL添加的。