- 浏览: 85673 次
文章分类
最新评论
第十六章:简化对Java代码的访问:jsp2.0表达式语言
1.为了计算和输出存储在标准位置的java对象的值,JSP2.0引入一种简捷的语言。表达式语言(EL),另一个特性是用JSP语法。
2.<警告>JSP表达式语言不能用在只支持JSP1.2或更早版本的服务器中。
一、应用EL的驱动力
1.为什么要使用EL表达式,因为我们在MVC模式中,用JSP页面呈现结果,我们一般使用jsp:useBean,或是jsp:getProperty,但是如果属性是集合或另外的bean,那么子属性的访问需要用到复杂的java代码,这就需要我们使用EL表达式。
二、表达式语言的调用
1.在jsp2.0中,我们使用${expression}调用表达式语言,我们也可以使用
。
三、阻止表达式语言的求值
(一)停用整个Web应用中的表达式语言
1.如果在web.xml中引用的是servlet规范的2.3版本或更早的版本(即jsp1.2或更早的版本),则jsp2.0表达式语言自动在web应用中停用。
2.如果是2.4及其以上,则默认情况下应该激活表达式语言。
(二)停用多个JSP页面中的表达式语言
停用legacy目录下所有JSP页面的表达式语言。
(三)停用个别页面中的表示式语言
(四)停用个别表达式语言语句
1.在jsp1.2将${}用于输出,而不是表达式语句,则使用HTML字符实体,将$替换为相应的HTML字符实体(对应ISO 8859-1的值${36})。因此可将$#36;{blah}将会可移植地向用户显示,${blah}。但要注意,字符实体是被浏览器转换成$,不是由服务器完成。因此,这项技术只能用在向web浏览器输出html的情况下。
2.在jsp2.0中,如何停用${},通过转移。使用\${1+1}来表示${1+1}而不是表达式。
有关HTML字符实体的内容可参见 http://www.w3school.com.cn/html/html_entities.asp。
四、阻止标准脚本元素的使用
在web.xml中禁止使用传统脚本元素
五、访问作用域变量
1.什么是作用域变量?servlet将一些存储在HttpServletRequest,HttpSession,ServletContext,处于这些位置的对象称作“作用域变量”,我们可以将作用域变量存放在PageContext对象中,但由于servlet和JSP页面不共享PageContext对象,所以这样做没有任何好处,因此,作用域限于页面的变量仅限于同一个JSP页面之前存储的对象,也就是说PageContext的作用域仅为当前页面,不适合servlet存储的对象。比如:${customer.firstName}中的customer。
2.要输出作用域变量的值,我们只需在表达式语言元素中使用它的名字,${name},表示依次在PageContext、HttpServletRequest、HttpSession、ServletContext中查找名为name的属性。如果找到该属性,调用它的toString方法,如果没有找到,返回空字符串,注意不是null。因此${name}等同于
方法为
六、访问bean的属性。
1.如${customer.firstName},系统为了支持这种行为,必须执行反射动作,
2.
七、访问集合
1.
八、引用隐式对象
表达式语言可以用在任何JSP页面中,为了使得表达式语言的使用更有效率,相应规范定义了下面的隐式对象。
1.pageContext,该对象引用当前页面的PageContext,PageContext类依次拥有request,session,out和servletContext属性。
2.param和paramValues:访问基本的请求参数值或请求参数的数组${param.custID}
3.header和headerValues:访问HTTP请求报头的主要值以及全部值。${header.Accept} ${header["Accept-Encoding"]}后者只能使用数组的形式。
4.cookie,返回cookie对象。可以使用${cookie["userCookie"].value}相当于取出名为userCookie对象的属性值。
5.initParam,上下文初始化参数
6.pageScope,requestScope,sessionScope,applicationScope,限定查找范围。如果为${name},则依次在HttpServletRequest、HttpSession、ServletContext中查找名为name的属性,如果为${requestScope.name},则系统旨在HttpServletRequest中查找。
九、表达式语言中运算符的应用
1.<核心方法>应该将表达式语言的运算符用在面向表示逻辑(确定如何表达数据)的简单任务中,要避免在商业逻辑(创建并处理数据)中使用这些运算符,相反,应该将商业逻辑放在常规的java类中,然后从启动MVC过程的servlet中调用这些代码。
[size=large]十、表达式条件求值
1[/size].JSP2.0并不提供丰富的条件求值功能,这项功能由JSP标准标签库(JSTL)的c:if和c:choose标签。但也提供基本的语句
1.为了计算和输出存储在标准位置的java对象的值,JSP2.0引入一种简捷的语言。表达式语言(EL),另一个特性是用JSP语法。
2.<警告>JSP表达式语言不能用在只支持JSP1.2或更早版本的服务器中。
一、应用EL的驱动力
1.为什么要使用EL表达式,因为我们在MVC模式中,用JSP页面呈现结果,我们一般使用jsp:useBean,或是jsp:getProperty,但是如果属性是集合或另外的bean,那么子属性的访问需要用到复杂的java代码,这就需要我们使用EL表达式。
二、表达式语言的调用
1.在jsp2.0中,我们使用${expression}调用表达式语言,我们也可以使用
${expression1}blah${expression2}来实现字符串的连接
。
三、阻止表达式语言的求值
(一)停用整个Web应用中的表达式语言
1.如果在web.xml中引用的是servlet规范的2.3版本或更早的版本(即jsp1.2或更早的版本),则jsp2.0表达式语言自动在web应用中停用。
2.如果是2.4及其以上,则默认情况下应该激活表达式语言。
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> </web-app>这里就采用servlet规范2.5。
(二)停用多个JSP页面中的表达式语言
<jsp-property-group> <url-pattern>/legacy/*.jsp</url-pattern> <el-ignored>true</el-ignored> </jsp-property-group>
停用legacy目录下所有JSP页面的表达式语言。
(三)停用个别页面中的表示式语言
<%@page isELEnabled = "false"%>用在jsp1.2版本中。
(四)停用个别表达式语言语句
1.在jsp1.2将${}用于输出,而不是表达式语句,则使用HTML字符实体,将$替换为相应的HTML字符实体(对应ISO 8859-1的值${36})。因此可将$#36;{blah}将会可移植地向用户显示,${blah}。但要注意,字符实体是被浏览器转换成$,不是由服务器完成。因此,这项技术只能用在向web浏览器输出html的情况下。
2.在jsp2.0中,如何停用${},通过转移。使用\${1+1}来表示${1+1}而不是表达式。
有关HTML字符实体的内容可参见 http://www.w3school.com.cn/html/html_entities.asp。
四、阻止标准脚本元素的使用
在web.xml中禁止使用传统脚本元素
<jsp-property-group> <url-pattern>/legacy/*.jsp</url-pattern> <scription-invalid>true</scription-invalid> </jsp-property-group>
五、访问作用域变量
1.什么是作用域变量?servlet将一些存储在HttpServletRequest,HttpSession,ServletContext,处于这些位置的对象称作“作用域变量”,我们可以将作用域变量存放在PageContext对象中,但由于servlet和JSP页面不共享PageContext对象,所以这样做没有任何好处,因此,作用域限于页面的变量仅限于同一个JSP页面之前存储的对象,也就是说PageContext的作用域仅为当前页面,不适合servlet存储的对象。比如:${customer.firstName}中的customer。
2.要输出作用域变量的值,我们只需在表达式语言元素中使用它的名字,${name},表示依次在PageContext、HttpServletRequest、HttpSession、ServletContext中查找名为name的属性。如果找到该属性,调用它的toString方法,如果没有找到,返回空字符串,注意不是null。因此${name}等同于
<%=pageContext.findAttribute("name")%>该findAttribute
方法为
引用
:Object findAttribute(String name) 寻找在所有范围中属性名称为name 的属性对象。
六、访问bean的属性。
1.如${customer.firstName},系统为了支持这种行为,必须执行反射动作,
${customer.firstName}等同于
<%@page import ="coreservlets.NameBean"%><%NameBean person = (NameBean)pageContext.findAttribute("customer");%>< %=person.getFirstName()%>或者等同于
<jsp:useBean id = "customer" type = "coreservlets.NameBean" scope = "request,session,or application"/><jsp:getProperty name = "customer " property = "firstName"/>
2.
${name.property}等同于
${name["property"]}后者property可以为变量,而前者必须是字面值。
七、访问集合
1.
${attributeName[entryName]},无论作用域变量attributeName指向数组,List或Map
八、引用隐式对象
表达式语言可以用在任何JSP页面中,为了使得表达式语言的使用更有效率,相应规范定义了下面的隐式对象。
1.pageContext,该对象引用当前页面的PageContext,PageContext类依次拥有request,session,out和servletContext属性。
2.param和paramValues:访问基本的请求参数值或请求参数的数组${param.custID}
3.header和headerValues:访问HTTP请求报头的主要值以及全部值。${header.Accept} ${header["Accept-Encoding"]}后者只能使用数组的形式。
4.cookie,返回cookie对象。可以使用${cookie["userCookie"].value}相当于取出名为userCookie对象的属性值。
5.initParam,上下文初始化参数
6.pageScope,requestScope,sessionScope,applicationScope,限定查找范围。如果为${name},则依次在HttpServletRequest、HttpSession、ServletContext中查找名为name的属性,如果为${requestScope.name},则系统旨在HttpServletRequest中查找。
九、表达式语言中运算符的应用
1.<核心方法>应该将表达式语言的运算符用在面向表示逻辑(确定如何表达数据)的简单任务中,要避免在商业逻辑(创建并处理数据)中使用这些运算符,相反,应该将商业逻辑放在常规的java类中,然后从启动MVC过程的servlet中调用这些代码。
[size=large]十、表达式条件求值
1[/size].JSP2.0并不提供丰富的条件求值功能,这项功能由JSP标准标签库(JSTL)的c:if和c:choose标签。但也提供基本的语句
${test?expression1:expression2}
发表评论
-
servlet和jsp核心编程(第2版)第十五章servlet和JSP的集成,模型-视图-控制器构架
2012-08-23 14:59 738第十五章:servlet和JSP的集成,模型-视图-控制器构架 ... -
servlet和jsp核心编程(第2版)第十四章 JavaBean组件在JSP文档中的应用 学习笔记
2012-08-21 11:55 702第十四章 JavaBean组件在JSP文档中的应用 一、bea ... -
servlet和jsp核心编程(第2版)第十三章 在JSP页面中包含文件和applet学习笔记
2012-08-20 15:53 862第十三章 在JSP页面中包 ... -
servlet和jsp核心编程(第2版)第十二章page指令学习笔记
2012-08-19 17:00 755第十二章 控制所生成的servlet的结构:JSP page指 ... -
servlet和jsp核心编程(第2版)第十一章jsp脚本元素的调用学习笔记
2012-08-18 21:09 815第十一章 用JSP脚本元素 ... -
servlet和jsp核心编程(第2版)第十章jsp技术概述学习笔记
2012-08-18 10:37 687第十章jsp技术概述 学习笔记: 一servlet和jsp的区 ... -
servlet和jsp核心编程(第2版)第九章会话跟踪学习笔记
2012-08-17 17:30 893第九章 会话跟踪 核心 ... -
servlet和jsp核心编程(第2版)第八章cookie管理学习笔记
2012-08-08 12:27 842第八章 cookie管理 核心方法: 1.在创建cookie对 ... -
servlet和jsp核心编程(第2版)第七章服务器响应的生成:HTTP响应报头学习笔记
2012-08-06 17:45 728第七章:服务器响应的 ... -
servlet和jsp核心编程(第2版)第六章服务器响应的生成:HTTP状态代码学习笔记
2012-08-05 10:52 736第六章:服务器响应的生成:HTTP状态代码 核心方法: 1.在 ... -
servlet和jsp核心编程(第2版)第五章客户请求的处理:HTTP请求报头学习笔记
2012-08-02 21:36 701第五章客户请求的处理:HTTP请求报头 核心方法: 1.在使用 ... -
servlet和jsp核心编程(第2版)第四章客户请求的处理,表单数据学习笔记
2012-07-31 16:05 1235第四章学习笔记 客户请 ... -
servlet和jsp核心编程(第2版)第三章servlet基础学习笔记
2012-07-29 10:43 707第三章:servlet基础 核心方法: 1.使用HTML验证器 ...
相关推荐
第16章 简化对java代码的访问:jsp 2.0表达式语言 16.1 应用el的驱动力 16.2 表达式语言的调用 16.3 阻止表达式语言的求值 16.4 阻止标准脚本元素的使用 16.5 访问作用域变量 16.6 访问bean的属性 ...
Servlet与JSP核心编程第二版 PDF文件 高清,内容通俗易懂.
Servlet与JSP核心编程(第2卷 第2版)
Servlet与JSP核心编程第二版5Servlet与JSP核心编程第二版5Servlet与JSP核心编程第二版5
Servlet与JSP核心编程:综合介绍Servlet与JSP
Servlet与JSP核心编程(第二版),你是不是要学最新版本(J2EE1.4)的Servlet和 SP?这本书能让你如虎添翼。你将能很好地掌握Servlet和JSP
Servlet与JSP核心编程第二版代码
Servlet 与 JSP 核心编程(第2版)(含源代码版) Servlet 与 JSP 核心编程(第2版)(含源代码版)
《Servlet与JSP核心编程(第2卷 第2版)》在第l卷的基础上,广泛涉及自定义标签库、过滤器、声明式安全、JSTL和Struts等主题,并沿袭深受读者喜爱的写作风格,通过完整、有效、资料丰富的程序来演绎目前最流行的技术和...
《Servlet与JSP核心编程》由浅入深,全面而深入地介绍了servlet和jsp技术。本书重点介绍核心技术,同时对相关的内容,如web服务器的配置、安装和应用,数据库的安装和配置等都做了详细明了的介绍。本书的例子简练...
本书全面深入地介绍了servlet和JSP技术。本书重点介绍核心技术, 同时对相关的内容。对于初学者,非常适用。本次提供下载是本书配的源代码
Servlet与JSP核心编程(第2版).pdf
Servlet与JSP核心编程(第2版),与大家分享JSP 开发技术
本书由Marty Hall,Larry Brown著 张学良译 清华大学出版社出版 原书有47M由于上传文件大小限制分为3部分,本人不是黑人,仅仅在最后一个部分才收取4分资源分
Servlet与JSP核心编程第二版第一卷英文版,Core Servlets and JavaServer Pages(Volume.1 .2nd.Edition),自己制作的,中英文对照着看。
《Servlet与JSP核心编程》(第2版)叙述详尽,条理清晰。对于初学者来说是一本不可多得的入门书籍,经验丰富的Servelet和JSP开发人员也可以通过阅读《Servlet与JSP核心编程》(第2版)得到巩固和提高。
servlet与JSP核心编程,这本书我看了,自己做的目录,是高清非扫描版
Servlet与JSP核心编程第二版(含书签)
Servlet与JSP核心编程(第2版第1卷、第2卷带书签),java web编程必备基础知识。2本书放一起,方面大家下载学习。
《Servlet与JSP核心编程(第2卷 第2版)》