el表达式初步、获取Map中的值、el内置对象、运算符、使⽤EL替换所有jsp表
达式
EL表达式
[1] 简介
JSP表达式 <%= %> ⽤于向页⾯中输出⼀个对象。
到JSP2.0时,在我们的页⾯中不允许出现 JSP表达式和 脚本⽚段。
使⽤EL表达式来代替JSP表达式 ,使⽤标签来代替脚本⽚段。
EL表达式⽤来向页⾯输出内容
[2] 基本语法
> ${表达式}
> EL表达式可以从域中获取属性。
-
使⽤ ${属性名}
- 如果只填写⼀个属性名,EL表达式会⾃动做全域查。
el表达式获取map的值- 所谓的全域查,就是按照page request session application四个域范围内分别,到就返回属性,如果没到什么都不返还。
- 我们还可以指定去哪个域查
pageScope
requestScope
sessionScope
applicatScope
- 例⼦:
查request中属性
${requestScope.属性名}
查session中的属性
${sessionScope.属性名}
- 注意:EL表达式只能获取域中的属性
EL表达式不能直接调⽤对象的⽅法
- 通过EL表达式读取对象的属性时,只需要${对象.属性名}
EL表达式会⾃动调⽤对象的对应的getter⽅法,通过将属性名⾸字母⼤写,然后加上⼀个get
- 当读取⼀些名字⽐较特殊的属性时,这种特殊值必须要指定域
${requestScope['属性名']}
[3] 隐含对象
> EL中⼀共有11个内置对象。
- pageContext
类型 PageContext
它和JSP中pageContext是⼀个东西
作⽤可以获取到JSP中其他的隐含对象
例如:可以获取项⽬名:
${tPath }
- pageScope
类型:Map<String,Object>
代表:page域中的属性
作⽤:可以获取到page域中的属性
- requestScope
类型:Map<String,Object>
代表:request域中的属性
作⽤:可以获取到request域中的属性
- sessionScope
类型:Map<String,Object>
代表:session域中的属性
作⽤:可以获取到session域中的属性
- applicatScope
- applicatScope
类型:Map<String,Object>
代表:application域中的属性
作⽤:可以获取到application域中的属性
-
param
类型: Map<String , String>
代表:⽤户发送的请求参数
作⽤:可以获取请求参数
⽤法: ${param.参数名}
- paramValues
类型:Map<String , String[]>
代表:⼀个请求参数对应的多个值
⽤法: ${paramValues.参数名[索引]}
- header
作⽤:可以获取到⽤户发送的请求头
类型:Map<String , String>
例如:获取⽤户的系统信息 ${header['User-Agent']}
- headerValues
类型: Map<String , String[]>
作⽤:可以获取⼀个头的多个值
- initParam;
类型:Map<String , String>
作⽤:获取整个WEB应⽤的初始化参数
- cookie
类型:Map<String , Cookie>
作⽤:⽤来获取Cookie
[4] 运算
> 在EL中可以直接使⽤运算符进⾏运算。
> 在EL中可以使⽤Empty元素符:
如果值为null , empty则返回 true
如果为空串,则返回 true
空的集合返回true
> 所以empty元素符经常⽤来判断集合或者字符串是否为空
======================
代码结构:
Address.java
package com.atguigu.bean;
public class Address {
private String city;
private String street;
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
@Override
public String toString() {
return"Address [city=" + city + ", street=" + street + "]";
}
}
User.java
package com.atguigu.bean;
public class User {
private String username;
private String gender;
private int age;
private Address address;
public String getUsername() {
System.out.println("GET⽅法被调⽤了");
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return"User [username=" + username + ", gender=" + gender + ", age="
+ age + "]";
}
public User(String username, String gender, int age) {
super();
this.username = username;
this.age = age;
}
public User() {
super();
/
/ TODO Auto-generated constructor stub
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}
=======================
el表达式初步
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> <html>
<head>
<meta http-equiv="Content-Type"content="text/html; charset=UTF-8">
<title>Insert title here</title>
<%
pageContext.setAttribute("key", "pageValue");
request.setAttribute("key", "reqValue");
session.setAttribute("key", "sessValue");
application.setAttribute("key", "appValue");
%>
</head>
<body>
<%-- <%=Attribute("requKey") %> --%>
<!-- 如果使⽤EL表单时获取⼀个null的对象,它不会显⽰null,⽽是什么都不显⽰ -->
<!-- EL表达式会在四个域中分别查属性,以从⼩到⼤的顺序查 -->
<%-- ${key } --%>
<!-- 我们可以通过pageScope requestScope sessionScope applicationScope
来指定要查的域
-->
${sessionScope.key }
</body>
</html>
1.jsp
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论