JSP表达式语言EL(Expression Language)的功能是替代JSP页面的复杂代码,它既容易访问EL隐含对象,也容易访问JavaBean的属性。EL既可以用来创建算术表达式也可以用来创建逻辑表达式。在JSP EL表达式内可以使用整型数、浮点数、字符串、常量true、false以及null。
EL剖析:EL表达式 ——"${EL expression }"即 ${left.right }或 ${left["right"] } ,
left 可以是EL隐含对象,也可以是page、request、session和application四种范围中的任意一个范围的属性,也可以是数组或列表(List);right可以是Map对象的key或Bean对象的属性。
一、EL表达式中的常量和变量
对于EL而言,变量是一个存储了特定数据内容的符号,EL可以直接对其进行访问。
例:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>使用EL变量</title>
</head>
<body>
<%
session.setAttribute("firstNum", "20");
application.setAttribute("secondNum", "40");
%>
输出数值:${10 } <br>
输出变量firstNum:${firstNum }<br>
输出变量secondNum:${secondNum }<br>
输出变量firstNum+secondNum:${firstNum+secondNum } <br>
输出字符串secondNum:${'secondNum' }<br>
</body>
</html>结果:
二、EL隐含对象
EL本身内建了11个隐含对象,我们可以通过这些对象,取得特定的网页信息。
| EL隐含对象分类 | 隐含对象 | 说明 |
| 读取页面上下文: | pageContext | 取得网页运行环境的相关信息 |
| 读取JSP作用范围变量: | pageScope | 取得page范围内特定属性的属性值 |
| requestScope | 取得request范围内特定属性的属性值 | |
| sessionScope | 取得session范围内特定属性的属性值 | |
| applicationScope | 取得application范围内特定属性的属性值 | |
| 读取客户端表单或查询字符串参数: | param | 取得request对象的单一参数值(等同于request.getParameter(String name)) |
| paramValues | 取得request对象的参数值(等同于request.getParameterValues(String name)) | |
| 读取request请求报头: | header | 取得request对象单一标头值(等同于request.getHeadr(String name)) |
| headerValues | 取得request对象的标头值(等同于request.getHeadrs(String name)) | |
| 读取cookie: | cookie | 取得request对象的标头值(等同于request.getCookies(String name)) |
| 读取上下文初始化参数: | initParam | 取得网页运行环境的初始参数值(等同于request.getInitParameter(String name)) |
示例:
elInternalObect1.jsp、elInternalObect2.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>EL 隐含对象</title>
</head>
<body>
请输入姓名:
<form method="get" action="elInternalObect2.jsp">
<input type="text" name="name" size="20"/><br>
<input type="submit" value="确认"/>
<input type="reset" value="取消">
</form>
<%
Cookie nameCookie = new Cookie("cname","JSP");
response.addCookie(nameCookie);
%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>EL 隐含对象运行</title>
</head>
<body>
请求URL:${pageContext.request.requestURL } <br>
通信协议:${pageContext.request.protocol }<br>
表单参数:${pageContext.request.queryString }<br>
${'Hello' }<br>
${param.name }<br>
${'欢迎使用JSP动态网页!' }<br>
accept-language:${header["accept-language"] }<br>
host:${header["host"] }<br>
cookie:${header["cookie"] }<br>
cookie cname:${cookie.cname }<br>
cookie cname(value):${cookie.cname.value }
</body>
</html>
结果:
三、EL运算符
①点运算符“.”与方括号“[ ]”——检索对象的属性或者集合的元素
例:${person.name }或者${person["name"] }
②算术运算符——语法语义同Java的
+ 、- 、* 、/或div 、%或mod
③关系运算符——语法语义同Java的
==或eq(同Java的equals()方法)、!=或ne 、<或lt 、>或gt 、<=或le 、>=或ge
④逻辑运算符——语法语义同Java的
&&或and 、||或or 、!或not
⑤empty运算符——判断指定的值是否为null或空
${empty A } 除非A的值是null或者或为空的字符串、数组、集合对象返回true,否则返回false
⑥条件式三元运算符——同Java
${A?B:C }
(A为true时返回B,否则返回C)
四、在EL中访问JSP隐含对象的get×××()方法
语法: ${pageContext , JSP隐含对象名.××× }
例:访问隐含对象request的getRequestURL()方法:${pageContext ,request.requestURL }
调用session.isNew()方法:${pageContext.session.new }
五、用EL访问JavaBean中的属性
通过“.”运算符访问JavaBean中的属性,语法为:${JavaBean名.属性名 }
(“.”运算实际上就是调用JavaBean中的get×××( )方法)
package EL;
public class ELJavabean {
private String pID;
public ELJavabean(String s) {
this.pID = s;
}
public String getPersonID() {
return pID;
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="EL.ELJavabean"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用EL访问JavaBean中的属性</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
ELJavabean id = new ELJavabean("20170405");
session.setAttribute("PID",id);
%>
${sessionScope.PID.personID }
</body>
</html>结果:
本文介绍了JSP表达式语言(EL)的基本概念及其使用方法,包括EL中的常量和变量、EL隐含对象的使用、EL运算符的应用以及如何通过EL访问JSP隐含对象的方法和JavaBean的属性。
1725

被折叠的 条评论
为什么被折叠?



