[应用篇]第一篇 EL表达式入门
概念
EL表达式:EL 全名为Expression Language,就是为了替代<%= %>脚本表达式。
作用
- 获取数据:
EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域中检索java对象、获取数据。(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)
- 执行运算:
利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。${user==null}
- 获取web开发常用对象
EL 表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。
- 调用Java方法
EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。
其实感觉这个地方是应该会很好玩的!例如自定标签和自定义函数!
使用EL表达式获取数据
使用EL表达式获取数据语法:“${标识符}”
EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回””
(注意,不是null,而是空字符串)。
示例:${user}
<%=((HttpServletRequest)pageContext.getRequest()).getContextPath() %> 在获取后对象后要加括号才能继续调用对象身上的方法
${pageContext.request.contextPath} 这个还是需要记忆下有用
EL表达式也可以很轻松获取JavaBean的属性或获取数组、Collection、Map类型集合的数据,例如:
${strs[1]} //获取数组中的元素
${user.address.city}//链式操作获取值
${user.list[0]}:访问有序集合某个位置的元素
${map.key} : 获得map集合中指定key的值
通过JSTL标签中的C标签的foreach进行迭代,这个我们已经做过了!
EL表达式执行运算[重点中的重点]
(1) 算数运算:所有参与元算的元素都会被转成数字,如果不能转就报错,空元素参与运算当作没参与。
(2) 关系运算:必须记忆下来
== ---> eq 例如:${5==5}或${5 eq 5}
!= ---> ne
< ---> lt
> ---> gt
<= ---> le
>= ---> ge
(3) **逻辑运算:**
&& ---> and 例如:${A&&B}或${A and B}
|| ---> or
! ---> not
(4) empty/not empty 判断一个对象或集合或数组是否为null或长度为0
(5) 条件表达式 ${user!= null ? user.name : "";//三元运算符
(6) []和.号运算符
使用EL表达式获得Web开发常用对象
EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域中检索java对象、获取数据。(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)
利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。${user==null}
EL 表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。
EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。
其实感觉这个地方是应该会很好玩的!例如自定标签和自定义函数!使用EL表达式获取数据语法:“${标识符}”
EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回””
(注意,不是null,而是空字符串)。
示例:${user}
<%=((HttpServletRequest)pageContext.getRequest()).getContextPath() %>在获取后对象后要加括号才能继续调用对象身上的方法
${pageContext.request.contextPath}这个还是需要记忆下有用EL表达式也可以很轻松获取JavaBean的属性或获取数组、Collection、Map类型集合的数据,例如:
${strs[1]} //获取数组中的元素${user.address.city}//链式操作获取值${user.list[0]}:访问有序集合某个位置的元素${map.key} : 获得map集合中指定key的值
通过JSTL标签中的C标签的foreach进行迭代,这个我们已经做过了!
EL表达式执行运算[重点中的重点]
(1) 算数运算:所有参与元算的元素都会被转成数字,如果不能转就报错,空元素参与运算当作没参与。
(2) 关系运算:必须记忆下来
== ---> eq 例如:${5==5}或${5 eq 5}
!= ---> ne
< ---> lt
> ---> gt
<= ---> le
>= ---> ge
(3) **逻辑运算:**
&& ---> and 例如:${A&&B}或${A and B}
|| ---> or
! ---> not
(4) empty/not empty 判断一个对象或集合或数组是否为null或长度为0
(5) 条件表达式 ${user!= null ? user.name : "";//三元运算符
(6) []和.号运算符
使用EL表达式获得Web开发常用对象
(1) 算数运算:所有参与元算的元素都会被转成数字,如果不能转就报错,空元素参与运算当作没参与。(2) 关系运算:必须记忆下来== ---> eq 例如:${5==5}或${5 eq 5}!= ---> ne< ---> lt> ---> gt<= ---> le>= ---> ge(3) **逻辑运算:**&& ---> and 例如:${A&&B}或${A and B}|| ---> or! ---> not(4) empty/not empty 判断一个对象或集合或数组是否为null或长度为0(5) 条件表达式 ${user!= null ? user.name : "";//三元运算符(6) []和.号运算符
EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据。
语法:${隐式对象名称} :获得对象的引用
| 隐藏对象 | 描述 |
|---|---|
| pageContext | 代表pageContext对象,注意和pageScope进行区分 |
| pageScope | 代表page域,可以用来获取page域中的属性 |
| reqeustScope | 代表reqeust域,可以用来获取reqeust域中的属性 |
| sessionScope | 代表session域,可以用来获取session域中的属性 |
| applicationScope | 代表application域,可以用来获取application域中的属性 |
| param | 代表请求参数组成的map集合${param.userName} 相当于 request.getParameter("userName") |
| paramValues | 代表请求参宿组成的map集合,但是此集合的value是String[],用来获取一名多值的param 相当于 request.getParameterValues("userName") |
| cookie | 获取cookie组成的map对象,此map的值是一个cookie对象${cookie.cookieName.cookieValue} |
| header | 获取所有HTTP请求字段的map对象 |
| headerValues | 同上,获取请求头组成的map,但是value是一个String[] |
| initParam | 以map封装的web.xml中配置的整个web应用的初始化参数 |
示例测试代码:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><html><head></head><body><%--${pageContext }${pageScope }${requestScope }${sessionScope }${applicationScope }--%>获取请求参数${param.name } <hr>获取请求头<%=request.getHeader("Host")%>${header.Host }${header["Accept-Language"] }<hr>el表达式获取cookie信息<br><%Cookie cookie = new Cookie("host","localhost");response.addCookie(cookie);%><%Cookie [] cs = request.getCookies();if(cs!=null){for(Cookie c : cs){if("host".equals(c.getName())){out.write(c.getValue());}}}%> <br>cookie.host.value: ${cookie.host.value}<hr>整个web应用的初始化参数<br><%=application.getInitParameter("data1")%><br>initParam: ${initParam.data1 }<hr>pageContext.request:${pageContext.request }<br>pageScope.request:${pageScope.request }</body></html>
[应用篇]第一篇 EL表达式入门的更多相关文章
- JVM学习篇-第一篇
JVM学习篇-第一篇 JDK( Java Development Kit): Java程序设计语言.Java虚拟机.Java类库三部分统称为JDK,JDK是用于支持Java程序开发的最小环境** ...
- EL表达式 入门
为了使JSP写起来更加简单. 表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法. JSP EL语言定义 E L(Expression L ...
- python 基础篇第一篇
本节内容 1.python介绍 2.发展史 3.python2和python3 4.安装 5.简单程序,hello world程序 6.变量 7.用户输入 8.模块初识 9..pyc是什么? 10.数 ...
- 第一章 EL表达式常见用法
el最常用的几种使用场景: 从配置文件中读取属性 缺失值情况下,配置默认值 el内部字符串使用String的方法 三目运算符 正则表达式 注入系统属性(system properties) 调用系统原 ...
- Sharepoint 2013 安装部署系列篇 第一篇 -- 系统集群安装
这部分讲述怎样配置两台服务器作为sql集群. 准备 *你需要两个网卡在每台服务器上,一个是共有,另一个是私有的(heartbreak通信)*共享存储如SAN存储需要至少如下配置,并且需要连接到每台节点 ...
- java多线程基础篇第一篇
1.在开始多线程之前,我们先来聊聊计算机的缓存 计算机处理一个程序需要cpu处理器与存储设备的交互.但是在计算机发展的过程中,cpu处理器的处理速度不断提高,而存储设备的读写速度却没有得到与cpu同样 ...
- 个人整理的jsp、EL表达式、JSTL标签库的笔记,少概念多实用,需要的留下邮箱,会第一时间分享原稿PDF给大家!
jsp 第一章 jsp介绍及对比servlet 作用: 动态网页技术,动态的从数据库获取数据 jsp和servlet的优缺点: jsp优点:页面表现方便,利于写html代码 jsp缺点:业务逻辑处理麻 ...
- EL表达式(3)
本篇讲解使用EL表达式来调用Java方法(自定义EL函数)和Sun公司开发的EL函数库. 简单来说,我们在一个类中的某个方法,可以使用EL进行调用,这个能被EL表达式调用的方法称之为EL函数,但是这种 ...
- 【JavaWeb】EL表达式&过滤器&监听器
EL表达式和JSTL EL表达式 EL表达式概述 基本概念 EL表达式,全称是Expression Language.意为表达式语言.它是Servlet规范中的一部分,是JSP2.0规范加入的内容.其 ...
随机推荐
- Bag类课后作业
20162316 Bag课后作业 下面小标题都是码云链接 实现代码 import java.util.Arrays; public class Bag implements BagInterface ...
- 第二阶段Sprint冲刺会议1
进展:总结第一阶段冲刺成就,讨论第二阶段任务,要实现的主要功能,分工及任务认领.
- Leetcode题库——33.搜索旋转排序数组
@author: ZZQ @software: PyCharm @file: search.py @time: 2018/11/12 18:12 要求:假设按照升序排序的数组在预先未知的某个点上进行了 ...
- Keil C51 的printf
转自:http://blog.csdn.net/zhanglianpin/article/details/44779009 在Keil C51 中使用printf ,首先需要重新实现 putchar( ...
- Intellij IDEA中file size exceeds configured limit解决
把Hadoop源码导入IDEA中后,其中有个ClientNamenodeProtocolProtos文件代码高达82997行,IDEA直接就不把它当java类看了,报file size exceeds ...
- fir.im的高级统计功能
fir.im的高级统计功能,可以根据渠道和活动名称,统计不同渠道和活动带来的下载量.操作步骤如下: 第一步:生成统计链接 点击高级统计,进入统计详情页,然后点击生成统计链接: 设置统计链接的应用版本. ...
- Python3.6 AES加密 pycrypto 更新为 pycryptodemo | TypeError: Object type <class 'str'> cannot be passed to C code
#!/usr/bin/env python# -*- coding:utf-8 -*-# @author: rui.xu# @update: jt.huang# 这里使用pycryptodemo库# ...
- [转帖] CentOS7 与 CentOS6的对比
来源网站: http://blog.51cto.com/fengery/1901349 centos6.x_centos7.x差异改进明细 感谢原作者 centos官方帮助文档:https://wik ...
- vSphere Client 连接ESXi 或者是vCenter 时虚拟机提示VMRC异常的解决办法
1. 自己的vSphere 连接vCenter 向管理虚拟机 结果发现总是有异常. 提示如图示 VMRC控制台的连接已经断开 2. 花了比较长的时间也没搞定. 后来百度发现 关闭一个进程 然后重新登录 ...
- sqlserver查询数据库中包含某个字段的所有表和所有存储过程
1.查询包含某字段的所有表 select object_name(id) objName,Name as colName from syscolumns where (name like'%你要查询的 ...