zoukankan      html  css  js  c++  java
  • JSP: EL表达式和JSTL标签库

    EL表达式

    概念:expression language表达式语言

    作用:替换和简化jsp页面中java代码的编写

    语法:${ 表达式 }

    注意:jsp自动直接EL表达式。如果需要忽略:

    • 忽略所有:加入指令<%@ page isELIgnored="true" %>
    • 忽略一个:加一个转义字符,${ ... }

    使用:运算、取值。

    运算

    运算符:(比Java多几个,可以几个字母表示)

    1. 算数运算符:+ - * / % div mod
    2. 比较运算符:> < >= <= == !=
    3. 逻辑运算符:&& || ! and or not
    4. 空运算符:empty (用于判断字符串、集合、数组是否为null,长度是否为0)

    empty例子

    ${empty str}
    

    取值

    EL表达式只能从域对象中获取值

    语法:

    1. ${域名.键名}:从指定域中获取指定键的值
    2. 简化写法${键名}:表示依次从最小的域中找键名
    3. list集合写法:${域名.集合名[索引]}
    4. map集合写法:${域名.集合名.key名}

    域名:一共四个

    1. pageScope 对应pageContent类型
    2. requestScope 对应request类型
    3. sessionScope 对应session类型
    4. applicationScope 对应application(Servletcontext)类型

    一般属性值

    <%
    	request.setAttribute("name", "Tom");
    %>
    
    ${requestScope.name}
    

    获取对象中的值

    本质上调用JavaBean中的getter方法而来,只要有getXxx()方法,就可以获得obj.xxx值。

    <%
      User user = new User("张三", 18, new Date());
      request.setAttribute("u", user);
    %>
    
    ${requestScope.u.name} <br>
    ${u.name} <br>
    ${u.birthday} <br>
    

    获取List集合中的值

    <%
      List list = new ArrayList();
      list.add("aaa");
      list.add("bbb");
      request.setAttribute("list", list);
    %>
    
    ${requestScope.list} <br>
    ${requestScope.list[0]}
    

    隐式对象

    EL表达式中有11个隐式对象

    1. pageContext
      • 获取其它8个隐式对象,如${pageContext.request.contextPath} (动态获取虚拟目录)

    JSTL标签库

    概念:JavaServer Pages Tag Library, JSP标准标签库

    • 是Apache组织提供的开源的免费的jsp标签

    作用:用于简化和替换jsp页面上的java代码

    使用步骤:

    1. 导入jstl相关的jar包
    2. 引入标签库<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    3. 使用标签

    常用的JSTL标签:

    1. if 相当于java中的if语句
    2. choose 相当于java中的switch语句
    3. foreach 相当于java中的for语句

    if标签

    test属性:接受布尔表达式

    <c:if test="true">
     <h1> 如果是真,显示当前内容 </h1>
    </c:if>
    

    choose标签

    <%
      request.setAttribute("number", 13);
    %>
    <c:choose>
      <c:when test="${number == 6}">周六</c:when>
      <c:when test="${number == 7}">周日</c:when>
      <c:otherwise>不是星期天</c:otherwise>}
    </c:choose>
    

    foreach标签

    第一种用法

    <c:forEach begin="1" end="10" var="i" step="1" varStatus="s">
      ${i} ${s.index} ${s.count} <br>
    </c:forEach>
    

    其中 varStatus可以不用,varStatus表示循环状态

    s.index表示容器中元素的索引,从0开始

    s.count表示循环次数

    第二种用法:遍历容器

    <%
      List list = new ArrayList();
      list.add("aaa");
      list.add("bbb");
      request.setAttribute("list", list);
    %>
    <c:forEach items="${list}" var="str">
      ${str} <br>
    </c:forEach>
    
  • 相关阅读:
    Codeforces Round #609 (Div. 2)---C. Long Beautiful Integer
    Codeforces Round #609 (Div. 2)--B.Modulo Equality
    J
    G
    Convoy
    Farming Mars
    Java indexOf() 方法
    request.getContextPath()得到的是什么路径?
    OLAP、OLTP的介绍和比较
    Book recommendation
  • 原文地址:https://www.cnblogs.com/mingriyingying/p/13500953.html
Copyright © 2011-2022 走看看