Jsp内置对象及EL表达式的使用
一、JSP的内置对象(9个JSP内置对象)
JSP的内置对象引用名称 对应的类型
request HttpServletRequest
response HttpServletResponse
session HttpSession(有开关的:page指令的session属性的取值)
application ServletContext
config ServletConfig
page this(当前Servlet对象)
exception java.lang.Throwable(有开关:page指令的isErrorPage属性改为true)
out JspWriter
pageContext javax.servlet.jsp.PageContext非常重要
pageContext对象有三大作用:
1、本身是一个域对象,表示的域范围是本页面。
同时还能操作其他三个域对象(PageContext ,ServletRequest, HttpSession,ServletContext)
设置属性:
void setAttribute(String name,Object value)
void removeAttribute(String name)
Object getAttribute(String name)
操作其他的三个域对象,设置属性:
void setAttribute(String name,Object value,int scope)
void removeAttribute(String name,int scope)
Object getAttribute(String name,int scope)
参数int scope是由PageContext类提供的静态变量规定的。
PageContext.PAGE_SCOPE:页面范围(是PageContext本身中的那个Map,代号page)
PageContext.REQUEST_SCOPE:请求范围(是ServletRequest中的那个Map,代号request)
PageContext.SESSION_SCOPE:请求范围(是HttpSession中的那个Map,代号session)
PageContext.APPLICATION_SCOPE:请求范围(是ServletContext中的那个Map,代号application)
Object findAttribute(String name):依次按照page,request, session ,application范围搜索指定名称的对象,找到为止。
EL表达式便是调用了此方法(非常有用)
2、获取其他8个隐式对象
3、提供了转发和包含的方便方法
若不用pageContext对象:
RequestDispatcher rd = request.getRequestDispatcher("/url");
rd.forward(request,response);
用pageContext对象:
pageContext.forward("url");
pageContext.include("url");
四大域对象(两个资源之间互传数据)
JSP中隐式对象的名称 范围名称 具体的类型
pageContext page javax.servlet.jsp.PageContext
request request javax.servlet.ServletRequest
session session javax.servlet.http.HttpSession
application application javax.servlet.ServletContext (如果使用,必须同步处理)
二、EL表达式
它只是JSP中的表达式,不是一种开发语言。
基本语法:${EL表达式}
1. 获取数据
EL表达式只能获取四大域中的数据。
EL表达式获取的对象如果是null,页面不会显示数据。因此,EL表达式中永远不会出现空指针异常
"."运算符:
${p.name}:调用域中名称为p对象的getName方法,点运算符是用于获取属性的取值的。
[]运算符:
(.运算符能做的,[]也能做。[]能做的,.不一定能做)
比如${p.name}===${p['name']}==${p["name"]}
优秀在可以取不符合Java命名规范的东东。
2. 数学逻辑运算:
empty运算符:如果判断的对象是null或者空字符串,都返回true。
对于集合,即使集合对象本身不是null,没有任何元素,也返回true。
EL表达式不支持字符串连接操作。
三、EL内置对象(11大EL内置对象)
获取JSP的内置对象(11大EL内置对象):难点,不要与JSP的内置对象和范围名称搞混
11大EL隐式对象中,其中一个是表示自身对象外,其余都是表示的Map结构
EL隐式对象名称 Java类型 备注
pageContext javax.servlet.jsp.PageContext 与JSP中的内置对象完全相同
剩余的都是代表的Map集合
pageScope java.util.Map 代表着PageContext页面范围域那个Map
requestScope java.util.Map 代表着ServletRequest请求范围域那个Map
sessionScope java.util.Map 代表着HttpSession会话范围域那个Map
applicationScope java.util.Map 代表着ServletContext应用范围域那个Map
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的Map。key:cookie的name。value:cookie对象本身
initParam java.util.Map 代表着全局初始化参数(web.xml中context-param).key:参数名称。value:参数值
Jsp内置对象及EL表达式的使用的更多相关文章
- JavaWeb之 JSP:内置对象,EL表达式,JSP标签基础
JSP的内置对象 什么是JSP的内置对象呢? 在JSP页面进行编程的时候,如果我们要使用一些对象,如:HttpSession,ServletConfig,ServletContext这些对象,如果每次 ...
- jsp内置对象和el表达式
九个内置对象 *out jsp的输出流,用来向客户端响应 *page 当前jsp页面, 它的引用数据类型是Object,即真身中有如下代码 Object page=this; *config 它对应真 ...
- jsp内置对象和el表达式内置对象误区
未经允许禁止转载... jsp九大内置对象 EL表达式隐含的11个对象 隐含对象名称 描 述 pageContext 对应于JSP页面中的pageContext对象(注意:取的是pageC ...
- JSP内置对象和EL内置对象
JSP共有九大内置对象: (1) HttpSession类的session对象作用:主要用于来分别保存每个用户信息,与请求关联的会话: 会话状态维持是Web应用开发者必须面对的问题. ...
- Jsp内置对象和EL隐藏(内置)对象
JSP中的内置对象一共有九个, 由于有的不太常用, 所以总是记不住, 从Sun公司的网站上找到的PDF文档, 把这一部分放在这里, 以备随时查用: JSP九个内置对象: Implicit ...
- JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象
Day38 JSP JSP的运行过程具体如下: (1)客户端发出请求,请求访问JSP文件. (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果 ...
- EL表达式,JSP内置对象
基本语法格式 EL都是以 ${ 为起始.以} 为结尾的 ${ EL Expression} 示例: ${ “Helloworld” } //输出字符串常量 ${ str } //输出字符串变量st ...
- 转:jsp内置对象中page与pageContext与el内置对象pageScope与pageContext区别
原文地址:jsp内置对象中page与pageContext与el内置对象pageScope与pageContext区别 首先说明一下jsp9大内置对象 (1)HttpSession类的session对 ...
- Java EE JSP内置对象及表达式语言
一.JSP内置对象 JSP根据Servlet API规范提供了一些内置对象,开发者不用事先声明就可使用标准变量来访问这些对象. JSP提供了9种内置对象: (一).request 简述: JSP编程中 ...
随机推荐
- SQL Server 2008 R2——VC++ ADO 操作 多线程操作 代码结构
==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...
- cocos2d-x之Box2d初试
物理引擎:用来模拟一套物理事件的物理代码. #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "c ...
- swift函数的用法,及其嵌套实例
import Foundation //swift函数的使用 func sayHello(name userName:String ,age:Int)->String{ return " ...
- 设计模式C#实现(五)——抽象工厂模式
抽象工厂模式 意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类. UML类图: 场景:抽象村商店想销售Pizza和Hamburg等多种商品,而在美国店和中国店要出售本土化的口味 ...
- ExtJS之开篇:我来了
以前做web开发一直在用jquery框架,或者开发html5用到backbone.js+sea.js+underscore.js等,现在做网站后台要用到extjs了,结合spring mvc,正式学习 ...
- scons使用
1.概述 scons是一个Python写的自动化构建工具,和GNU make相比优点明显: A.移植性:python能运行的地方,就能运行scons B. 扩展性:理论上scons只是提供 ...
- linux中C语言获取高精度时钟gettimeofday函数
前言: 在开发中,很多时候需要知道各个函数或者是某些设备对命令的操作用时,因此需要用到 gettimeofday 来获取当前时钟. 一,函数说明 #include int gettimeofd ...
- Windows路由表详解
对于路由器的路由表,大部分网管朋友都很熟悉,但是对于windows的路由表,可能了解的人就相对少一些.今天我们就一起来看看windows路由表. 一. windows路由表条目解释 1. 使用ip ...
- 边工作边刷题:70天一遍leetcode: day 84-2
要点:这题是combination的应用,从左向右想比从右向左容易. 因为有结果从小到大的要求,暗示用combintion而不是permutation 其实就是从小到大验证因子,每个因子和其对称因子立 ...
- Javascript 中的闭包和引用
Javascript 中一个最重要的特性就是闭包的使用.因为闭包的使用,当前作用域总可以访问外部的作用域.因为Javascript 没有块级作用域,只有函数作用域,所以闭包的使用与函数是紧密相关的. ...