java学习笔记 - web基础八(EL表达式)

EL表达式作用

  • EL 表达式的全称是:Expression Language。是表达式语言

  • EL 表达式的什么作用:EL 表达式主要是代替 jsp 页面中的表达式脚本在 jsp 页面中进行数据的输出

  • EL 表达式的格式是:${表达式}

  • EL 表达式在输出 null 值的时候,输出的是空串。jsp 表达式脚本输出 null 值的时候,输出的是 null 字符串

运算

语法

1
${ 运算表达式 }

关系运算

image-20221208211949803

逻辑运算

逻辑运算

算术运算

image-20221208213252206

empty运算

  • empty 运算可以判断一个数据是否为空,如果为空,则输出 true,不为空输出 false
  • 取反为 not empty
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<body>
<%
// 1、值为 null 值的时候,为空
request.setAttribute("emptyNull", null);
// 2、值为空串的时候,为空
request.setAttribute("emptyStr", "");
// 3、值是 Object 类型数组,长度为零的时候
request.setAttribute("emptyArr", new Object[]{});
// 4、list 集合,元素个数为零
List<String> list = new ArrayList<>();
// list.add("abc");
request.setAttribute("emptyList", list);
// 5、map 集合,元素个数为零
Map<String,Object> map = new HashMap<String, Object>();
// map.put("key1", "value1");
request.setAttribute("emptyMap", map);
%>
${ empty emptyNull } <br/>
${ empty emptyStr } <br/>
${ empty emptyArr } <br/>
${ empty emptyList } <br/>
${ empty emptyMap } <br/>
</body>

三元运算

  • 表达式 1?表达式 2:表达式 3
  • 如果表达式 1 的值为真,返回表达式 2 的值,如果表达式 1 的值为假,返回表达式 3 的值
1
2
<!-- 三元运算 -->
${ 12 == 12 ? "你说的是真的" : "你说的是假的"}

“.”点运算和[]中括号运算

  • .点运算,可以输出 Bean 对象中某个属性的值
  • []中括号运算,可以输出有序集合中某个元素的值
  • 并且[]中括号运算,还可以输出 map 集合中 key 里含有特殊字符的 key 的值
1
2
3
4
5
6
7
8
9
10
11
12
<body>
<%
Map<String,Object> map = new HashMap<String, Object>();
map.put("a.a.a", "aaaValue");
map.put("b+b+b", "bbbValue");
map.put("c-c-c", "cccValue");
request.setAttribute("map", map);
%>
${ map['a.a.a'] } <br>
${ map["b+b+b"] } <br>
${ map['c-c-c'] } <br>
</body>

EL 表达式的 11 个隐含对象

变量 类型 作用
pageContext PageContextImpl 获取 jsp 中的九大内置对象
pageScope Map 获取 pageContext 域中的数据
requestScope Map 获取 Request 域中的数据
sessionScope Map 获取 Session 域中的数据
applicationScope Map 获取 ServletContext 域中的数据
param Map 获取请求参数的值
paramValues Map 获取请求参数的值,获取多个值的时候使用
header Map 获取请求头的信息
headerValues Map 获取请求头的信息,它可以获取多个值的情况
cookie Map 获取当前请求的 Cookie 信息
initParam Map 获取在 web.xml 中配置的< context-param >上下文参数

四个域

先从最小的作用访问进行选取,作用范围:pageContext (一个jsp页面)< Request(一次请求) < Session (一个会话)< ServletContext (整个web页面)

  • pageScope :pageContext 域
  • requestScope :Request 域
  • sessionScope :Session 域
  • applicationScope :ServletContext 域

pageContext 对象的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<body>
<%--
request.getScheme() 获取请求协议
request.getServerName() 获取请求的服务器ip或域名
request.getServerPort() 获取请求的服务器的端口号
request.getContextPath() 获取当前工程路径
request.getMethod() 获取请求的方式(GET 或 POST)
request.getRemoteHost() 获取客户端ip地址

--%>
<%=request.getScheme()%>
1. 协议:${pageContext.request.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/>
</body>