博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EL表达式
阅读量:6700 次
发布时间:2019-06-25

本文共 7005 字,大约阅读时间需要 23 分钟。

1、EL表达式概述

为了使JSP中表达式写起来更方便

2、EL表达式的作用

2.1、获取数据

EL表达式主要用于替换JSP页面中的脚本表达式<%= 变量或表达式 %>,以从各种类型的web域 中检索java对象、获取数据。

——(访问某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)

2.1.1、语法——

"${标识符}"

原理:会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回””空字符串。 

2.1.2、实践——

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>    <%@page import="domain.User" %>    <%@page import="java.util.*" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>在此处插入标题 <% request.setAttribute("name","张馨艺"); %> <%--${name}等同于pageContext.findAttribute("name") --%> 使用EL表达式获取数据:${name}

<% User u = new User(); u.setName("张叉叉"); request.setAttribute("user",u); %> 使用el表达式可以获取bean的属性:${user.name}

<% User p1 = new User(); p1.setName("嘻嘻嘻"); User p2 = new User(); p2.setName("哈哈哈"); List
list = new ArrayList
(); list.add(p1); list.add(p2); request.setAttribute("list",list); %>
${list[1].name}
${person.name}

<% Map
map = new LinkedHashMap
(); map.put("a","aaaaxxx"); map.put("b","bbbb"); map.put("c","cccc"); map.put("1","aaaa1111"); request.setAttribute("map",map); %>
${map.c} ${map["1"]}

${me.key}=${me.value}

 

 

2.2、执行运算

利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。

 2.2.1、语法——

${运算表达式}

2.2.2、运算符——

关系运算符

 

逻辑运算符

 

 

empty()运算符

   ${user == null}和 ${user eq null}

  ${empty(emptyList)}

三元表达式

[]和.号运算

 2.2.3、实践——

<%@page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@page import="domain.User" %><%@page import="java.util.*" %><%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
在此处插入标题

el表达式进行四则运算:

加法运算:${365+24}
减法运算:${365-24}
乘法运算:${365*24}
除法运算:${365/24}

el表达式进行关系运算:

<%--${user == null}和 ${user eq null}两种写法等价--%> ${user == null}
${user eq null}

el表达式使用empty运算符检查对象是否为null(空)

<% List
list = new ArrayList
(); list.add("ZXY"); list.add("ZCC"); request.setAttribute("list",list); %> <%--使用empty运算符检查对象是否为null(空) --%>
${str}
<% List
emptyList = null; %> <%--使用empty运算符检查对象是否为null(空) --%>
对不起,没有您想看的数据

EL表达式中使用二元表达式

<% session.setAttribute("user",new User("张馨艺")); %> ${user==null? "对不起,您没有登陆 " : user.name}

EL表达式数据回显

<% User user = new User(); user.setGender("male"); //数据回显 request.setAttribute("user",user); %>
65

 

 

2.3、获取web开发常用对象

EL 表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。

2.3.1、EL表达式中定义的11个隐式对象——

序号 隐含对象名称 描       述
1 pageContext 对应于JSP页面中的pageContext对象(注意:取的是pageContext对象。)
2 pageScope 代表page域中用于保存属性的Map对象
3 requestScope 代表request域中用于保存属性的Map对象
4 sessionScope 代表session域中用于保存属性的Map对象
5 applicationScope 代表application域中用于保存属性的Map对象
6 param 表示一个保存了所有请求参数的Map对象
7 paramValues 表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回的是一个string[]
8 header 表示一个保存了所有http请求头字段的Map对象,注意:如果头里面有“-” ,例Accept-Encoding,则要header[“Accept-Encoding”]
9 headerValues

表示一个保存了所有http请求头字段的Map对象,它对于某个请求参数,返回的是一个string[]数组。注意:如果头里面有“-” ,则使用驼峰命名法

10 cookie 表示一个保存了所有cookie的Map对象
11 initParam 表示一个保存了所有web应用初始化参数的map对象

 

 

 

 

 

 

 

 

2.3.2、实践——

 

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
在此处插入标题
---------------1、pageContext对象------------------------
${pageContext}
---------------2、page域(pageScope)------------------------
<% pageContext.setAttribute("name","张馨艺"); %> ${pageScope.name}
---------------3、request域(requestScope)------------------------
<% request.setAttribute("name","张叉叉"); %> ${requestScope.name}
---------------4、session域(sessionScope)------------------------
<% session.setAttribute("user","zxy"); %> ${sessionScope.user}
---------------5、application域(applicationScope)------------------------
<% application.setAttribute("user","zcc"); %> ${applicationScope.user}

 

2.4、调用Java方法

EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。

 

<%@page import="java.util.Arrays"%><%@page import="java.util.ArrayList"%><%@page import="java.util.List"%><%@page import="domain.User" %><%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%><%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
在此处插入标题 fn:toLowerCase("Www.CNBLIGS.COM")的结果:${fn:toLowerCase("Www.CNBLIGS.COM") }

fn:toUpperCase("Www.cnblogs.com")的结果:${fn:toUpperCase("Www.cnblogs.com") }

fn:trim(" cnblogs.com ")的结果是:${fn:trim(" cnblogs.com ") }

<% List
list = Arrays.asList("1","2","3","4"); request.setAttribute("list", list); %> fn:length(list)计算集合list的size的值是:${fn:length(list) }

fn:length("cnblogs.com")计算字符串的长度是:${fn:length("cnblogs.com") }

fn:split("www.baidu.com",".")[0]的结果是:${fn:split("www.baidu.com", ".")[0] }

<% String[] StringArray= {
"www","baidu","com"}; pageContext.setAttribute("StringArray", StringArray); %> fn:join(StringArray,".")的结果是:${fn:join(StringArray, ".") }

fn:join(fn:split("www,iteye,com",","),".")的字符串: ${fn:join(fn:split("www,baidu,com", ","),".") }

fn:indexOf("www.iteye.com","eye")的返回值为:${fn:indexOf("www.iteye.com","eye") }

<% User user = new User(); String likes[] = {
"sing", "dance"}; user.setLikes(likes); request.setAttribute("user", user); %> <%--使用el函数回显数据 --%>
唱歌
跳舞
蓝球
足球

fn:replace("www baidu com ", " ", ".")的返回值为字符串: ${fn:replace("www baidu com", " ", ".") }

fn:startsWith("www.baidu.com","www")的返回值为:${fn:startsWith("www.baidu.com", "www") }

fn:substring("www.baidu.com", 3, 9) 的返回值为字符串:${fn:substring("www.baidu.com", 3, 9) }

fn:substringAfter("www.baidu.com","bai")的返回值为字符串:${fn:substringAfter("www.baidu.com","bai") }

fn:substringBefore("www.baidu.com","bai")的返回值为字符串:${fn:substringBefore("www.baidu.com", "bai") }

 

转载于:https://www.cnblogs.com/chacha-z/p/10709795.html

你可能感兴趣的文章
MySQL数据库备份之复制
查看>>
好消息:我最新制作的Java视频教程在51cto网站和Java爱好者们见面了!
查看>>
易宝典文章——用ISA 2006标准版发布Exchange 2010的OWA系列之绑定Excha
查看>>
最近在研究 PLC机器 的 MODBUS RTU 通讯协议与C# 交互
查看>>
程序员娶妻子的经典准则
查看>>
谈开发同学的独立性和测试同学的独立性
查看>>
国内各大互联网公司相关技术站点2.0版
查看>>
「C语言回顾之旅」第二篇:指针详解进阶
查看>>
Samba的配置
查看>>
“未能从策略 Default Domain Policy 中删除应用程序 Microsoft Office Professional Plus 2010”错误解决...
查看>>
ubuntu 12.04 nginx+ mono-fastcgi-server
查看>>
CloudStack 实现VM高可用特性
查看>>
6425C-Lab8 使用组策略管理安全性(1)
查看>>
Dense Mode & Sparse mode(密模式与疏模式)
查看>>
【点评】运维工程师的职责和前景 【第一次编辑】
查看>>
smarty配置以及变量调节器详解
查看>>
rman备份恢复命令之switch
查看>>
技术合作 索尼腾龙联手申请镜头专利
查看>>
关于 MySQL 8.0 新特性“隐藏索引”的一点思考
查看>>
使用Spring Data Redis操作Redis(二)
查看>>