`

servlet和jsp核心编程(第2版)第十六章 简化对Java代码的访问:jsp2.0表达式语言学习笔记

阅读更多
第十六章:简化对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}调用表达式语言,我们也可以使用
${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}
分享到:
评论

相关推荐

    [JSP&Servlet;学习笔记(第2版)]

    **JSP(Java Server Pages)与Servlet...这个**[JSP&Servlet学习笔记(第2版)]**会涵盖这些主题,并可能包括示例代码、最佳实践和常见问题解答,帮助读者全面掌握JSP和Servlet的使用技巧,进一步提升Java Web开发能力。

    jsp2.0 学习笔记+完整源码

    **JSP 2.0 学习笔记及完整源码详解** JSP 2.0(JavaServer Pages)是Java平台上的动态网页技术,它允许开发者在HTML、XML或其他标记语言文档中嵌入Java代码,以实现服务器端的动态内容生成。本资料包包括了JSP 2.0...

    Servlet &JSP学习笔记NetBeans源代码

    在这个"Servlet & JSP学习笔记NetBeans源代码"压缩包中,你将找到一系列与Servlet和JSP相关的示例代码,这些代码是基于NetBeans IDE编写的,并且是在Tomcat服务器上运行的。 Tomcat是一个开源的轻量级Web服务器和...

    JSP&Servlet学习笔记(第2版)_打印版

    根据提供的文件信息,标题为“JSP&Servlet学习笔记(第2版)_打印版”,描述指出文档经过空白边裁剪处理以便于打印。虽然提供的部分内文无法直接转化为明确的知识点,但我们可以根据标题和描述推测该文档的主要内容,...

    jsp&servlet;学习笔记_第2版_光盘(看评论酌情下载)

    学习笔记"及提供的源码,开发者可以全面了解JSP和Servlet的工作原理,学会如何创建动态Web应用,同时提升解决问题和实际开发的能力。结合实际项目练习,能够更好地将理论知识转化为实践经验,从而在Java Web开发领域...

    JSP网络编程学习笔记源代码 part2

    第三篇为“JSP技术基础”,主要讲述JSP的基本语法和内建对象及JSP和Servlet的集成,JavaBean和表达式语言;第四篇为“数据库访问技术”,主要讲述JDBC技术及JSP和Servlet如何通过JDBC访问数据库,以及如何改进数据库...

    jsp/servlet个人学习笔记

    **JSP(JavaServer Pages)/Servlet 知识详解** JSP 和 Servlet 是 ...以上就是关于 JSP 和 Servlet 的核心知识点,希望对你学习和理解这些技术有所帮助。通过深入学习和实践,你可以创建出高效、稳定的 Web 应用。

    JSP&Servlet学习笔记.pdf

    由于这部分内容是电子书中的学习笔记,电子书的内容并未直接给出,因此只能根据电子书的标题“JSP&Servlet学习笔记”和描述来推测可能涉及的知识点,而没有具体的电子书内容可以分析。如需进一步学习,建议查阅相关...

    Servlet&JSP;学习笔记源代码

    2. **JSP基本语法**:讲解了如何在JSP页面上插入静态内容、Java代码以及使用EL表达式来访问JavaBean属性。 3. **MVC模式**:可能会介绍如何使用Servlet和JSP实现Model-View-Controller架构,分离业务逻辑、数据模型...

    Head First Servlet & JSP

    本书以其独特的学习风格,深入浅出地介绍了Servlet和JSP(JavaServer Pages)这两项核心的Java Web开发技术。 Servlet是Java平台上的一个标准API,用于构建动态Web应用程序。它允许开发者通过Java代码来处理HTTP...

    林学良Jsp&Servlet学习笔记

    **JSP(Java Server Pages)与Servlet是Java Web开发中的两个核心技术,它们在构建动态网页和处理客户端请求方面起着至关重要的作用。** **JSP技术:** JSP是一种服务器端脚本语言,用于创建动态网页。它允许开发者...

    韩顺平笔记 java jsp servlet

    这组笔记集合了他在Java、JSP和Servlet方面的教学精华,虽然不包含全部内容,但仍然极具价值,能够帮助学习者深入理解和掌握这三个关键的技术。 首先,让我们探讨Java。Java是一种广泛使用的面向对象的编程语言,以...

    韩顺平servlet和jsp课堂笔记

    【标题】:“韩顺平servlet和jsp课堂笔记”涵盖了Web开发中的两个核心技术——Servlet和JSP(JavaServer Pages)的学习资料。韩顺平是一位知名的IT教育专家,他的课程通常深入浅出,适合初学者入门及进阶者提升。 ...

    新一代JSP网络编程笔记

    1. EL:表达式语言,用于简化JSP中的数据访问,可以方便地获取和设置JavaBean的属性。 2. JSTL:与EL配合使用,提供了更强大的控制结构和函数库,减少了脚本let的使用。 七、JSP开发最佳实践 1. 将业务逻辑移至...

    JSP Servlet 学习笔记源码

    EL简化了JSP页面中的数据访问,允许直接在JSP页面中表达式式获取和设置属性。JSTL是一套标准标签库,包含许多功能标签,如`fmt`用于格式化日期和数字,`c`用于条件判断和循环,`sql`处理数据库操作等,提高了代码的...

    Jsp_Servlet学习课堂笔记

    脚本元素分为声明、脚本let和表达式,分别用于声明变量、编写Java代码和输出数据。 2. **JSP生命周期**:JSP页面在首次请求时被转换为Servlet,然后编译,最后执行。这个过程包括翻译、初始化、服务和销毁四个阶段...

    JSP 2.0 完整笔记+源码

    **JSP 2.0 完整笔记+源码** JSP(JavaServer Pages)是Java平台上用于构建动态web应用...这份笔记和源码集合将帮助你系统地学习和掌握JSP 2.0的核心概念和实际运用,通过实践加深理解,从而成为一名熟练的JSP开发者。

    《Jsp&Servlet学习笔记 第二版》源码

    《Jsp&Servlet学习笔记 第二版》源码是一份宝贵的学习资源,它涵盖了Java Web开发中的核心组件——JSP(JavaServer Pages)和Servlet。这份源码集合旨在帮助开发者深入理解这两个技术,并通过实际的代码示例进行实践...

    JSP&Servlet;学习笔记 第二版 林信良

    **《JSP&Servlet学习笔记 第二版 林信良》:** 这本书是学习JSP和Servlet的优秀资源,作者林信良以通俗易懂的方式讲解了这两个技术的核心概念、工作原理和实际应用。书中可能涵盖了JSP的指令、动作、表达式和脚本...

    JSP动态网站开发实践教程(第2版)源代码

    《JSP动态网站开发实践教程(第2版)源代码》是学习JSP技术的宝贵资源,它提供了丰富的实例和实战经验,旨在帮助开发者深入理解JSP在构建动态网站中的应用。通过分析和实践这些源代码,我们可以掌握JSP的核心概念、...

Global site tag (gtag.js) - Google Analytics