signed

QiShunwang

“诚信为本、客户至上”

JSP之EL表达式

2020/12/29 21:32:15   来源:
EL表达式

EL表达式核心点是将对象存储到某个域中,在需要的页面中直接使用表达式来使用,从来减少获取及强制类型转换的操作。
JSP EL既可以用来创建算术表达式也可以用来创建逻辑表达式。
在JSP EL表达式内可以使用整型数,浮点数,字符串,常量true、false,还有null。

1.EL最基本的读取方法
<body>

<%--传统的存储和读取--%>
<%
    //存储
    session.setAttribute("name", "迪迦");
    //获取
    Object object = session.getAttribute("name");
%>
<%=object%>
<%--el表达式传统的存储和读取--%>
name:${name};
<hr>
<%
    //存储对象
    Staff staff = new Staff();
    staff.setSname("宇宙英雄");
    staff.setSex(1);
    session.setAttribute("staff", staff);
%>
<%-- 对象读取--%>
sname:${staff.sname};
sex:${staff.sex};
    
</body>

效果展示
在这里插入图片描述

注意:el表达式存储对象后,可以直接通过对象.属性获取值(实际是通过类中的setter和getter方法获取的)

2.EL中的运算符
运算符关键词描述
==eq判断是否相等
>gt判断是否大于
<lt判断是否小于
empty判断是否为空
!not
&&and逻辑与
||or逻辑或
<hr>
<%-- 逻辑符举例--%>   
${empty staff}
<hr>
<%
Staff staff2=null;
%>
${empty staff2}

效果展示

在这里插入图片描述

两大注意点:

  1. 要确保数据被存储到了域中储存到域

  2. 多个作用域有相同的key时, 按照作用域的大小,从小到大查找

3.EL隐含对象

EL支持多种隐含对象

其中针对于刚才提到的作用域问题为例

<body>
     <%
       request.setAttribute("name","迪迦");
       session.setAttribute("name","戴拿");
       application.setAttribute("name","艾斯");
       pageContext.setAttribute("name","杰克");
     %>
     ${name}
</body>

结果
在这里插入图片描述

如果我们将 pageContext.setAttribute(“name”,“杰克”);注释掉

在这里插入图片描述

结果显而易见:多个作用域有相同的key时, 按照作用域的大小,从小到大查找

这个时候,我们可以使用JSP EL隐含对象

隐含对象描述
pageScopepage 作用域
requestScoperequest 作用域
sessionScopesession 作用域
applicationScopeapplication 作用域

PageScope,requestScope,sessionScope,applicationScope变量用来访问存储在各个作用域层次的变量。

举例来说,如果您需要显式访问在applicationScope层的name变量,可以这样来访问:applicationScope.name。得到的就是“艾斯”了

在这里插入图片描述

还有一个常用的隐含对象pageContext

我们可以使用${pageContext.request.contextPath}来获取跳转地址
通过${pageContext.request.queryString}来访问request对象传入的查询字符串