EL表达式&JSTL标签库1

简介: EL表达式&JSTL标签库1

1.EL表达式

【尚硅谷最新版JavaWeb全套教程,java web零基础入门完整版-哔哩哔哩】https://b23.tv/1kEshd

a) 什么是EL表达式,EL表达式的作用?

EL表达式的全称是:Exressin Language.是表达式语言。
EL表达式的什么作用:EL表达式主要是代替jsp页面中的表达式脚本在js页面中进行数据的输出。 因为E表达式在输出数据的时候,要比jsp的表达式脚本要简洁很多。

演示:

新建模块09_EL_JSTL,add web ,

建Tomcat实例,
在Web-INF/lib下导入servlet.jar包和jsp.jar包 为模块服务

在web下创建a.jsp

a.jsp

<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2021/8/17
  Time: 下午 12:09
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        request.setAttribute("key","值");//加入servlet.jar包
    %>
  表达式脚本输出key的是:<%=request.getAttribute("key")%><br/><%--  key1--->null--%>
  表达式脚本输出key的是:<%=request.getAttribute("key1")==null?"":request.getAttribute("key1")%><br/>
  EL表达式输出key的值是:${key}
  EL表达式输出key的值是:${key1}<%--  key1--->  --%>
</body>
</html>

EL表达式的格式是:${表达式}

E表达式在输出null值的时候,输出的是空串。

jsp表达式脚本输出nul值的时候,输出的是null字符串。

b)EL表达式搜索域数据的顺序 EL表达式主要是在jsp页面中输出数据。

主要是输出域对象中的数据。

当四个域中都有相同的key的数据的时候,EL表达式会按照四个域的从小到大的顺序去进行搜索,找到就输出。

b.jsp

<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2021/8/17
  Time: 下午 12:28
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        //往四个域中保存了相同的key的数据
        request.setAttribute("key","request");//导入jsp.jar包
        session.setAttribute("key","session");
        application.setAttribute("key","application");
        pageContext.setAttribute("key","pageContext");
    %>
    ${key}<%--pageContext依次注掉pageContext-->request-->session(注掉还要session之后关闭浏览器)-->application(注掉还要application之后重启或重新部署服务器),会依次输出request-->session-->application-->空串--%>
</body>
</html>

c)EL表达式输出Bean的普通属性,数组属性。List集 合属性,map集合属性

i.需求一输出Person类中普通属性,数组属性。list集合属性和map集合属性。

在scr/com.pojo新建Person类

Person

package com.pojo;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
public class Person {
    private String name;
    private String[] phones;
    private List<String> cities;
    private Map<String,Object> map;
//    private int age=18;
    public int getAge() {
        return 18;
    }
    public Person() {
    }
    public Person(String name, String[] phones, List<String> cities, Map<String, Object> map) {
        this.name = name;
        this.phones = phones;
        this.cities = cities;
        this.map = map;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String[] getPhones() {
        return phones;
    }
    public void setPhones(String[] phones) {
        this.phones = phones;
    }
    public List<String> getCities() {
        return cities;
    }
    public void setCities(List<String> cities) {
        this.cities = cities;
    }
    public Map<String, Object> getMap() {
        return map;
    }
    public void setMap(Map<String, Object> map) {
        this.map = map;
    }
    @Override
    public String toString() {
        return "Person{" +
                "name=" + name +
                ", phones=" + Arrays.toString(phones) +
                ", cities=" + cities +
                ", map=" + map +
                '}';
    }
}

c.jsp

<%@ page import="com.pojo.Person" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %><%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2021/8/17
  Time: 下午 12:48
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
      Person person=new Person();
      person.setName("我好帅");
      person.setPhones(new String[]{"18610541354","18688886666","18699998888"});
      List<String> cites= new ArrayList<>();
      cites.add("北京");
      cites.add("上海");
      cites.add("深圳");
      person.setCities(cites);
      Map<String,Object>map=new HashMap<>();
      map.put("key1","value1");
      map.put("key2","value2");
      map.put("key3","value3");
      person.setMap(map);
      pageContext.setAttribute("p",person);
    %>
    输出Person:${p}<br/>
    输出Person的name属性:${p.name}<br/>
    输出Person的phones数组元素值:${p.phones[2]}<br/>
    输出Person的cities集合中的元素值:${p.cities}<br/>
    输出Person的list集合中的个别元素值:${p.cities[2]}<br/>
    输出Person的map集合:${p.map}<br/>
    输出Person的map集合中某个key的值:${p.map.key3}<br/>
    输出Person的age属性:${p.age}<br/><%--如果没有age属性,有其getAge方法,还是可以输出18--%>
</body>
</html>

d)EL 表达式——运算

语法:$运算表达式}, EL表达式支持如下运算符:

1)关系运算



2)逻辑运算



3)算数运算


d.jsp

<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2021/8/17
  Time: 下午 01:12
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    ${12 == 12}或${12 eq 12}<br/>
    ${12 != 12}或${12 ne 12}<br/>
    ${12  < 12}或${12 lt 12}<br/>
    ${12  > 12}或${12 gt 12}<br/>
    ${12 <= 12}或${12 le 12}<br/>
    ${12 >= 12}或${12 ge 12}<br/>
    <hr/>
    ${12 == 12 && 12 > 11} 或 ${12 == 12 and 12 > 11}<br/>
    ${12 == 12 || 12 > 11} 或 ${12 == 12  or 12 > 11}<br/>
    ${ ! true } 或 ${not true}<br/>
    <hr/>
    ${12 + 12}<br/>
    ${12 - 12}<br/>
    ${12 * 12}<br/>
    ${18 / 12} 或 ${18 div 12}<br/>
    ${18 % 12} 或 ${18 mod 12}<br/>
</body>
</html>

i.empty运算

empty运算可以判断一个数据是否为空,如果为空,则输出true,不为空输出false。

以下几种情况为空:
1、值为null值的时候,为空

2、值为空串的时候,为空

3、值是object类型数组,长度为零的时候

4、list集合,元素个数为零

5、map集合,元素个数为零

ii.三元运算

表达式1?表达式2:表达式3

如果表达式1的值为真,返回表达式2的值,如果表达式1的值为假,返回表达式3的值。

e.jsp

<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %><%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2021/8/17
  Time: 下午 01:21
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
//        1、值为null值的时候,为空
        request.setAttribute("emptyNull",null);
//        2、值为空串的时候,为空
        request.setAttribute("emptyString","");
//        3、值是object类型数组,长度为零的时候
        request.setAttribute("emptyArray",new Object[]{});
//        4、list集合,元素个数为零
        List<String> list = new ArrayList<>();
        request.setAttribute("emptyList",list);
//        5、map集合,元素个数为零
        Map<String,Object> map=new HashMap<>();
        request.setAttribute("emptyMap",map);
    %>
    ${empty emptyNull}<br/>
    ${empty emptyString}<br/>
    ${empty emptyArray}<br/>
    ${empty emptyList}<br/>
    ${empty emptyMap}<br/>
    <hr/>
    ${12 == 12 ? "我好帅":"你骗人"}
</body>
</html>

iii. “.”点运算和[]中括号运算符

点运算,可以输出Bean对象中某个属性的值。

[]中括号运算,可以输出有序集合中某个元素的值。

并且[]中括号运算,还可以输出map集合中key里含有特殊字符的key的值。

f.jsp

<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %><%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2021/8/17
  Time: 下午 01:33
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        Map<String,Object> map=new HashMap<>();
        map.put("a.a.a","aaaValue");
        map.put("b+b+b","bbbValue");
        map.put("c-c-c","cccValue");
        request.setAttribute("map",map);
    %>
    ${map['a.a.a']}<br>
    ${map["b+b+b"]}<br>
    ${map.c-c-c}<br>
</body>
</html>
相关文章
|
6月前
EL表达式和Jstl常见的用法
EL表达式和Jstl常见的用法
|
存储 Java
JavaWeb03(域对象&EL表达式&JSTL标签)
JavaWeb03(域对象&EL表达式&JSTL标签)
|
XML SQL Java
JSP标签介绍(02)
JSP标签介绍(02)
50 0
|
6月前
|
Java 数据库
el表达式与jstl的用法
el表达式与jstl的用法
|
Java 数据安全/隐私保护
EL表达式&JSTL标签库2
EL表达式&JSTL标签库2
55 0
|
Java
配置JSTL标签库
配置JSTL标签库
104 0
|
XML SQL Java
JavaWeb--EL表达式&JSTL 标签库
JavaWeb--EL表达式&JSTL 标签库
71 0
|
SQL XML Java
JSTL标签库(JSP标准标签库)
JSTL(JSP Standard Tag Library,核心标签库)是 JSP 标签的集合,它封装了 JSP 应用的通用核心功能。 JSP 标签是一组与 HTML 标签相似,但又比 HTML 标签强大的功能标签。JSTL 用来简化 JSP 开发,可以使我们不用嵌入 Java 代码就能够开发出复杂的 JSP 页面。 JSTL 包含 5 类标签库:core 标签库、fmt 标签库、fn 标签库、XML 标签库和 SQL 标签库。这 5 类标签库基本覆盖了 Web 开发中的所涉及的技术展示。
springMvc36-JavaEE-JSP基础-EL表达式和JSTL标签库(Taglibs)
springMvc36-JavaEE-JSP基础-EL表达式和JSTL标签库(Taglibs)
101 0
|
Java
JavaWeb--EL表达式&JSTL 标签库(一)
JavaWeb--EL表达式&JSTL 标签库(一)
94 0
JavaWeb--EL表达式&JSTL 标签库(一)