起初被JSP对象弄得好乱,学了EL表达式后更乱~
不过今天花了一上午时间,搞透了(*^__^*) 嘻嘻……
首先说一下JSP内置对象:
JSP内置对象类型映射表
对象名 类型 作用域
request javax.servlet.ServletRequest RequestScope
response javax.servlet.ServletResponse PageScope
pageContext javax.servlet.jsp.PageContext PageScope
session javax.servlet.http.HttpSession SessionScope
application javax.servlet.ServletContext ApplicationScope
out javax.servlet.jsp.JspWriter PageScope
config javax.servlet.ServletConfig PageScope
page java.lang.Object PageScope
exception javax.lang.Throwable PageScope
至于九大内置对象(也叫隐式对象)如何应用,我想我在此无须多说,这方面文章一搜一大片。我想提一下pageContext这个对象。
pageContext这个对象比较特殊,由它的类型可知它是jsp特有的,servlet中没有此对象。pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的session,也可以取本页面所在的 application的某一属性值,他相当于页面中所有功能的集大成者。
再说一下EL内置对象:
EL为了方便输出一些表达式的值,自己也定义了一些内置对象,应用这些内置对象方便的获取想要输出的值
JSP EL的内置对象和JSP的内置对象是两回事,不能互用,即JSP EL内置对象只能在EL中表达式中使用,
JSP的内置对象也只能在JSP中使用而不能在EL中直接用
但是两种有个对应关系,即EL的内置对象可以调用JSP对应内置对象的保存数据,从而方便的显示
JSP EL的内置对象:
pageContext
pageScope
requestScope
sessionScope
applicationScope
param
paramValues
header
headerValues
cookie
initParam
可以分为以下三类:
1.与范围有关的隐含对象
与范围有关的EL 隐含对象包含以下四个:pageScope、requestScope、sessionScope 和applicationScope;
它们基本上就和JSP的pageContext、request、session和application一样;
在EL中,这四个隐含对象只能用来取得范围属性值,即getAttribute(String name),却不能取得其他相关信息。
例如:我们要取得session中储存一个属性username的值,可以利用下列方法:
session.getAttribute("username") 取得username的值,
在EL中则使用下列方法
${sessionScope.username}
2.与输入有关的隐含对象
与输入有关的隐含对象有两个:param和paramValues,它们是EL中比较特别的隐含对象。
例如我们要取得用户的请求参数时,可以利用下列方法:
request.getParameter(String name)
request.getParameterValues(String name)
在EL中则可以使用param和paramValues两者来取得数据。
${param.name}
${paramValues.name}
3.其他隐含对象
cookie
JSTL并没有提供设定cookie的动作,
例:要取得cookie中有一个设定名称为userCountry的值,可以使用${cookie.userCountry}来取得它。
header和headerValues
header 储存用户浏览器和服务端用来沟通的数据
例:要取得用户浏览器的版本,可以使用${header["User-Agent"]}。
另外在鲜少机会下,有可能同一标头名称拥有不同的值,此时必须改为使用headerValues 来取得这些值。
initParam
initParam取得设定web站点的环境参数(Context)
例:一般的方法String userid = (String)application.getInitParameter("userid");
可以使用 ${initParam.userid}来取得名称为userid
pageContext
pageContext取得其他有关用户要求或页面的详细信息。
${pageContext.request.queryString} 取得请求的参数字符串
${pageContext.request.requestURL} 取得请求的URL,但不包括请求之参数字符串
${pageContext.request.contextPath} 服务的web application 的名称
${pageContext.request.method} 取得HTTP 的方法(GET、POST)
${pageContext.request.protocol} 取得使用的协议(HTTP/1.1、HTTP/1.0)
${pageContext.request.remoteUser} 取得用户名称
${pageContext.request.remoteAddr } 取得用户的IP 地址
${pageContext.session.new} 判断session 是否为新的
${pageContext.session.id} 取得session 的ID
${pageContext.servletContext.serverInfo} 取得主机端的服务信息
怎么样,看了之后恍然大悟了没(*^__^*) 嘻嘻…… 我想至少也会让你对内置对象清晰了很多吧~ 这可是俺平生处子博文哦 ~~鼓励一下吧(*^__^*) 嘻嘻……
=================================================================================
补充一下EL表达式:
一、EL简介
1).语法结构
${expression}
2).[]与.存取器
EL 提供.和[]两种存取器来存取数据。
当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []。例如:
${user.My-Name}应当改为${user["My-Name"] }
如果要动态取值时,就可以用[]来做,而.无法做到动态取值。例如:
${sessionScope.user[data]}中data 是一个变量
3).变量
EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。
因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。
假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。
属性范围在EL中的名称
Page PageScope
Request RequestScope
Session SessionScope
Application ApplicationScope
4).运算符
1.算术运算符有五个:+、-、*或$、/或div、%或mod
2.关系运算符有六个:==或eq、!=或ne、<或lt、>或gt、<=或le、>=或ge
3.逻辑运算符有三个:&&或and、||或or、!或not
4.其它运算符有三个:Empty运算符、条件运算符、()运算符
例:${empty param.name}、${A?B:C}、${A*(B+C)}
5) EL函数(functions)
语法:ns:function( arg1, arg2, arg3 …. argN)
其中ns为前置名称(prefix),它必须和taglib 指令的前置名称一置
二、EL注意点:
1.
${logininfo.username}
这表明引用logininfo 对象的username 属性。我们可以通过“.”操作符引
用对象的属性,也可以用“[]”引用对象属性,如${logininfo[username]}
与${logininfo.username}达到了同样的效果。
“[]”引用方式的意义在于,如果属性名中出现了特殊字符,如“.”或者“-”,
此时就必须使用“[]”获取属性值以避免语法上的冲突(系统开发时应尽量避免
这一现象的出现)。
与之等同的JSP Script大致如下:
LoginInfo logininfo =
(LoginInfo)session.getAttribute(“logininfo”);
String username = logininfo.getUsername();
可以看到,EL大大节省了编码量。
这里引出的另外一个问题就是,EL 将从哪里找到logininfo 对象,对于
${logininfo.username}这样的表达式而言,首先会从当前页面中寻找之前是
否定义了变量logininfo,如果没有找到则依次到Request、Session、
Application 范围内寻找,直到找到为止。如果直到最后依然没有找到匹配的
变量,则返回null.
可以看出:
在EL中得到变量直接用变量名即可,它会自动调用get()方法
如果我们需要指定变量的寻找范围,可以在EL表达式中指定搜寻范围:
${pageScope.logininfo.username}
${requestScope.logininfo.username}
${sessionScope.logininfo.username}
${applicationScope.logininfo.username}
2.
<%@ page isELIgnored="true"%>
表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁
止.JSP2.0中默认的启用EL语言.
分享到:
相关推荐
### EL与JSP相关内置对象 #### 一、概述 EL(Expression Language)是一种简洁的数据存取语言,用于获取或设置JavaBean属性值、访问数组、List集合等数据。EL在JSP页面中的使用可以极大地简化JSP页面的编写工作,...
### JSP内置对象 1. **PageContext对象**: 提供了访问JSP页面所有作用域的统一接口,如获取请求、响应、session等对象。 2. **Request对象**: `HttpServletRequest`,代表客户端的HTTP请求,提供了获取请求参数、...
【JSP内置对象】是Java Server Pages(JSP)技术的核心组成部分,它们是JSP页面中预先定义并可以直接使用的对象,无需程序员显式创建。这些内置对象的存在极大地方便了开发人员处理各种Web应用程序的任务,提高了...
在JSP中,有一组预定义的内置对象,它们提供了方便的功能,使得开发更加高效。本篇文章将详细探讨JSP的内置对象及其使用方法。 一、请求对象(Request) HttpServletRequest接口代表客户端的请求,它是JSP中的一个...
总结来说,JSP内置对象和EL表达式的内置对象提供了访问请求、响应、会话、应用程序级数据以及处理异常的强大工具。EL对象的Map结构使得在EL表达式中以更简洁的方式访问和操作数据,提升了代码的可读性和维护性。理解...
通过这个例子,我们可以看到JSP内置对象在实际开发中的应用。理解并熟练掌握这些对象,对于提升JSP编程能力至关重要。对于初学者来说,多实践、多思考,逐步加深对这些内置对象的理解,将有助于更好地应对各种Web...
JSP 内置对象:request 对象 JSP 内置对象是 Web 容器加载的一组类,它不像一般的 Java 对象那样用 new 去获取实例,而是可以直接在 JSP 页面使用的对象。隐式对象的名称是 JSP 的保留字。JSP 使用隐式对象来访问...
**JSP内置对象详解** 在JavaServer Pages (JSP)技术中,内置对象是指由JSP引擎自动创建并提供给开发者使用的对象,无需通过new关键字显式实例化。这些对象为开发人员提供了便利,帮助他们简化Web应用的开发流程。本...
`pageContext`对象是一个非常重要的JSP内置对象,它提供了一种统一的方式来访问所有其他JSP内置对象,并且可以用来控制页面的输出、获取请求参数、设置和获取属性等操作。该对象实现了多个接口,如`...
### JSP内置对象作用域详解 #### 一、概述 JSP(Java Server Pages)作为一项服务器端技术,被广泛应用于动态网页开发中。在JSP页面中,开发者可以通过使用一系列预定义的对象来处理客户端请求并生成响应。这些...
综上所述,本JSP培训课件将全面涵盖以上知识点,帮助学习者深入理解JSP的使用,包括如何利用MVC模式组织代码,熟悉并运用JSP内置对象,创建和使用JavaBean,以及如何结合HTML和CSS构建美观的用户界面。通过学习,你...
EL支持四种作用域,它们对应于JSP中的四个内置对象: - pageContext:只在当前JSP页面内有效。 - request:在整个HTTP请求中有效,可以从请求转发到另一个页面。 - session:在整个HTTP会话中有效,直到会话过期或...
本作业的主题是使用JSP内置对象`session`来实现一个简单的购物车功能。购物车功能在电商网站中非常常见,它允许用户在浏览商品时将感兴趣的商品临时存储起来,以便稍后购买。 首先,`session`对象是HTTP协议无状态...
JSP内置对象是预定义的对象,无需显式声明即可在JSP页面中直接使用。实验中涉及到的内置对象主要有`request`、`session`和`application`: 1. `request`对象:代表HTTP请求,用于获取客户端发送的数据,如表单数据...
JSP Expression Language(EL)是JavaServer Pages(JSP)技术的一部分,它为JSP页面提供了一种简洁的方式来访问JavaBean或其他Java对象的属性。EL简化了在JSP页面中插入和操作Java对象的值,使得页面更加清晰,更...
JSP内置对象分为几大类别,包括输入/输出对象、作用域对象、通信对象以及其他对象。下面我们将详细讨论这些对象及其主要功能: 1. **输入/输出对象**: - **request对象**:代表客户端对网页的HTTP请求,实现了`...
总之,“即用即查——JSP函数与对象参考手册”是开发者解决JSP编程中遇到问题的宝贵资源,覆盖了从基础到高级的JSP概念,包括函数、内置对象、生命周期、EL以及标签的使用。通过深入理解和熟练运用这些知识点,...
在JSP中,有九个内置对象,它们是由Web容器自动创建并提供给开发者使用的,无需开发者手动实例化。这些内置对象使得JSP页面的编程更加方便,提高了开发效率。 1. **输出输入对象**: - **request对象**(javax....
在JavaServer Pages (JSP) 技术中,有九个内置对象,它们为开发者提供了直接访问服务器资源和处理请求的能力...在实际项目中,结合Servlet、EL表达式和JSTL标签库,这些内置对象可以构建出更加灵活和可维护的JSP页面。
4. **隐式对象**:提供了一系列内置的对象,方便访问JSP上下文中的各种资源。 **二、JSP EL的语法结构** 1. **表达式结构**: `${expression}` 是EL的基本语法形式,用于在JSP中插入计算后的值。 2. **属性访问**...