JavaWeb 之 EL与JSTL

EL表达式

  1. 概念:Expression Language 表达式语言
  2. 作用:替换和简化jsp页面中的java代码的编写
  3. 语法$
  4. 注意:
    • jsp默认支持el表达式。如果要忽略el表达式
      1. 设置jsp中page指令中:isELIgnored=“true”忽略当前jsp页面中所有的el表达式
      2. \${表达式}:忽略当前这个el表达式
  5. 使用:
    1. 运算

      • 运算符
        1. 算数运算符:+ - * /(div) %(mod)
        2. 比较运算符:> < >= <= == !=
        3. 逻辑运算符:&&(and) ||(or) !(not)
        4. 空运算符:empty
          • 功能:用于判断字符串,集合,数组对象是否为null并且长度是否为0
          • ${empty list}:用于判断字符串,集合,数组对象是否为null并且判断长度是否为0
          • ${not empty str}:表示判断字符串、集合、数组对象是否不为null,并且长度>0
    2. 获取值

      1. el表达式只能从域对象中获取值
      2. 语法
        1. ${域名称.键名}:从指定域中获取指定键的值
          • 域名称:
            1. pageScope --> pageContext
            2. requestScope -->request
            3. sessionScope -->session
            4. applicationScope -->application(ServletContext)
          • 举例:在request域中存储了name=张三
          • 获取:$
        2. ${键名}:标识依次从最小的域中查找是否有该键对应的值,直到找到为止
          • $
      3. 获取对象、List集合、Map集合的值
        • 对象:$
          • 本质上会去调用对象的getter方法
        • List集合:$
        • Map集合:
          1. $
          2. $
    3. 隐式对象

      • el表达式中有11个隐式对象

      • pageContext

        1. 获取jsp其他八个内置对象
          • ${pageContext.request.contextPath}:动态获取虚拟目录

JSTL

  1. 概念 :JavaServer Pages Tag Library JSP标准库

    • 是由Apache组织提供的开源免费的jsp标签
  2. 作用:用于简化和替换jsp页面上的java代码

  3. 使用步骤

    1. 导入jstl相关的jar包
    2. 引入标签库:taglib指令:<% taglib %>
    3. 使用标签
  4. 常用的JSTL标签

    1. if :相当于java代码的if语句

      <% taglib prefix="c" uri="http://java.sun.com/jsp/jstl1/core"%>
      
      <c:if test="xxx">
      <h1>hello</h1>
      </c:if>
      /*
      1. 属性
      	* test必须属性,接收boolean表达式,正确则执行,不正确不执行
      	* 一般情况下,test属性值会结合el表达式一起用
      */
      
      
    2. choose:相当于java代码的switch语句

      <% taglib prefix="c" uri="http://java.sun.com/jsp/jstl1/core"%>
      <%--
       完成数字编号对应星期几案例
          1.域中存储一数字
          2.使用choose标签取出数字        相当于switch声明
          3.使用when标签做数字判断         相当于case
          4.otherwise标签做其他情况的声明    相当于default
       --%>
      
      <%
      request.setAttribute("number",3);
      %>
      
      <c:choose>
          <C:when test="${number == 1}">星期一</c:when>
      	 <C:when test="${number == 2}">星期二</c:when>
           <C:when test="${number ==3}">星期三</c:when>
           <C:when test="${number == 4}">星期四</c:when>
      	 <C:when test="${number == 5}">星期五</c:when>
           <C:when test="${number == 6}">星期六</c:when>
            <C:when test="${number == 7}">星期日</c:when>
          
          <c:otherwise>数字输入有误</c:otherwise>
      </c:choose>
      
    3. foreach:相当于java代码的for语句

      <% taglib prefix="c" uri="http://java.sun.com/jsp/jstl1/core"%>
      <%--
      foreach:相当于java代码的for语句
          1.完成重复的操作
          2.遍历容器
          
      1.完成重复操作    
       属性:
          begin:开始值
          end:结束值
          var:临时变量
          step:步长
          varstatus:循环状态对象
              index:元素中元素的索引,从0开始
              count:循环次数,从1开始
              
      2.遍历容器
        属性:
           items:容器对象
           var:容器元素中的临时变量
            varstatus:循环状态对象
              index:元素中元素的索引,从0开始
              count:循环次数,从1开始
      --%>
      //完成重复操作
      <c:foreach begin = "1" end = "10" var = "i" step = "1">
          ${s.index}  ${s.count}
      </c:foreach>
      //遍历容器
      <c:foreach items = "${list}" var="str" varStatus = "s">
          ${s.index}  ${s.count}  ${s.str}
      </c:foreach>
      
      
posted @ 2020-05-06 23:00  cjd  阅读(241)  评论(0编辑  收藏  举报