您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
12_EL_获取域中存储的值_对象值(对象值、对象属性值(通过getter)、自定义getter)
发布时间:2022-09-10 23:09:05编辑:雪饮阅读()
el表达式也可以获取对象的值,那么request的setAttribute也是支持对象做为值的。
获取对象的值则是对象的引用地址(若有toSting方法,说不定就走toSting了)。
如果获取对象的属性的值则是走该属性对应的getter方法(get+属性名(首字母大写))。
首先我们建立一个类如:src/package1/User.java:
package package1;
import java.text.SimpleDateFormat;
import java.util.Date;
public class User {
private String name;
public int getAge() {
return age;
}
private int age;
private Date birthday;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getBirthdayFormat(){
if(birthday!=null){
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(birthday);
}
return "";
}
}
然后我们的el3.jsp如:
<%@ page import="java.util.Date" %>
<%@ page import="package1.User" %>
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2022/9/10
Time: 13:09
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
User user=new User();
user.setName("kasumi");
user.setAge(24);
user.setBirthday(new Date());
request.setAttribute("u",user);
%>
<h3>el对象中的值</h3>
<!--直接获取的整个对象则就是对应的地址值-->
requestScope.u:${requestScope.u}<br/>
<!--直接获取对象里面的属性是以对应属性名的getter方法名来获取的,所以要获取对应属性,则该属性对应的getter方法必须存在-->
requestScope.u.name:${requestScope.u.name}<br/>
requestScope.u.age:${requestScope.u.age}<br/>
<!--birthday虽然也是对象,但是这里获取的是其的toString方法的值(哥自己的理解)-->
requestScope.u.birthday:${requestScope.u.birthday}<br/>
<!--直接获取日期对象里面的年属性,虽然日期对象返回为toString,
但是如果还指定了子属性名,则应也是按getter来获取的,但这里好像是由于当时实现的问题
所以导致这里获取的年的属性有点问题-->
requestScope.u.birthday.year:${requestScope.u.birthday.year}<br/>
<!--但月没有问题(应该自己加一个1,因为从0开始的)-->
requestScope.u.birthday.month:${requestScope.u.birthday.month}<br/>
<!--既然是安装getter方法来获取的,则我们可以利用此原理在数据拿到之前先处理下(专业叫法好像是数据视图)-->
requestScope.u.birthdayFormat:${requestScope.u.birthdayFormat}<br/>
<!--
补充说明:
上篇中忘了介绍使用el表达式在输出时候的另外一个好处就是,如果被获取的值不存在,比如是null,则不会在页面显示null,而是不显示,这样更友好点了。
让人想起来安卓最近几年官方比较推崇的kotlin开发语言,据说是可以解决安卓的空指针,以提高开发效率吧。
-->
</body>
</html>
关键字词:EL,获取域中存储的值,对象值,对象属性值,通过getter,自定义getter