JSP学习(2)—— EL表达式

EL表达式的作用:代替jsp页面的表达式脚本在jsp页面输出数据

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

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        request.setAttribute("key","value");
    %>
    使用jsp表达式脚本输出:<%=request.getAttribute("key")%> <br/>
    使用EL表达式输出:${key}
</body>
</html>

一. EL表达式 —— 获取四个保存作用域的值

当四个作用域都有相同的key时, EL表达式就按照四个域的大小顺序进行搜索,找到后就输出。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        pageContext.setAttribute("key","pageContext");
        request.setAttribute("key","request");
        session.setAttribute("key","session");
        application.setAttribute("key","application");
    %>
    ${key}
</body>
</html>

二. EL表达式 —— 输出Bean的普通属性、数组属性、List集合属性、map集合属性

package 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;

    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 +
                '}';
    }
}
<%@ page import="pojo.Person" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        Person person = new Person();
        person.setName("Tom");
        person.setPhones(new String[]{"13591496312","12348759831","18954732564"});

        List<String> cities = new ArrayList<>();
        cities.add("北京");
        cities.add("上海");
        cities.add("杭州");
        person.setCities(cities);

        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类里有get方法,所以才能输出,下面同理  -->
    输出Person的phones数组中的元素值:${p.phones[0]} <br/>
    输出Person的cities集合:${p.cities} <br/>
    输出Person的cities集合中的元素值:${p.cities[1]} <br/>
    输出Person的Map集合:${p.map} <br/>
    输出Person的Map集合中某个key的值:${p.map.key2} <br/>     
</body>
</html>

三. EL表达式 —— 运算

1. 关系运算

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    ${12 == 12} <br/>   <!-- true -->
    ${12 != 12} <br/>   <!-- false -->
    ${12 < 12} <br/>    <!-- false -->
    ${12 > 12} <br/>    <!-- false -->
    ${12 <= 12} <br/>   <!-- true -->
    ${12 >= 12} <br/>   <!-- true -->
</body>
</html>

2. 逻辑运算

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    ${12 == 12 && 13 < 12} <br/>   <!-- false -->
    ${12 == 12 || 13 < 12} <br/>   <!-- true -->
    ${! true} <br/>    <!-- false -->
</body>
</html>

3. 算数运算

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    ${12 + 13} <br/>   <!-- 25 -->
    ${12 - 2} <br/>   <!-- 10 -->
    ${12 * 12} <br/>    <!-- 144 -->
    ${12 / 5} <br/>    <!-- 2.4 -->
    ${12 % 5} <br/>    <!-- 2 -->
</body>
</html>

4. empty运算:判断一个数据是否为空,如果为空则输出true,否则输出false

 以下几种情况为空:①值为null;②值为空串;③值是Object类型数组,长度为零;④list集合,元素个数为0;⑤map集合,元素个数为0

<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        //1.值为null
        request.setAttribute("key1",null);
        //2.值为空串
        request.setAttribute("key2","");
        //3.值是Object类型数组,长度为零
        request.setAttribute("key3",new Object[]{});
        //list集合,元素个数为0
        request.setAttribute("key4",new ArrayList<String>());
        //map集合,元素个数为0
        request.setAttribute("key5",new HashMap<String,Object>());
    %>

    ${empty key1}   <br/>
    ${empty key2}   <br/>
    ${empty key3}   <br/>
    ${empty key4}   <br/>
    ${empty key5}   <br/>
</body>
</html>

5.三元运算

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    ${12 == 12 ? "yes":"no"}
</body>
</html>

四. EL表达式中的隐含对象

      EL表达式中的11个隐含对象是EL表达式中自己定义的,可以直接使用。

变量类型作用
pageContextpageContextImpl获取jsp中的九大内置对象
pageScopeMap<String,Object>获取pageContext域中的数据
requestScopeMap<String,Object>获取request域中的数据
sessionScopeMap<String,Object>获取session域中的数据
applicationScopeMap<String,Object>获取servletContext域中的数据
paramMap<String,String>获取请求参数的值
paramValuesMap<String,String[]>获取请求参数的值,多个值时使用
headerMap<String,String>获取请求头的信息
headerValuesMap<String,String[]>获取请求头的信息,多个值时使用
cookieMap<String,Cookie>获取当前请求的cookie信息
initParamMap<String,String>获取在web.xml中配置的<context-param>上下文参数
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    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/>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        pageContext.setAttribute("key","pageContext");
        request.setAttribute("key","request");
        session.setAttribute("key","session");
        application.setAttribute("key","application");
    %>

    ${pageScope.key} <br/>
    ${requestScope.key} <br/>
    ${sessionScope.key} <br/>
    ${applicationScope.key} <br/>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    ${param} <br/>
    ${paramValues} <br/>
    ${header} <br/>
    ${headerValues} <br/>
    ${cookie} <br/>
    ${initParam} <br/>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值