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>

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值