1.EL表达式

概述

  1. 概念:Expression Language,表达式语言
  2. 作用:替换和简化jsp页面中Java代码的编写
  3. 语法:$
  4. 使用:运算和获取值

EL表达式的忽略

jsp默认支持el表达式的,如果需要忽略el表达式,有两种方式

1. 设置page指令中isELIgnored属性的值为true,这个方式会忽略当前页面中的所有EL表达式
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="true" %>
2. \${表达式},忽略当前EL表达式

EL中的运算符

  1. 算术运算符:+,-,*,/(除法运算符还可以用div),%(取模运算符还可以用mod表示)
  2. 比较运算符
  3. 逻辑运算符:&&(and),||(or),!(not)
  4. 空运算符:empty,用于判断字符串,集合,数组对象是否为null,或者长度是否为0
${empty list}:判断list是否为null或者长度为0
${not empty list}判断list是否不为null并且长度大于0

<%
        String str = "";
        str = null;

%>
<%--长度为0的字符串:true--%>
<%--字符串的值为null:true--%>
${empty str}    

EL表达式获取值

  1. EL表达式只能从域对象中获取值
  2. 语法1:${域名称.键名}:从指定域中获取指定键的值。
    域名称对应四个域对象,有四个域名称:
    1. pageScope--pageContext
    2. requestScope--request
    3. sessionScope--session
    4. applicationScope--application
<body>
    <%
      // 在域中存储数据
      request.setAttribute("user","NrvCer");
    %>
    ${requestScope.user}  <%--将在页面上输出user的值 --%>
</body>
  1. 语法2:${键名},省略域名表示从最小的域中查找是否有该键对应的值,直到找到为止。域对象的范围:pageContext < request < session < application
<body>
    <%
      // 在域中存储数据
      application.setAttribute("user", "Tony");
      request.setAttribute("user","NrvCer");
    %>
    ${user}  <%--将在页面上输出user的值NrvCer --%>
</body>
  1. 获取对象,List集合,Map集合的值
1. 获取对象:${域名称.键名.属性名},本质上是会去调用对象的getter方法

<body>
    <%
      Student s = new Student("张三",23);
      request.setAttribute("user",s); // request域中存储对象
    %>
    ${requestScope.user}  // com.test.Student@5eea53a4
    ${requestScope.user.name} // 张三
    ${requestScope.user.age}  // 23
</body>

2. 获取List集合的值:${域名称.键名[索引]}
<body>
    <%
      List<Integer> list = new ArrayList<>();
      list.add(100);
      list.add(200);
      request.setAttribute("number",list); // request域中存储对象
    %>
    ${requestScope.number}    //[100, 200] 
    ${requestScope.number[0]} //100 
    ${requestScope.number[1]} //200
</body>

3. 获取Map集合的值:${域名称.键名.key名称}

EL中的隐式对象

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

1.pageContext
  1. 获取jsp其他8个隐式对象
<%--在jsp页面中动态获取虚拟目录--%>
${pageContext.request.contextPath}

2.JSTL标签

概述

  1. 概念:Java sever tag library,jsp标准标签库
  2. 作用:用于简化和替换jsp页面上的Java代码
  3. 使用步骤
1. 导入jstl相关jar包
2. 引入标签库:taglib指令
3. 使用标签

常用的jstl标签

  1. if:相当于Java代码的if语句
  2. choose:相当于Java代码的switch语句
  3. foreach:相当于Java代码的for语句