el表达式获取jsp域对象、获取对象(获取时间使用逻辑视图)、List集合(可获取对象)、Map集合的值(可获取对象)

本文介绍EL表达式的使用方法,包括如何从JSP域对象中获取值、获取对象、List及Map集合中的数据,并展示了具体示例。

一、el表达式获取jsp域对象

在这里插入图片描述
el是用{}而不是()
el表达式只能从域对象中获取值

jsp和html都要在web目录下写

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>el获取域中的数据</title>
</head>
<body>


<%
    //在域中存储数据
    session.setAttribute("name","李四");
    request.setAttribute("name","张三");
    session.setAttribute("age","19");
%>

<h3>el获取值</h3><br>
${requestScope.name}<br>
${sessionScope.age}<br>

${sessionScope.hahha}<%--没有这个值也不会报错,所以不用判断null了,比之前的方便--%>


${name}<%--这里的name同名了会输出张三(因为第二种方法从小到大找,找到为止)--%>
</body>
</html>

这里我的虚拟目录为/,但我在web建了个el目录,所以浏览器要加上el才能访问:

在这里插入图片描述
在这里插入图片描述
这样获取值可代替:直接用${requestScope.cc_error}替换就行,自动判断空的,空就不输出,方便

<div><%=request.getAttribute("cc_error")==null?"":request.getAttribute("cc_error")%></div>
<div><%=request.getAttribute("login_error")==null?"":request.getAttribute("login_error")%></div>

二、获取对象、List集合、Map集合的值

  1. 获取对象:${域名称.键名.属性名}
  • 本质上会去调用对象的getter方法
  1. List集合:${域名称.键名[索引]}
  2. Map集合:
  • 第一种方法: ${域名称.键名.key名称}
  • 第二种方法: ${域名称.键名[“key名称”]}在这里插入图片描述
    新建User类:
package it.cast;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author QLBF
 * @version 1.0
 * @date 2020/11/27 12:38
 */
public class User {
    private String name;
    private int age;
    private Date birthday;

    public String getBirStr(){
        /**
         *  逻辑视图
         * @description:因为el获取的日期是美国的,我们要转为年月日的
         * @param: * @param:
         * @return: java.lang.String
         * @author QLBF
         * @date: 2020/11/27 12:40
         */
        if (birthday!=null){
            //1.格式化日期对象
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
            //2.返回字符串即可
            return sdf.format(birthday);

        }else {
            return "";
        }
    }

    public User() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
}

c.jsp:

<%@ page import="it.cast.User" %>
<%@ page import="java.util.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>T获取对象、List集合、Map集合的值itle</title>
</head>
<body>

<%
    /*设置User类*/
    User user=new User();
    user.setName("张三");
    user.setAge(18);
    user.setBirthday(new Date());
    //下面的user是上面的user对象传过去
    request.setAttribute("u",user);

    //设置list
    List list=new ArrayList();
    list.add("aaa");
    list.add("bbb");
    //可以存对象
    list.add(user);
    request.setAttribute("list",list);

    //设置map
    Map map=new HashMap<>();
    map.put("sname","李四");
    map.put("gender","男");
    map.put("user",user);
    request.setAttribute("map",map);

%>

<h3>1.el获取对象中的值,是根据上面request.setAttribute的键来获取</h3>
${requestScope.u}<br> <%--输出传输的user对象的地址值--%>
<%--
    * 通过的是对象的属性来获取
        * setter或getter方法,去掉set或get,在将剩余部分,首字母变为小写。
        * setName --> Name --> name
--%>
${requestScope.u.name}<br><%--获取user对象的getName方法--%>
${u.age}<br>
${u.birthday}<br>
${u.birStr}<br><%--获取user对象的getbirStr方法--%>



<h3>2.el获取List值</h3>
${list}<br>
${list[0]}<br>
${list[1]}<br>
${list[2]}<br>
${list[12]}<br><%--越界也不会报错,不输出而已--%>
${list[2].name}<br>

<h3>el获取Map值</h3>
${map.gender}<br>
${map["gender"]}<br><%--[]后引号不能省--%>
${map.user.name}<br>

</body>
</html>

在这里插入图片描述

虽然参考引用未直接提及头歌平台EL表达式第1关获取对象中数据的具体解决方案,但可以结合EL表达式通用知识进行推测。 EL表达式获取对象中数据,通常涉及对象List集合Map集合等不同类型数据的获取。对于对象,如JavaBean,可通过属性名直接获取属性,像在引用[3]中,通过`${User.id}`、`${User.name}`、`${User.tel}`获取JavaBean `User` 的属性获取List集合,可通过索引访问,若在对象中存储了一个List,假设为`list`,可使用 `${list[index]}` 获取指定索引位置的元素,其中`index`为索引获取Map集合,可通过键来访问,若在对象中存储了一个Map,假设为`map`,可使用 `${map.key}` 或 `${map["key"]}` 获取指定键对应的。 在使用EL表达式获取对象数据时,还可利用其隐式对象。如引用[2]中,使用 `${param.username}` 获得表单参数, `${header["User - Agent"]}` 获取请求头信息, `${initParam.aaa}` 获取初始化参数, `${cookie.name}` 获取cookie信息等。 示例代码如下,假设在JSP页面中设置对象获取其中数据: ```jsp <%@ page import="java.util.ArrayList" %> <%@ page import="java.util.List" %> <%@ page import="java.util.HashMap" %> <%@ page import="java.util.Map" %> <%@ page import="com.xszx.domain.User" %> <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <html> <head> <title>EL获取对象数据示例</title> </head> <body> <% // 设置JavaBean对象到session User user = new User(1, "zhangsan", "520"); session.setAttribute("User", user); // 设置List集合到request List<String> list = new ArrayList<>(); list.add("element1"); list.add("element2"); request.setAttribute("list", list); // 设置Map集合到application Map<String, String> map = new HashMap<>(); map.put("key1", "value1"); map.put("key2", "value2"); application.setAttribute("map", map); %> <!-- 获取JavaBean中的数据 --> <pre> 获取JavaBean中的id ${User.id} 获取JavaBean中的username ${User.name} 获取JavaBean中的tel ${User.tel} </pre> <!-- 获取List集合中的数据 --> <pre> 获取List集合中第一个元素 ${list[0]} 获取List集合中第二个元素 ${list[1]} </pre> <!-- 获取Map集合中的数据 --> <pre> 获取Map集合中key1对应的 ${map.key1} 获取Map集合中key2对应的 ${map["key2"]} </pre> </body> </html> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值