EL表达式介绍及解析获取对象,list,Map时的el表达式用法
EL表达式
1.概念:Expression Language 表达式语言
2.作用:替换和简化jsp页面中java代码的编写。
3.语法:${表达式}
4.注意:
**jsp默认是支持el表达式的,如果忽略el表达式**
1:默认设置jsp中的page指令中:isELIgnored="true" 忽略当前jsp页面中所有的el表达式
2. \${表达式} :忽略当前这个el表达式
使用:
1:运算
运算符:
1.算数运算符:+ - * /(div) %(mod)
2.逻辑运算符:&&(and) ||(or) !(not)
3.比较运算符:> < >= <= == !=
4.空运算符:empty
功能:用于判断字符串,集合,数组对象是否为null并且长度是否为0
${empty list}
2:获取值
1.el表达式只能从域对象中获取值
2.语法:
1.${域名称.键名} :从指定域中获取指定的键值
域名称:
1.pageScope -->pageContext
2.requestScope --->request
3.sessionScope ----->session
4.applicationScope ------>application(ServletContext)
举例:在request 域中存储了name = 张三
获取:${requestScope.name}
2.${键名}:表示一次从最小的域中查找是否有改键对应的值,直到找到为止。
3:获取对象,list集合,map集合的值
1.对象:${域名城.键名.属性名}
本质上会去调用对象的getter方法
<h1>获取对象</h1>
${user.name}<br>
${user.age}<br>
${user.strbir()}<br>
2.List集合:${域名称.键名[索引]}
<h2>获取list集合</h2>
${list[0]}<br>
${list[1]}<br>
${list[2].name}<br>
${list[2].age}<br>
${list[2].strbir()}<br>
3.Map集合
${域名称.键名.key名称}
${域名称.键名[“key名称”]}
<h3>获取Map集合</h3>
${map.username}<br>
${map["password"]}<br>
${map.user.name}<br>
${map["user"].age}<br>
${map["user"].strbir()}<br>
隐式对象:
el表达式中有11个隐式对象
pageContext:
获取jsp其他八个内置对象
${pageContext.request.contextPath}:动态获取虚拟目录
项目演示el表达式:
一:准备项目,导入jar包使用maven管理jar包。
<!--javaEE-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl -->
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!--jstl依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
二:创建实体类User
package com.servlet01.entity;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* package_name:com.servlet01.entity
*
* @author:徐亚远 Date:2020/3/6 13:37
* 项目名:servlet-project
* Description:TODO
* Version: 1.0
**/
public class User {
private String name;
private Integer age;
private Date birthday;
public String strbir(){
if (birthday!=null){
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
return sdf.format(date);
}else {
return null;
}
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", birthday=" + birthday +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
el表达式演示界面代码:
<%@ page import="com.servlet01.entity.User" %>
<%@ page import="java.util.*" %>
<%--
Created by IntelliJ IDEA.
User: Lenovo
Date: 2020/3/6
Time: 13:38
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>el表达式获取值</title>
</head>
<body>
<%
User user = new User();
user.setName("root");
user.setAge(21);
user.setBirthday(new Date());
request.setAttribute("user", user);
List list = new ArrayList();
list.add("11");
list.add("22");
list.add(user);
request.setAttribute("list",list );
Map map = new HashMap();
map.put("username","admin" );
map.put("password","admin" );
map.put("user",user);
request.setAttribute("map",map );
%>
<h1>获取对象</h1>
${user.name}<br>
${user.age}<br>
${user.strbir()}<br>
<h2>获取list集合</h2>
${list[0]}<br>
${list[1]}<br>
${list[2].name}<br>
${list[2].age}<br>
${list[2].strbir()}<br>
<h3>获取Map集合</h3>
${map.username}<br>
${map["password"]}<br>
${map.user.name}<br>
${map["user"].age}<br>
${map["user"].strbir()}<br>
</body>
</html>
演示效果如图:
Hero_rong: 可以贴一下代码吗,下载居然还要会员
baidu_38997609: 所以等值和非等值的区别是什么,难道就只是where条件那里有无“=”的区别吗
小陈没烦恼90: 下载不了,你的打包的文件可以发我一下吗
加油,进大厂!!!: 点击注册会换页面的
m0_62258855: 老哥你是不是少了个注册界面