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
    评论
### 回答1: Idea是一款非常流行的Java集成开发环境(IDE),它支持开发和调试Java程序。在Idea中使用JSPJava服务器页面)开发Web应用程序时,是支持使用EL表达式的。 EL(Expression Language)表达式是一种在JSP中使用的简单表达式语言,用于动态获取和设置Web应用程序中的数据。EL表达式可以在JSP页面中访问和操作JavaBean、请求参数、Session和Application范围的属性等。 在Idea中使用EL表达式非常简单。首先,确保在JSP页面的顶部引入了EL库: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 然后,您可以在JSP页面的任何位置使用EL表达式进行数据处理。例如,要显示一个JavaBean中的属性值,可以使用以下语法: ${bean.property} 其中,bean是JavaBean对象的名称,property是该对象的属性。通过这种方式,EL表达式可以方便地访问和显示对象的属性值。 此外,EL表达式还支持许多内置函数和运算符,可以对数据进行处理和计算。例如,你可以使用${fn:length(beanList)}来获取一个列表的长度。 总而言之,Idea支持使用EL表达式,可以简化JSP页面中数据的访问和操作。通过EL表达式,开发者可以更加方便地处理和展示数据,提高开发效率。 ### 回答2: JSPJavaServer Pages)是一种用于创建动态网页的Java技术,而EL(Expression Language)是JSP的一种表达式语言,用于简化在JSP页面中使用和操作数据的过程。在一般情况下,JSP是可以使用EL表达式的。 如果在使用JSP时无法使用EL表达式,可能是由于以下原因导致的: 1. JSP配置问题:在JSP页面中使用EL表达式之前,需要确保正确地配置了JSP标准标签库(JSTL)和EL库。这通常需要在JSP页面的顶部引入相关的标签库声明。 2. jsp文件类型错误:请确认文件后缀名为.jsp。 3. jsp版本问题:如果使用的是较老版本的JSP规范(如JSP 1.2),可能不支持EL表达式。此时可以尝试升级到较新的JSP规范版本,并确保容器(如Tomcat)也支持。 4. 语法错误:EL表达式的语法正确性非常重要。请确保在使用EL表达式时,语法和用法都正确无误。 如果尝试了上述解决方法仍然无法使用EL表达式,可能需要仔细检查JSP配置和代码逻辑,或者查看相关的错误日志信息来进一步排查问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值