回顾EL表达式

EL表达式

什么是EL表达式,EL表达式的作用

  • EL表达式的全称是 Expression Language ,表达式语言
  • 作用 --是替代表达式脚本在jsp页面上输入数据
  • 格式 – ${表达式}

EL表达式搜索域数据的顺序

pageContext ,request ,Session ,spplication

EL表达式输出bean的普通属性,数组属性,List属性,map属性

${key.property} 输出对象属性

${key.property[index]} 输出对象的数组属性的元素(list集合)

${key.property.key} 输出对象的map集合的指定key的值

empty运算

empty运算是用来判断某个数据的值是否为空,如果为空,就返回true

为空的情况:

  • 值为null的情况
  • 空串的情况
  • Object 数组,且长度为零
  • List集合或者map集合的元素个数为零

点运算 和 中括号运算符

’.’ 点运算 可以输出JavaBean的某个属性值。以及map集合中指定的key值

[] 中括号运算符 可以输出有序集合中元素的值。以及map集合中key里含有特殊字符的key值。

EL表达式的11个隐含对象

变量名 数据类型 作用
pageContext pageContextImpl 获取jsp中的九大内置对象
pageScope Map<String,Object> 获取pageContext域中的数据
requestScope Map<String,Object> 获取request域中的数据
sessionScope Map<String,Object> 获取Session域中的数据
applicationScope Map<String,Object> 获取ServletContext域中的数据
param Map<String,String> 获取请求的参数值
paramValues Map<String,String[]> 获取请求的参数值,多个值
header Map<String,String> 获取请求头的信息
headerValues Map<String,String[]> 获取请求头的信息,多个值
cookie Map<String,Cookie> 获取cookie的的信息
initParam Map<String,String> 获取在web.xml中配置的context-param参数

JSTL 标签库

Core 核心标签库:

< c:set > 可以保存数据到域中

< c:if > 做if判断

< c:choose > < c:when > < c:otherwise > 可以用来做多路判断

< c:forEach > 做遍历操作

在这里插入图片描述

<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.LinkedHashMap" %>
    <%--
  Created by IntelliJ IDEA.
  User: c1751
  Date: 2020/10/11
  Time: 14:09
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
<%-- 要导入两个 jar包
     taglibs-standard-impl-1.2.1.jar
     taglibs-standard-spec-1.2.1.jar
     uri="http://java.sun.com/jsp/jstl/core" --%>
<html>
  <head>
    <title>JSTL标签库</title>
    
  </head>
  <body>
  <P> Hello World</P>
<%--
scope 设置你要往哪个域中保存数据,分别是page(默认),request,session,application
var  是你要保存的key
value 是你要保存的值
--%>
  <c:set scope="request" var="key" value="这是导入的值" />
  保存之后
  :${requestScope.key}

  <c:if test="${1 ==1 }">
  <h3>你好厉害啊</h3>
  </c:if>
  <c:set scope="request" var="key" value="15" />
<%--
choose - when - otherwise 标签可以做多路判断
  test 属性是判断条件

  choose - when - otherwise 标签在做的时候需要注意以下几点:
    1.在这组标签内不能使用HTML注册,只能使用jsp注释
    2.when标签的父标签必须是choose标签
--%>
  <c:choose>
    <c:when test="${requestScope.key >10}">
      <h3>你好漂亮啊</h3>
    </c:when>
    <c:otherwise>
      <h4>你好。。。。特别啊</h4>
    </c:otherwise>

  </c:choose>
<%--
context 属性设置工程路径(默认是当前工程路径)
value 是你要访问的资源路径

--%>
  <br />
  <c:url context="/abc" value="/index.jsp">
    <c:param name="username" value="白夜" />
    <c:param name="password" value="4561123"/>

  </c:url>
<br />
<%--
begin 设置要遍历的开始索引
end   设置要遍历的结束索引
 var  设置你的循环变量名
--%>
  <br />
  <c:forEach begin="0" end="15"  var="i">
    ${i}
  </c:forEach>
<%--  遍历Object数组--%>
  <%
  request.setAttribute("arr",new String[]{"aaa","ass","ccc","zzz"});

  %>
<%--
    items 你要遍历的数据源
    var   当前要遍历的数据
--%>
  <br />
  <hr />
  <c:forEach items="${requestScope.arr}" var="i">
    ${i}
  </c:forEach>
<%--  遍历List集合--%>
  <br/>
  <%
    List<Integer> integers = new ArrayList<Integer>();
    for (int i = 0; i < 10; i++) {
      integers.add(i+1);
    }
    request.setAttribute("list",integers);
  %>
  <c:forEach items="${requestScope.list}" var="i">
    ${i}
  </c:forEach>
  <%--  遍历map集合--%>
  <br/>
  <%
    Map<Integer,String> map = new LinkedHashMap<Integer,String>();
    for (int i = 0; i < 10; i++) {
      map.put(i+1, String.valueOf('a'+i));
    }
    request.setAttribute("map",map);
  %>
  <c:forEach items="${requestScope.map}" var="i" varStatus="">
    ${i}
  </c:forEach>
  <%--
      begin 设置要遍历的开始索引
      end   设置要遍历的结束索引
      items 你要遍历的数据源
      var   当前要遍历的数据
      varStatus 当前遍历数据的状态
  --%>
  <br/>

  <c:forEach items="${requestScope.map}" var="i" varStatus="statu">
    ${i }
    <br>
    ${"获取当前遍历到的数据"}
    ${statu.current}
    <br>
    ${"获取当前遍历到的索引"}
    ${statu.index}
    <br>
    ${"获取当前遍历到几个元素"}
    ${statu.count}
    <br>
    ${statu.first}
    ${statu.end}
    ${statu.last}<br>
    ${"获取 begin,end,step的值"}
    ${statu.step}
    ${statu.begin}
    ${statu.end}
    <br>
    <hr/>
  </c:forEach>

  </body>
</html>

结果:(部分。。。太长了)
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45729594/article/details/109012718