EL表达式和JSTL标签的区别


EL即Expression Language(表达式语言)
EL的语法:${ EL exprission }
${ bean.name } 或 ${ bean[‘name’] }
说白了,EL是用来显示数据的,功能跟<%=表达式%> 一样,EL是不需要引入什么东西的


JSTL(JavaServerPages Standard Tag Library)JSP标准标签库
JSTL标准标签库包括核心标签库和SQL标签库,核心标签库常用的是 ifforEach
说白了JSTL常实现 网页逻辑判断迭代显示的,需要引入

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

只要JSTL和EL结合,就基本可以让页面再无<% %> jsp代码了。




一、EL表达式

1、EL相关概念

JSTL一般要配合EL表达式一起使用,来实现在jsp中不出现java代码段。所以我们先来学习EL表达式
EL(Expression Language)表达式语言:用于计算和输出存储在标志位置(page、request、session、application)的java对象的值,然后对它们执行简单操作;EL是JSP2.0规范的一部分,只要容器支持Servlet2.4/JSP2.0,就可以在JSP2.0网页中直接使用EL。通常与 JSTL 标记一起作用,能用简单而又方便的符号来表示复杂的行为。


2、EL基本格式

EL表达式的格式:用美元符号($)定界,内容包括在花括号({})中;

例如: 
点号记法:${BeanName.beanProperty}
数组记法:${BeanName[“beanProperty”]}

此外,您可以将多个表达式与静态文本组合在一起以通过字符串并置来构造动态属性值;

例如:Hello {loginInfoBean.suser} ${loginInfoBean.spwd}



3、EL语法组成-标识符

  • (1)EL隐藏对象 (常用)
    cd
    cd
    PS:使用EL的时候,默认会以一定顺序(pageContext、request、session、application)搜索四个作用域,将最先找到的变量值显示出来。

  • (2)EL存取器

存取器用来检索对象的特性或集合的元素。存取器: 通过 “[]” 或 “.” 符号获取相关数据

:
//获取输出bean中的suser属性值;
${userBean.suser}  或  ${userBean[“suser”]}
//获取map中key为id对应的值;
${mcType[“id”]} 

  • (3)EL运算符
    在这里插入图片描述
    在这里插入图片描述

  • 4、开启和关闭EL表达式

  • 1)开启方法

在servlet2.4之后默认方法为false,即可以不写或写成

<%@ page isELIgnored="false" %>
  • 2)关闭方法
<%@ page isELIgnored="true" %>

还有一种批量禁用EL的方法,可以在WEB-INF/web.xml中使用jsp-property-group标签批量禁用el,web.xml中进行如下配置。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">
    <jsp-config>
        <jsp-property-group>
            <url-pattern>*.jsp</url-pattern>
            <el-ignored>true</el-ignored>
        </jsp-property-group>
    </jsp-config>
</web-app>



二、JSTL标签库

  • (1)相关概念

    JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL1.0 由四个定制标记库(core、format、xml 和 sql)和一对通用标记库验证器组成。
如果要使用JSTL,则必须引用jstl.jar和 standard.jar两个包。

  • (2)JSTL标签库分类

cd

    core 标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。它还提供了用来生成和操作 URL 的标记。
    format 标记库定义了用来格式化数据(尤其是数字和日期)的操作。它还支持使用本地化资源束进行JSP页面的国际化。
    xml 库包含一些标记,这些标记用来操作通过XML表示的数据,而 sql 库定义了用来查询关系数据库的操作。
     两个 JSTL 标记库验证器允许开发人员在其 JSP 应用程序中强制使用编码标准。


  • ) forEach迭代标签
<c:forEach items="${list}" var="depart">
    <tr class="message-unread">
        <td>${depart.id}</td>
        <td>${depart.name}</td>
        <td>${depart.address}</td>
        <td>
            <a class="btn btn-primary active btn-sm" href="/department/toUpdate/${depart.id}">
                <span class="glyphicon glyphicon-edit"></span> 编辑
            </a>
            <a class="btn btn-danger active btn-sm" href="/department/remove/${depart.id}">
                <span class="glyphicon glyphicon-trash"></span> 删除
            </a>
        </td>
    </tr>
</c:forEach>

  • ) if标签,进行网页逻辑判断
<div class="panel-footer text-right">
    <c:if test="${sessionScope.employee.post==Contant.POST_FM || sessionScope.employee.post==Contant.POST_GM}">
        <button type="submit" class="button" name="dealType" value="${Contant.DEAL_PASS}"> ${Contant.DEAL_PASS}</button>
        <button type="submit" class="button" name="dealType" value="${Contant.DEAL_BACK}"> ${Contant.DEAL_BACK}</button>
        <button type="submit" class="button" name="dealType" value="${Contant.DEAL_REJECT}"> ${Contant.DEAL_REJECT}</button>
    </c:if>
    <c:if test="${sessionScope.employee.post==Contant.POST_CASHIER}">
        <button type="submit" class="button" name="dealType" value="${Contant.DEAL_PAID}"> ${Contant.DEAL_PAID}</button>
    </c:if>
    <button type="button" class="button" onclick="javascript:window.history.go(-1);"> 返回 </button>
</div>

  • (3)JSTL的优点
    在这里插入图片描述

  • (4)为什么要用JSTL

    我们JSP用于开发信息展现页非常方便;也可以嵌入java代码(scriptlet、表达式和声明)代码用来实现相关逻辑控制。看下面程序。但这样做会带来如下问题:

1) jsp维护难度增加
2) 出错提示不明确,不容易调试
3) 分工不明确;(即jsp开发者是美工,也是程序员)
4) 最终增加程序的开发成本

     解决上面的问题可以使用定制标记库,JSTL使JSP开发者可以减少对脚本元素的需求,甚至可以不需要它们,从而避免了相关的维护成本。使分工更明确。JSTL一般配合EL一起使用,因此先看看EL.


  • (5)使用方法

    • 需要引入标签库
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
    





https://blog.csdn.net/qq_42175986/article/details/82622928


https://blog.csdn.net/kuangzhixuan/article/details/74376509

发布了90 篇原创文章 · 获赞 111 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_42950079/article/details/102649892
今日推荐