JavaWeb-EL表达式

EL表达式全称是:Expression Language,是表达式语言

EL表达式的作用:

主要是代替jsp页面中的表达式脚本在jsp页面中进行数据的输出。
因为EL表达式在输出数据的时候,要比jsp的表达式脚本要简洁很多。

<body>
<%
    request.setAttribute("key","value");
%>

表达式脚本输出key值: <%= request.getAttribute("key")%><br>
EL输出key值: ${key}

//当key值不存在时,普通jsp表达式会输出null,而EL会输出空字符串

</body>

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

<body>

当四个域中都保存了相同的key的数据时,EL会按照从小到大的顺序去进行搜索,找到就输出。
<%
    pageContext.setAttribute("key","pageContext");
    request.setAttribute("key","request");
    session.setAttribute("key","session");
    application.setAttribute("key","application");
%>
${key}
</body>

 

举例:Person类

package com.ELTest;

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;

    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 +
                '}';
    }
}

 

jsp页面获取Person类实例信息:

<body>
<%
    Person p = new Person();
    p.setName("张三");
    p.setPhones(new String[]{"1897373747","1868888666","1886273737"});
    List<String> cities = new ArrayList<>();
    cities.add("北京");
    cities.add("上海");
    cities.add("深圳");
    p.setCities(cities);

    Map<String,Object> map = new HashMap<>();
    map.put("key1","value1");
    map.put("key2","value2");
    map.put("key3","value3");

    p.setMap(map);

    pageContext.setAttribute("p",p);//这里设置了page域的attribute,就相当于在整个域里面都可以直接通过EL直接调用相关变量属性

%>

EL这里直接找的是类里面的get方法,而不是对应的属性。

输出Person: ${p}<br>
输出Person的name属性: ${p.name} <br>
输出Person的Phone属性: ${p.phones[0]}<br>
输出Person的cities集合中的元素值:${p.cities}<br>
输出Person的cities集合中的某个元素值:${p.cities[2]}<br>
输出Person的map集合: ${p.map}<br>
输出Person的map集合某个元素: ${p.map.key1}<br>
</body>

 

等于: ${12 == 12}
小于: ${12 < 12}

Empty:
<%
    //值为null值的时候,为空
    request.setAttribute("emptyNull",null);
    //值为空字符串的时候,为空
    request.setAttribute("emptyString","");
    //值是Object类型数组,长度为0的时候

    request.setAttribute("arr",new Object[]{});
    //list集合,元素个数为0的时候
    List<Object> list = new ArrayList<>();
    request.setAttribute("list",list);
    //map集合,元素个数为0的时候
    Map<String,Object> map1 = new HashMap<>();
    request.setAttribute("map1",map1);

%>

${emptyNull}
${emptyString}
${arr}
${list}
${map1}

 

三元运算表达式

${ 12==12? "true":"false"}

 

.运算和[]运算

.运算可以输出bean对象的属性

[]可以输出有序集合某个元素的值,也可以输出map特殊key内容的对应的value,例:map["a.a.a"] "a.a.a"是一个key。

 

EL表达式的11个隐含对象

是EL自己定义的,可以直接使用。

 

   initParam                           Map<String,String>                       它可以获取在web.xml配置的 <context-param> 上下文参数

 

EL获取四个特定域中的属性

当四个域中都保存了相同的key的数据时,EL会按照从小到大的顺序去进行搜索,找到就输出。
<%
    pageContext.setAttribute("key","pageContext");
    request.setAttribute("key","request");
    session.setAttribute("key","session");
    application.setAttribute("key","application");
%>

EL获取四个特定域中的属性

${pageContext.key}
${requestScope.key}
${sessionScope.key}
${applicationScope.key}
pageContext对象的使用
<%=request.getScheme()%>

1.协议 : ${pageContext.request.scheme}<br>
2 服务器ip : ${pageContext.request.serverName}<br>
3 服务器端口 : ${pageContext.request.serverPort}<br>
4 获取工程路径 : ${pageContext.request.contextPath}<br>
5 获取请求方法 : ${pageContext.request.method}<br>
6 获取客户端ip : ${pageContext.request.remoteHost}<br>
7 获取会话的id编号: ${pageContext.session.id}<br>

如下为页面输出:

当四个域中都保存了相同的key的数据时,EL会按照从小到大的顺序去进行搜索,找到就输出。 EL获取四个特定域中的属性
pageContext
request
session
application
pageContext对象的使用
http
1.协议 : http
2 服务器ip : localhost
3 服务器端口 : 8080
4 获取工程路径 : /EL_JSTL
5 获取请求方法 : GET
6 获取客户端ip : 0:0:0:0:0:0:0:1
7 获取会话的id编号: B4DB53A908B5F65184237058FB1EEA82

 

判断id值是否为空(param是EL表达式11个隐含参数之一):

  是否是添加操作:${empty param.id}

判断后给出对应值,为真则输出add,false则输出update

  是否是添加操作:${ empty param.id ? "add":"update"}

 

posted @ 2021-10-25 22:24  donkey8  阅读(28)  评论(0)    收藏  举报