EL 11个内置对象
JSP开发人员可以在EL表达式中使用EL隐式对象,而不用任何显式的编码或声明。语法如下:
${隐式对象名} <!-- 获取EL隐式对象的引用 -->
在JSP页面中,可以使用JSP脚本来 <% ... %> 访问JSP隐式对象(9个)。但是在免脚本的JSP页面中则不可能访问这些JSP隐式对象,因此EL提供了一组自己的隐式对象(11个)来访问不同的对象。
| EL隐式对象 | 类型 | 说明 |
| pageContext | javax.servlet.jsp.PageContext | |
| initParam | java.util.Map | 包含所有环境初始化参数,key是参数名,value是参数值 |
| param | java.util.Map | 包含所有请求参数,key是参数名,value是指定参数名的第一个参数值 |
| paramValues | java.util.Map | 包含所有请求参数,key是参数名,value是指定参数名的所有参数值组成的字符串数组 |
| header | java.util.Map | 包含请求标题,key是标题名,value是指定标题名称的第一个标题 |
| headerValues | java.util.Map | 包含请求标题,key是标题名,value是指定标题名称的所有标题组成的字符串数组 |
| cookie | java.util.Map | 包含当前请求对象中的所有cookie,key是cookie名称,value是cookie值 |
| pageScope | java.util.Map | 包含了当前页面范围内的所有属性,key是属性名,value是属性值 |
| requestScope | java.util.Map | 包含了当前HttpServletRequest对象中的所有属性,key是属性名,value是属性值 |
| sessionScope | java.util.Map | 包含了当前HttpSession对象中的所有属性,key是属性名,value是属性值 |
| applicationScope | java.util.Map | 包含了当前ServletContext对象中的所有属性,key是属性名,value是属性值 |
pageContext对象
pageContext对象跟JSP中的隐式对象pageContext相同,表示当前JSP页面的 javax.servlet.jsp.PageContext,在EL中使用该对象可以获取其他的JSP隐式对象。
${pageContext.request} <!-- 获取JSP的内置对象 request -->
${pageContext.response} <!-- 获取JSP的内置对象 response -->
${pageContext.out} <!-- 获取JSP的内置对象 out -->
${pageContext.servletConfig} <!-- 获取JSP的内置对象 config -->
${pageContext.page} <!-- 获取JSP的内置对象 page-->
${pageContext} <!-- 获取JSP的内置对象 pageContext-->
${pageContext.session} <!-- 获取JSP的内置对象 session-->
${pageContext.servletContext} <!-- 获取JSP的内置对象 application-->
${pageContext.exception} <!-- 获取JSP的内置对象 exception-->
initparam对象
访问初始化参数的隐式对象,用于获取上下文参数(即初始化参数)的值
${initParam["password"]} <!-- 获取名为password的初始化参数的值 -->
param对象 和 paramValues对象
用于获取请求参数的值,param对象只能获取请求参数的第一个参数值。如果两个请求参数同名,则只能访问到第一个参数的值;params对象用于获取一个请求参数的多个值,返回所有值的字符串数组
${param["userName"]} <!-- 获取请求参数userName的第一个值-->
${paramValues["selectedOptions"][0]} <!-- 获取请求参数selectedOptions的第一个值 -->
${paramValues["selectedOptions"][0]} <!-- 获取请求参数selectedOptions的第二个值 -->
header对象 和 headerValues对象
用于获取请求头部分的相关信息,header对象获取请求头中标题的第一个值,headerValues对象获取请求头中标题的所有值,返回一个字符串数组
${header["accept-language"]}
${headerValues["accept-language"][0]}
cookie对象
可以用来获取一个cookie
${cookie["jseesionid"]["value"]} <!-- 获取jsseionid的cookie值 -->
${cookie.jssessionid.path} <!-- 获取jsessionid的cookie的路径 -->
pageScope对象、requestScope对象、sessionScope对象、applicationScope对象
用于获取不同作用域范围内的属性值。
有界对象也可以通过没有范围的EL表达式获取。此时,JSP容器将返回PageContext、ServletRequest、HttpSession、ServletContext中第一个同名的对象,执行顺序是从最小范围到最大范围。
EL隐式对象的特点
1)EL只能获取对象的属性,不能改写,也不能直接调用方法。
2)EL中的字符串既可以使用双引号也可以使用单引号,类似于HTML
3)EL表达式在计算时会将字符串转换成数值(null --> 0)
4)EL输出null时用空串(“”)代替
5)EL不能访问局部变量,只能访问作用域中的属性
6)EL中的empty运算符将“”是为null
7)EL中比较字符串内容使用==
EL 11个内置对象的更多相关文章
- JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】
什么是EL表达式? 表达式语言(Expression Language,EL),EL表达式是用"${}"括起来的脚本,用来更方便的读取对象! EL表达式主要用来读取数据,进行内容的 ...
- 转:EL表达式的11个内置对象
原文地址:https://blog.csdn.net/qq_17045385/article/details/54799998 EL是JSP内置的表达式语言 JSP2.0开始,不让再使用Java脚本, ...
- [转]【EL表达式】11个内置对象(用的少) & EL执行表达式
1.EL的内置对象 其他不用记,红色记一下 代码: 2.EL执行表达式
- EL表达式的内置对象
在EL表达式中,无需创建就可以使用的对象称之为EL隐藏(隐含.内置)对象.在EL中一共有11个隐藏对象,它们都与Map相似.其中10是Map,一个是 PageContext. 参数隐藏对象 这些隐藏对 ...
- jsp内置对象和el表达式
九个内置对象 *out jsp的输出流,用来向客户端响应 *page 当前jsp页面, 它的引用数据类型是Object,即真身中有如下代码 Object page=this; *config 它对应真 ...
- day12(jsp指令&内置对象&动作标签、JavaBean、EL表达式&函数库)
day12 JSP指令 JSP指令概述 JSP指令的格式:<%@指令名 attr1="" attr2="" %>,一般都会把JSP指令放到JSP文件 ...
- JSP学习 三大指令、九个内置对象、JavaBean、EL表达式
1.page-->最复杂:<%@page language="java" info="xxx"...%> * pageEncoding和con ...
- JavaWeb之 JSP:内置对象,EL表达式,JSP标签基础
JSP的内置对象 什么是JSP的内置对象呢? 在JSP页面进行编程的时候,如果我们要使用一些对象,如:HttpSession,ServletConfig,ServletContext这些对象,如果每次 ...
- JSP&EL 内置对象
JSP&EL 内置对象 转载▼ 具体的JSP和El中的内置对象见下表,由于我写在了excel中,也不知道怎么把excel发出来,就截了图. 相关问题: Q1: JSP:EL中 pageCo ...
随机推荐
- 【scrapy】爬虫中报Forbidden by robots.txt
需要在setting.py里找到ROBOTSTXT_OBEY并设为false 来源:https://blog.csdn.net/yimingsilence/article/details/521197 ...
- centos 6.9 +nginx 配置GIT HTTPS服务器(证书采用自签名)
第一部分原通过SSH访问的GIT服务器迁移 1.把原服务器GIT资源库目录完成复制至新的服务器 2.安装GIT服务器 新的服务器 创建用户 useradd git password git 下载GIT ...
- NumPy 迭代数组
NumPy 迭代数组 NumPy 迭代器对象 numpy.nditer 提供了一种灵活访问一个或者多个数组元素的方式. 迭代器最基本的任务的可以完成对数组元素的访问. 接下来我们使用 arange() ...
- typedef void (*Fun) (void) 的理解——函数指针——typedef函数指针
首先介绍大家比较熟悉的typedef int i;//定义一个整型变量i typedef myInt int: myInt j;//定义一个整型变量j 上面介绍得是我们常用的比较简单的typedef的 ...
- 137. Single Number II (Bit)
Given an array of integers, every element appears three times except for one. Find that single one. ...
- Codeforces Beta Round #52 (Div. 2)
Codeforces Beta Round #52 (Div. 2) http://codeforces.com/contest/56 A #include<bits/stdc++.h> ...
- MYSQL之水平分区----MySQL partition分区I(5.1)
一. 分区的概念 二. 为什么使用分区?(优点) 三. 分区类型 四. 子分区 五. 对分区进行修改(增加.删除.分解.合并) 六 ...
- python函数传入参数(默认参数、可变长度参数、关键字参数)
1.python中默认缺省参数----定义默认参数要牢记一点:默认参数必须指向不变对象! 1 def foo(a,b=1): 2 print a,b 3 4 foo(2) #2 1 5 foo(3,1 ...
- C#获取上传文件的扩展名
然后在代码页中写//上传图片if (UpFile.PostedFile != null){ HttpPostedFile mFile= UpFile.PostedFile; int fileS ...
- android的四种线程池
使用线程池的好处: 首先通过线程池中线程的重用,减少创建和销毁线程的性能开销.其次,能控制线程池中的并发数,否则会因为大量的线程争夺CPU资源造成阻塞.最后,线程池能够对线程进行管理,比如使用Sche ...