EL表达式

概述

  • EL(Expression Language)是一门表达式语言,对应JSP中的<%=…=%>。
    EL表达式的格式:${…}
  • 在使用EL表达式时,要求page指令的isELIgnored属性为false(默认为false)。这样JSP在编译成.java时,才不会忽略EL表达式。
  • 如果你希望某个EL表达式被JSP编译器忽略,那么可以在EL表达式之前添加“\”,例如:${1+2}。

EL操作对象的方式

  • 操作变量和常量:${name}、 ${8};
  • 操作List和数组:${list[0]}、 ${arr[0]};
  • 操作bean的属性:${person.name}、 ${person[‘name’]},对应person.getName()方法;
  • 操作Map的值:${map.key}、 ${map[‘key’]},对应map.get(key)

EL运算符

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>EL运算符</title>
</head>
<body>
    <label>常量输出:</label>${10 }<br>
    <label>四则运算:</label>${10+2},${10-2},${10*2},${10/2},${10 div 2} <br>
    <label>等于:</label>${10 == 10},${10 eq 10}<br>
    <label>不等于:</label>${10 != 2},${10 ne 2}<br>
    <label>取余数:</label>${10 % 3},${10 mod 3}<br>
    <label>小于:</label>${5 < 10},${5 lt 10}<br>
    <label>大于:</label>${5 > 10},${5 gt 10}<br>
    <label>小于等于:</label>${5 <= 10}, ${5 le 10}<br>
    <label>大于等于:</label>${5 >= 3},${5 ge 3}<br>
    <label>逻辑与:</label>${true && true},${true and true}<br>
    <label>逻辑或:</label>${true || false},${true or false}<br>
    <label>逻辑非:</label>${!true }, ${not true}<br>
    <label>判空:</label>${empty ""}<br>
    <label>非空判断:</label>${not empty ""}<br>
</body>
</html>

运行结果:

常量输出:10
四则运算:12,8,20,5.0,5.0 
等于:true,true
不等于:true,true
取余数:1,1
小于:true,true
大于:false,false
小于等于:true, true
大于等于:true,true
逻辑与:true,true
逻辑或:true,true
逻辑非:false, false
判空:true
非空判断:false

EL内置对象

在EL表达式中,无需创建就可以使用的对象称之为EL隐藏(隐藏、内置)对象。在EL中一共有11个隐藏对象,它们都与Map相似。其中10个是Map,1个是PageContext。

参数隐藏对象

这些隐藏对象都是Map类型。

param

单值接收,param是Map<String,String>类型。param对象可以用来获取参数,与request.getParamter()方法相同。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>EL内置对象</title>
</head>
<body>
    <form action="testEL.jsp">
        账户:<input type="text" name="username"><br>
        密码:<input type="password" name="password"><br>
        <input type="submit" value="登录">
    </form>

<%
    String username = request.getParameter("username");
    String password = request.getParameter("password");
%>

<h1><%= username %></h1>
<h1><%= password %></h1>

<h1>${param.username}</h1>
<h1>${param.password}</h1>
</body>
</html>

上述jsp代码将一个form表单提交到本身。
request.getParameter(“username”)和${param.username}不同,前者为null串,后者为空字符串。
提交表单后,如图:
在这里插入图片描述
两者都可以获取值。


paramValues

多值接收。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>EL内置对象</title>
</head>
<body>
    <form action="testEL.jsp">
        爱好:<input type="text" name="hobby"><br>
        爱好:<input type="text" name="hobby"><br>
        <input type="submit" value="提交">
    </form>

<h1>${paramValues.hobby[0]}</h1>
<h1>${paramValues.hobby[1]}</h1>
</body>
</html>

在这里插入图片描述

headerValues

是Map<String,String>类型。当一个请求头名称,对应多个值时,使用该对象。

${header.Host}可以获得localhost:8080

initParam

是Map<String,String>类型。它对应web.xml文件中的<context-param>参数。
ServletContext级别的参数获取:
web.xml文件:

<context-param>
	<param-name>name</param-name>
	<param-value>value</param-value>
</context-param>

jsp文件:

${initParam.name}

可以获取到value。

cookie

是Map<String,Cookie>类型,其中key是Cookie的名字,而值是Cookie对象本身。

<%
    response.addCookie(new Cookie("personName","zhangsan"));//先设置cookie
%>

<h1>${cookie.personName.name}</h1>
<h1>${cookie.personName.value}</h1>

域隐藏对象

使用EL表达式最为常用的就是获取域对象中保存的数据。以下域的范围越来越大。如果对象不加域的范围,将从小的域开始找。

pageScope

是Map<String,Object>类型,装载了pageContext对象中的所有数据。${pageScope.key}pageContext.getAttribute("key")功能相同。两者的区别在于,前者在数据不存在时返回空字符串,后者返回null。

requestScope

是Map<String,Object>类型,装载了request对象中的所有数据。

sessionScope

是Map<String,Object>类型,装载了session对象中的所有数据。

applicationScope

是Map<String,Object>类型,装载了application对象中的所有数据。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值