el表达式

EL运算符

操作符描述
.访问一个Bean属性或者一个映射条目
[]访问一个数组或者链表的元素
( )组织一个子表达式以改变优先级
+加,支持数值类型
-减或负
*****
/ or div
% or mod取模
== or eq测试是否相等
!= or ne测试是否不等
< or lt测试是否小于
> or gt测试是否大于
<= or le测试是否小于等于
>= or ge测试是否大于等于
&& or and测试逻辑与
|| or or测试逻辑或
! or not测试取反
empty测试是否空值 (null “” 集合中没有元素也认为是空)

EL隐式对象

${a}:在作用域中,从小往大匹配key为a的值。

${“a”}:字符串常量。

隐含对象描述
pageScopepage 作用域
requestScoperequest 作用域
sessionScopesession 作用域
applicationScopeapplication 作用域
cookieCookie值 (会话部分讲解)
pageContextpageContext对象
param读取单个参数
paramValues读取重复参数

el表达式无法调用方法

读作用域的数据

<%
    pageContext.setAttribute("a", "sadss");
%>
jsp表达式读法:<%=pageContext.getAttribute("a") %><br>
el表达式读法1:${pageScope.a }<br>
el表达式读法2:${pageScope["a"] }<br>
el简化写法:${a }//从小往大查找key为a的作用域的值,pageScore<requestScore<sessionScore<applicationScore

结果:

jsp表达式读法:sadss
el表达式读法1:sadss
el表达式读法2:sadss
el简化写法:sadss

读取请求参数

  jsp表达式读取参数:<%=request.getParameter("name") %><br>
    重复参数:<%=request.getParameterValues("hobbies")[0] %>
    <%=request.getParameterValues("hobbies")[1] %>
    <br>
    el读取参数1:${param.name }<br>
    重复参数:${paramValues.hobbies[0]}
    ${paramValues.hobbies[1]}
    <br>

    el读取参数2:${param["name"] }<br>
    重复参数:${paramValues["hobbies"][0]}
    ${paramValues["hobbies"][1]}
   el读取cookie:
    ${cookie.JSESSIONID.name}=${cookie.JSESSIONID.value}
<br>

    获取上下文路径:
    ${pageContext.request.contextPath}

结果:

jsp表达式读取参数:king
重复参数:ss lkskl
el读取参数1:king
重复参数:ss lkskl
el读取参数2:king
重复参数:ss lkskl

el读取集合

    <%
        List<Student> list=new ArrayList<>();
        list.add(new Student(1,"king"));
        list.add(new Student(2,"ting"));

        pageContext.setAttribute("list",list);

        Map<String,Student> map=new HashMap<>();
        map.put("s11",new Student(1,"king"));
        map.put("s22",new Student(2,"ma"));
        pageContext.setAttribute("map",map);
    %>
    el读取数组:${list[0].sname }<br>
        ${list[1].sid}

    <br>
    el读取map:
    ${map['s11'].sid}<br>
   <%--map的键不能以数字开头,否则不能用下面这个方法--%>
    ${map.s11.sid}

结果:

el读取数组:king
2
el读取map: 1
1

el与jsp表达式区别

在这里插入图片描述

jstl

<%!
    public String getName() {
        return "aa";
    }
%>
<body>
c:out:<br>
<c:out value="aaaa"></c:out>
<br>
<c:out value="<%=getName() %>"/>
<br>
2 set:<br>
    <%--字符串类型值可以直接存储--%>
<c:set var="a" value="aaaa" scope="page"></c:set>
获取a:${a}
<%--等价于下面这个--%>
<%--<%--%>
<%--pageContext.setAttribute("a","aaaa");--%>
<%--%>--%>
    <%--对象类型的值--%>

3 catch标签:<br>
<c:catch var="e">
    <%
        int i=10/0;
    %>
</c:catch>
${e.message }<br>

2 remove标签:<br>
<c:remove var="e"></c:remove>
${e.message }<br>

3 if标签:<br>
<c:if test="${empty e}">没有出错信息</c:if>

4 choose+when+otherwise标签:
<c:choose>
    <c:when test="${param.age<12}">儿童</c:when>
    <c:when test="${param.age<18}">少童</c:when>
    <c:otherwise>成年</c:otherwise>
</c:choose>

迭代标签

    <%
        List<Student> list=new ArrayList<>();
        list.add(new Student(1,"king"));
        list.add(new Student(2,"ting"));
        pageContext.setAttribute("list",list);

    %>
    <%--forEach增强for:--%>
<c:forEach items="${list }" var="stu">
    ${stu.sid},${stu.sname}<br>
</c:forEach>
    <%--2 标准for--%>
<c:forEach var="i" begin="0" end="2" step="1">
    ${list[i].sid},${list[i].sname},<br>
</c:forEach>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java后端指南

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值