JSP基础(二十五)——EL表达式

本文介绍了JSP表达式语言(EL)的基本概念及其使用方法,包括EL中的常量和变量、EL隐含对象的使用、EL运算符的应用以及如何通过EL访问JSP隐含对象的方法和JavaBean的属性。

      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对象的keyBean对象的属性。


一、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可用的隐含对象
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>

结果:








评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值