EL表达式和JSTL的介绍以及基本使用

EL表达式介绍

  • EL(Expression Language):表达式语言
  • 在 JSP 2.0 规范中加入的内容,也是 Servlet 规范的一部分
  • 作用:在 JSP 页面中获取数据。让我们的 JSP 脱离 java 代码块和 JSP 表达式
  • 语法:${ 表达式内容 }
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>EL表达式快速入门</title>
</head>
<body>
    <%--1.向域对象中添加数据--%>
    <% request.setAttribute("username","zhangsan"); %>
    
    <%--2.获取数据--%>
    Java代码块:<% out.println(request.getAttribute("username")); %> <br>

    JSP表达式:<%= request.getAttribute("username")%> <br>

    EL表达式:${username}
</body>
</html>

EL表达式的注意事项

  • EL 表达式没有空指针异常
  • EL 表达式没有索引越界异常
  • EL 表达式没有字符串的拼接

EL表达式的运算符

  • 关系运算符

    运算符作用示例结果
    == 或 eq等于${5 == 5} 或 ${5 eq 5}true
    != 或 ne不等于${5 != 5} 或 ${5 ne 5}false
    < 或 lt小于${3 < 5} 或 ${3 lt 5}true
    > 或 gt大于${3 > 5} 或 ${3 gt 5}false
    <= 或 le小于等于${3 <= 5} 或 ${3 le 5}true
    >= 或 ge大于等于${3 >= 5} 或 ${3 ge 5}false
  • 逻辑运算符

    运算符作用示例结果
    && 或 and并且${A && B} 或 ${A and B}true/false
    || 或 or或者${A || B} 或 ${A and B}true/false
    ! 或 not取反${ !A } 或 ${ not A }true/false
  • 其他运算符

    运算符作用
    empty1.判断对象是否为null
    2.判断字符串是否为空字符串
    3.判断容器元素是否为0
    条件 ? 表达式1 : 表达式2三元运算符
    • 容器元素是否为0,就是容器的长度是否为0(其实就是检查容器是否为空)

EL表达式使用细节

  • EL 表达式能够获取四大域对象的数据,根据名称从小到大在域对象中查找

  • 还可以获取 JSP 其他八个隐式对象,并调用对象中的方法

    <%--获取四大域对象中的数据--%>
    <%
    //pageContext.setAttribute("username","zhangsan");
    request.setAttribute("username","zhangsan");
    //session.setAttribute("username","zhangsan");
    //application.setAttribute("username","zhangsan");
    %>
    ${username} <br>
    
    <%--获取JSP中其他八个隐式对象  获取虚拟目录名称--%>
    <%= request.getContextPath()%>
    ${pageContext.request.contextPath}
    

EL表达式的11个隐式对象

​ EL表达式也为我们提供隐式对象,可以让我们不声明直接来使用,十一个对象见下表,需要注意的是,它和JSP的隐式对象不是一回事:

EL中的隐式对象类型对应JSP隐式对象备注
PageContextJavax.serlvet.jsp.PageContextPageContext完全一样
ApplicationScopeJava.util.Map没有操作应用域对象数据
SessionScopeJava.util.Map没有操作会话域对象数据
RequestScopeJava.util.Map没有操作请求域对象数据
PageScopeJava.util.Map没有操作页面域对象数据
HeaderJava.util.Map没有根据key获取请求消息头,值是一个
HeaderValuesJava.util.Map没有根据key获取请求消息头,值是多个(数组)
ParamJava.util.Map没有根据key获取请求参数,值是一个
ParamValuesJava.util.Map没有根据key获取请求参数,值是多个(数组)
InitParamJava.util.Map没有根据key获取全局参数,value是参数值
CookieJava.util.Map没有根据key获取cookie的值

JSTL的介绍

  • JSTL(Java Server Pages Standarded Tag Library):JSP 标准标签库

  • 主要提供给开发人员一个标准通用的标签库

  • 开发人员可以利用这些标签取代 JSP 页面上的 Java 代码,从而提高程序的可读性,降低程序的维护难度

  • 它由以下5个部分组成:

    组成作用说明
    core核心标签库通用的逻辑处理
    fmt国际化不同地域显示不同语言
    functionsEL函数EL表达式可以使用的方法
    sql操作数据库用于操作数据库
    xml操作XML用于操作XML

核心标签库

1)核心库介绍

​ 实际开发中,用到的jstl标签库主要以核心标签库为准,偶尔会用到国际化标签库的标签。下表中把我们经常可能用到的标签列在此处。

标签名称功能分类分类作用
<c:if>流程控制核心标签库用于判断
<c:choose>,<c:when>,<c:otherwise>流程控制核心标签库用于多个条件判断
<c:foreache>迭代操作核心标签库用于循环遍历
  • 案例

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <!--prefix给jstl core核心库起个前缀名,使用的标签就以c开头-->
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <html>
    <head>
        <title>流程控制</title>
    </head>
    <body>
        <%--向域对象中添加成绩数据--%>
        ${pageContext.setAttribute("score","T")}
    
        <%--对成绩进行判断--%>
        <c:if test="${score eq 'A'}">
            优秀
        </c:if>
    
        <%--对成绩进行多条件判断--%>
        <c:choose>
            <c:when test="${score eq 'A'}">优秀</c:when>
            <c:when test="${score eq 'B'}">良好</c:when>
            <c:when test="${score eq 'C'}">及格</c:when>
            <c:when test="${score eq 'D'}">较差</c:when>
            <c:otherwise>成绩非法</c:otherwise>
        </c:choose>
        
        <%--向域对象中添加集合--%>
        <%
            ArrayList<String> list = new ArrayList<>();
            list.add("aa");
            list.add("bb");
            list.add("cc");
            list.add("dd");
            pageContext.setAttribute("list",list);
        %>
    
        <%--遍历集合--%>
        <c:forEach items="${list}" var="str">
            ${str} <br>
        </c:forEach>
    </body>
    </html>
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值