- 浏览: 89513 次
文章分类
最新评论
第十六章:简化对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 780第十五章:servlet和JSP的集成,模型-视图-控制器构架 ... -
servlet和jsp核心编程(第2版)第十四章 JavaBean组件在JSP文档中的应用 学习笔记
2012-08-21 11:55 737第十四章 JavaBean组件在JSP文档中的应用 一、bea ... -
servlet和jsp核心编程(第2版)第十三章 在JSP页面中包含文件和applet学习笔记
2012-08-20 15:53 891第十三章 在JSP页面中包 ... -
servlet和jsp核心编程(第2版)第十二章page指令学习笔记
2012-08-19 17:00 800第十二章 控制所生成的servlet的结构:JSP page指 ... -
servlet和jsp核心编程(第2版)第十一章jsp脚本元素的调用学习笔记
2012-08-18 21:09 850第十一章 用JSP脚本元素 ... -
servlet和jsp核心编程(第2版)第十章jsp技术概述学习笔记
2012-08-18 10:37 723第十章jsp技术概述 学习笔记: 一servlet和jsp的区 ... -
servlet和jsp核心编程(第2版)第九章会话跟踪学习笔记
2012-08-17 17:30 931第九章 会话跟踪 核心 ... -
servlet和jsp核心编程(第2版)第八章cookie管理学习笔记
2012-08-08 12:27 882第八章 cookie管理 核心方法: 1.在创建cookie对 ... -
servlet和jsp核心编程(第2版)第七章服务器响应的生成:HTTP响应报头学习笔记
2012-08-06 17:45 783第七章:服务器响应的 ... -
servlet和jsp核心编程(第2版)第六章服务器响应的生成:HTTP状态代码学习笔记
2012-08-05 10:52 776第六章:服务器响应的生成:HTTP状态代码 核心方法: 1.在 ... -
servlet和jsp核心编程(第2版)第五章客户请求的处理:HTTP请求报头学习笔记
2012-08-02 21:36 733第五章客户请求的处理:HTTP请求报头 核心方法: 1.在使用 ... -
servlet和jsp核心编程(第2版)第四章客户请求的处理,表单数据学习笔记
2012-07-31 16:05 1264第四章学习笔记 客户请 ... -
servlet和jsp核心编程(第2版)第三章servlet基础学习笔记
2012-07-29 10:43 743第三章:servlet基础 核心方法: 1.使用HTML验证器 ...
相关推荐
**JSP(Java Server Pages)与Servlet...这个**[JSP&Servlet学习笔记(第2版)]**会涵盖这些主题,并可能包括示例代码、最佳实践和常见问题解答,帮助读者全面掌握JSP和Servlet的使用技巧,进一步提升Java Web开发能力。
**JSP 2.0 学习笔记及完整源码详解** JSP 2.0(JavaServer Pages)是Java平台上的动态网页技术,它允许开发者在HTML、XML或其他标记语言文档中嵌入Java代码,以实现服务器端的动态内容生成。本资料包包括了JSP 2.0...
在这个"Servlet & JSP学习笔记NetBeans源代码"压缩包中,你将找到一系列与Servlet和JSP相关的示例代码,这些代码是基于NetBeans IDE编写的,并且是在Tomcat服务器上运行的。 Tomcat是一个开源的轻量级Web服务器和...
根据提供的文件信息,标题为“JSP&Servlet学习笔记(第2版)_打印版”,描述指出文档经过空白边裁剪处理以便于打印。虽然提供的部分内文无法直接转化为明确的知识点,但我们可以根据标题和描述推测该文档的主要内容,...
学习笔记"及提供的源码,开发者可以全面了解JSP和Servlet的工作原理,学会如何创建动态Web应用,同时提升解决问题和实际开发的能力。结合实际项目练习,能够更好地将理论知识转化为实践经验,从而在Java Web开发领域...
第三篇为“JSP技术基础”,主要讲述JSP的基本语法和内建对象及JSP和Servlet的集成,JavaBean和表达式语言;第四篇为“数据库访问技术”,主要讲述JDBC技术及JSP和Servlet如何通过JDBC访问数据库,以及如何改进数据库...
**JSP(JavaServer Pages)/Servlet 知识详解** JSP 和 Servlet 是 ...以上就是关于 JSP 和 Servlet 的核心知识点,希望对你学习和理解这些技术有所帮助。通过深入学习和实践,你可以创建出高效、稳定的 Web 应用。
由于这部分内容是电子书中的学习笔记,电子书的内容并未直接给出,因此只能根据电子书的标题“JSP&Servlet学习笔记”和描述来推测可能涉及的知识点,而没有具体的电子书内容可以分析。如需进一步学习,建议查阅相关...
2. **JSP基本语法**:讲解了如何在JSP页面上插入静态内容、Java代码以及使用EL表达式来访问JavaBean属性。 3. **MVC模式**:可能会介绍如何使用Servlet和JSP实现Model-View-Controller架构,分离业务逻辑、数据模型...
本书以其独特的学习风格,深入浅出地介绍了Servlet和JSP(JavaServer Pages)这两项核心的Java Web开发技术。 Servlet是Java平台上的一个标准API,用于构建动态Web应用程序。它允许开发者通过Java代码来处理HTTP...
**JSP(Java Server Pages)与Servlet是Java Web开发中的两个核心技术,它们在构建动态网页和处理客户端请求方面起着至关重要的作用。** **JSP技术:** JSP是一种服务器端脚本语言,用于创建动态网页。它允许开发者...
这组笔记集合了他在Java、JSP和Servlet方面的教学精华,虽然不包含全部内容,但仍然极具价值,能够帮助学习者深入理解和掌握这三个关键的技术。 首先,让我们探讨Java。Java是一种广泛使用的面向对象的编程语言,以...
【标题】:“韩顺平servlet和jsp课堂笔记”涵盖了Web开发中的两个核心技术——Servlet和JSP(JavaServer Pages)的学习资料。韩顺平是一位知名的IT教育专家,他的课程通常深入浅出,适合初学者入门及进阶者提升。 ...
1. EL:表达式语言,用于简化JSP中的数据访问,可以方便地获取和设置JavaBean的属性。 2. JSTL:与EL配合使用,提供了更强大的控制结构和函数库,减少了脚本let的使用。 七、JSP开发最佳实践 1. 将业务逻辑移至...
EL简化了JSP页面中的数据访问,允许直接在JSP页面中表达式式获取和设置属性。JSTL是一套标准标签库,包含许多功能标签,如`fmt`用于格式化日期和数字,`c`用于条件判断和循环,`sql`处理数据库操作等,提高了代码的...
脚本元素分为声明、脚本let和表达式,分别用于声明变量、编写Java代码和输出数据。 2. **JSP生命周期**:JSP页面在首次请求时被转换为Servlet,然后编译,最后执行。这个过程包括翻译、初始化、服务和销毁四个阶段...
**JSP 2.0 完整笔记+源码** JSP(JavaServer Pages)是Java平台上用于构建动态web应用...这份笔记和源码集合将帮助你系统地学习和掌握JSP 2.0的核心概念和实际运用,通过实践加深理解,从而成为一名熟练的JSP开发者。
《Jsp&Servlet学习笔记 第二版》源码是一份宝贵的学习资源,它涵盖了Java Web开发中的核心组件——JSP(JavaServer Pages)和Servlet。这份源码集合旨在帮助开发者深入理解这两个技术,并通过实际的代码示例进行实践...
**《JSP&Servlet学习笔记 第二版 林信良》:** 这本书是学习JSP和Servlet的优秀资源,作者林信良以通俗易懂的方式讲解了这两个技术的核心概念、工作原理和实际应用。书中可能涵盖了JSP的指令、动作、表达式和脚本...
《JSP动态网站开发实践教程(第2版)源代码》是学习JSP技术的宝贵资源,它提供了丰富的实例和实战经验,旨在帮助开发者深入理解JSP在构建动态网站中的应用。通过分析和实践这些源代码,我们可以掌握JSP的核心概念、...