EL表达式

EL表达式


1.基本概念

ELExpression  Language)表达式提供了在JSP中简化表达式的方法,可以方便地访问各种数据并输出

2.主要功能

  • 依次访问pageContext、request、session和application作用域对象存储的数据。 
  • 获取请求参数值。
  • 访问Bean对象的属性。
  • 访问集合中的数据。
  • 输出简单的运算结果。

3.访问内置对象的数据

(1)访问方式

  • <%=request.getAttribute(“ varName”)%>
  • 用EL实现: ${ varName }

(2)执行流程

4.访问请求参数的数据

  • 在EL之前使用下列方式访问请求参数的数据request.getParameter(name); request.getParameterValues(name);
  • 在EL中使用下列方式访问请求参数的数据param:接收的参数只有一个值。paramValues:接受的参数有多个值。
     

<!-- 获取指定参数的数值 -->

${param.name}

<!-- 获取指定参数中指定下标的数值 -->

${paramValues.hobby[0]}

5.访问Bean对象的属性

(1)访问方式

  • 方式一: $ { 对象名 . 属性名 },例如:${user.name}
  • 方式二: $ { 对象名 [“属性名”] },例如:${user["name"]}

(2)主要区别

  • 当要存取的属性名中包含一些特殊字符,如: . 或 ,等并非字母或数字的符号,就一定要使用 [ ]而不是.的方式
  • 使用[]的方式可以动态取值,具体方式如下:

<%

request.setAttribute(“prop”,“age”);

%>

<!-- 相当于表达式中写一个变量 -->

${ user[prop] }

<%@ page import="com.lagou.demo01.Person" %><%--
  Created by IntelliJ IDEA.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>实现Bean对象中属性的获取和打印</title>
</head>
<body>
<%-- 使用JSP语法规则中的原始方式实现对象的创建和设置以及输出 --%>
<%
    Person person = new Person();
    person.setName("zhangfei");
    person.setAge(30);
    pageContext.setAttribute("person", person);

    pageContext.setAttribute("var1", "name");
    pageContext.setAttribute("var2", "age");
%>

<%--<%= "获取到的姓名为:" + person.getName() %><br/>
<%= "获取到的年龄为:" + person.getAge()  %><br/>--%>
<%-- 使用EL表达式实现属性的获取和打印 --%>
<%--获取到的姓名是:${person.name}<br/>
获取到的年龄是:${person.age}<br/>--%>
<%-- 另外一种写法 --%>
<%--${person["name"]}<br/>
${person["age"]}<br/>--%>
<%-- 测试一下动态取值的效果 --%>
动态取值的结果为:${person[var1]}
</body>
</html>

6. 访问集合中的数据

<!-- studentArrayList类型的对象 -->

${student[0].name}

<%@ page import="java.util.LinkedList" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %><%--
  Created by IntelliJ IDEA.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>实现集合中数据内容的获取和打印</title>
</head>
<body>
<%
    // 准备一个List集合并添加数据内容
    List<String> list = new LinkedList<>();
    list.add("two");
    list.add("one");
    list.add("three");
    // 将整个集合放入指定的内置对象中
    pageContext.setAttribute("list", list);

    // 准备一个Map集合并添加数据
    Map<String, Integer> map = new HashMap<>();
    map.put("one", 1);
    map.put("two", 2);
    map.put("th.ree", 3);
    // 将整个集合放入指定的内置对象中
    pageContext.setAttribute("map", map);
%>

<%-- 使用EL表达式实现集合中数据内容的获取 --%>
集合中下标为0的元素是:${list[0]}<br/>    <%-- two --%>
集合中下标为1的元素是:${list[1]}<br/>    <%-- one --%>
集合中下标为2的元素是:${list[2]}<br/>    <%-- three --%>
<hr/>
<%-- 使用EL表达式实现Map集合中数据内容的获取 不支持下标 --%>
整个Map集合中的元素有:${map}<br/>
获取带有特殊字符key对应的数值为:${map["th.ree"]}<br/>   <%-- 3 --%>
</body>
</html>

7.常用的内置对象

类别

标识符

描述

JSP

pageContext

PageContext 处理当前页面

作用域

pageScope

同页面作用域属性名称和值有关的Map

requestScope

同请求作用域属性的名称和值有关的Map

sessionScope

同会话作用域属性的名称和值有关的Map

applicationScope

同应用程序作用域属性的名称和值有关的Map

请求参数

param

根据名称存储请求参数的值的Map

paramValues

把请求参数的所有值作为一个String数组来存储的Map

请求头

header

根据名称存储请求头主要值的Map

headerValues

把请求头的所有值作为一个String数组来存储的Map

Cookie

cookie

根据名称存储请求附带的cookieMap

初始化参数

initParam

根据名称存储Web应用程序上下文初始化参数的Map

8. 常用的运算符

(1)常用的算术运算符

算术运算符

说 明

范 例

运算结果

+

${1+2}

3

${2-1}

1

*

${2*3}

6

/ div

${16/5}${16div5}

3.2

% mod

取余

${16%5}${16mod5}

1

(2)常用的关系运算符

关系运算符

说 明

范 例

运算结果

==eq

等于

${1==2}${1 eq 2}

false

!= ne

不等于

${2!=1}${1 ne 2}

true

< lt

小于

${2<3}${2 lt 3 }

true

> gt

大于

${16>5}${16 gt 5}

true

<= le

小于等于

${16<=5}${16 le 5}

false

>= ge

大于等于

${16>=5}${16 ge 5}

true

(3)常用的逻辑运算符

逻辑运算符

说 明

范 例

运算结果

&& and

与运算

${true&&true}${true and true}

true

|| or

或运算

${true||false}${true or false}

true

! not

非运算

${!true}${not true }

false

(4)条件运算符

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

(5)验证运算符

${empty 表达式}

返回布尔值判断表达式是否为""值,null值、无元素的集合或数组、长度为零的String被认为是空值。

节选自拉钩教育JAVA系列教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值