【EL表达式 + JSTL标签库】—— 取代和简化JSP页面的java代码

 

EL:Expression Language

▶ 概念:Expression Language ,即 表达式语言

▶ 作用:取代和简化jsp页面java代码的编写

▶ 语法:${表达式}

▶ 注意:jsp页面默认支持el表达式。如果要忽略el表达式,则page指令设置:isELIgnored="true"

 
 

用法:作运算 + 获取值

作运算:

  1. + - * /(div) %(mod) > < >= <= == != &&(and) ||(or) !(not)
  2. 强大的empty:用于判断字符串、数组、集合是否为null或length为0。demo:${empty list}${not empty str}

获取值: el表达式只能从域对象中获取值:${域名城.键名}

  域名称可选:pageScoperequestScopesessionScopeapplicationScope(顾名思义)

<%
    // request域
    request.setAttribute("myLoli", "Alice");
    // session域
    session.setAttribute("myLoli", "Cocoa");
    // application域
    application.setAttribute("myLoli", "Chino");
    // pageContext域
    pageContext.setAttribute("myLoli", "Hana");
%>


<h3>EL获取域中的数据</h3> ---------------------------------------------------------------------------------------

${requestScope.myLoli}
${sessionScope.myLoli}
${applicationScope.myLoli}
${pageScope.myLoli}

<h3>不写域名称,依次从最小的域中查找是否有该键对应的值,直到找到为止<h3> ----------------------------------------------------------
${myLoli}

<h3>对象、集合也是一样的思路<h3> ----------------------------------------------------------------------------------
${域名称.loli.name}						// 这里的name不是真正的成员变量,而是getXxx方法的xxx
${域名称.list[2]}						// List集合竟然可以用下标了 !
${域名称.map.key} / ${map["key"]}		// Map集合竟然有两种写法获取元素 !

 
▶ 补充用法:获取隐式对象

el中有11个隐式对象(直接就能用),其中有个我们熟悉的pageContext对象,这个对象又可以用来获取jsp的其他八大对象

一个极其常见的用法:动态获取虚拟目录 ${pageContext.request.contextPath}

 

 

 

JSTL:JSP Standarded Tag Library

▶ 概念:Java Server Page Standarded Tag Library ,即JSP标准标签库

▶ 作用:取代和简化jsp页面java代码的编写

▶ 使用:导入jar包 → taglib指令引入标签库(起前缀名) → 才能使用
 
 

常用的三个标签

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

--------------------------------------------- if --------------------------------------------------------------
<c:if test="true">
    <h1>我会被显示~</h1>
</c:if>

<c:if test="${not empty list}">
    <h1>我通常与el表达式一起使用</h1>
</c:if>

--------------------------------------------- choose ----------------------------------------------------------
<c:choose>												(choose相当于switch)
    <c:when test="${number == 1}">星期一</c:when>		(when相当于case)
    <c:when test="${number == 2}">星期二</c:when>
    <c:when test="${number == 3}">星期三</c:when>
    <c:otherwise>其他</c:otherwise>						(otherwise相当于default)
</c:choose>

--------------------------------------------- forEach ---------------------------------------------------------
<c:forEach begin="1" end="9" var="i" step="2">			(相当于可设置步长的for语句)
    ${i}
</c:forEach>

<c:forEach items="${list}" var="li">					(相当于增强for)
    ${li};
</c:forEach>

<c:forEach begin="1" end="9" var="i" varStatus="s">		(varStatus称为循环状态对象)
    ${s.index}											(下标,完全等同i。如果是增强for,则从0开始)
    ${s.count}											(记录循环次数)
</c:forEach>

 

 
 

 

 

 

 

 

 

 

 

 

End ♬

by a Lolicon ✪

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值