`
天使的羽翼
  • 浏览: 19063 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

EL和JSP中的细节

阅读更多
EL中的细节

1、 EL的隐式对象
作用域属性的Map:   pageScope,requestScope,sessionScope,applicationScope
请求参数的Map:    param,paramValues
请求首部的Map:     header,headerValues
上下文初始化参数(不是Servlet初始化参数!)的Map:initParam
cookie的Map:cookie
pageContext:唯一一个不是Map的隐式对象,它是pageContext对象的一个实际引用。

2、 requestScope不是请求对象
隐式的requestScope只是请求作用域属性的一个Map,而不是request对象本身!
例如:得到HTTP请求方法
Method is: ${request. method}   错啦,没有request隐式对象
Method is: ${requestScope. method}   错啦,确实有一个隐式对象requestScope,但是它不是请求对象本身。
Method is: ${reqeustContext. method}  对啦!可以通过pageContext来得到其他的一切~~  

3、 禁用EL
在DD中放置<el-ignored>元素
<jsp-config>
   <jsp-property-group>
          <url-pattern>*.jsp</url-pattern>
          <el -ignored >
               true
</el -ignored >
</jsp-property-group>
</jsp-config>

使用isELIgnored page指令属性
<%@ page isELIgnored=”true” %>
注:page指令优先于DD设置,如果在DD中的<el-ignored>设置与isELIgnored page指令属性有冲突,总是听指令的。

4、 initParam只能得到上下文初始化参数
servlet初始化参数是用<init-param>配置的,而上下文参数使用<context-param>配置,initParam不能得到servlet中的初始化参数。

5、 使用点号(.)操作符访问性质和映射值
     1第一个变量(点号左边的变量)可以是一个隐式对象,也可以是一个属性,点号右边可以是一个映射键(如果第一个变量是映射),也可以是一个bean性质(如果第一个变量是一个JavaBean属性。
2如果表达式中变量后面有一个点号,点号左边的变量必须是一个Map或一个bean
3点号右边必须是一个Map键或一个bean性质。
4pageContext隐式对象是一个bean,所有其他隐式对象都是Map。

6、[]比点号更强大
    1如果表达式中变量后有一个[],左边的变量则有更多选择,可以是Map、bean、List或是数组。
    2如果[]里是一个String直接量(即用引号引起的串),这可以是一个Map键,或是一个bean性质,还可以是List或数组中的索引。数组和List中的String索引会强制转换为int。
例如:
Servlet中:
     String[] pauling={“hello”,”you”,”no”,”cat”};
     request.setAttribute(“pauling”,pauling);
JSP中:
First num is: ${pauling[0]}
First num is: ${pauling[“0”]}
两种表达都是输出一样的结果。

    3在[]中,可以使用嵌套表达式,EL中都是表达式,可以任意嵌套,深度不限。

    4
Servlet中:
java.util.Map pauling=new java.util.HashMap();
pauling.put{“pig”,”big”};
pauling.put{“cat”,”fly”};”   
request.setAttribute(“pauling”,pauling);

JSP中:
you will see:  ${pauling[“pig”]}
----you will see:  big

如果你写成:
   you will see:  ${pauling[pig]}    就不对啦!!!
注:如果[]里的内容没有加引号,容器就会计算[]中的内容,搜索与改名字绑定的属性,并替换为这个属性的值(如果有一个同名的隐式对象,那么总是使用隐式对象)


JSP中的细节

1、 JSP中的隐式对象                  API
               out------------------------JspWriter
           request------------------------HttpServletRequest
          response------------------------HttpServletResponse
           session------------------------HttpSession
       application------------------------ServletContext
            config------------------------ServletConfig
         exception------------------------Throwable
        pageContext------------------------PageContext
              page------------------------Object  

2、 JSP的生命周期
JSP文件---servlet类源文件(.java)---编译成Java servlet类(.claa)--
加载这个servlet类,实例化并初始化,为每个请求建立一个单独的线程,并调用servlet的service()方法。

3、 禁用JSP中的脚本元素(scriptlet、java表达式或声明)
在DD中放一个<scripting-invalid>标记:
<jsp-config>
   <jsp-property-group>
          <url-pattern>*.jsp</url-pattern>
          <scripting-invalid>
               true
</scripting-invalid>
</jsp-property-group>
</jsp-config>


  
小测试

1、jspInit()方法可以使用哪些类型的对象?
A、 ServletConfig
B、 ServletContext
C、 JspServletConfig
D、 JspServletContext
E、 HttpServletRequest
F、 HttpServletResponse
答案:AB

2、<%@ page isELIgnored=”true”%>
它有什么作用?
A、 什么作用都没有,没有定义这个page指令
B、 如果有这个指令,JSP容器不会计算Web应用中所有JSP中的表达式语言代码
C、 JSP容器会把包含这个指令的JSP看作是良构的XML文件
D、 如果JSP中包含这个指令,JSP容器不应计算这个JSP中的表达式语言代码
E、 只有当DD中声明了一个<el-ignored>true</el-ignored>元素,而且其URL模式包含当前JSP时,这个page指令才会禁用
答案:D

3、哪些是合法的JSP隐式变量?
A、steam
B、context
C、exception
D、listener
E、application
答案:CE

4、 给定以下DD元素:
<jsp-property-group>
<url-patten>*.jsp</url-patten>
<el-ignored>true</el-ignored>
</jsp-property-group>
这个元素有什么作用?
A、 有指定扩展名映射的所有文件在JSP容器看来都是良构的的XML文件
B、 有指定扩展名映射的所有文件应该包含由JSP容器计算的表达式语言代码
C、 默认的,有指定扩展名映射的所有文件不应该包含由JSP容器计算的表达式语言代码
D、 没有任何作用,容器不理解这个标记
E、 尽管这个标记合法,但它是冗余的,因为这是容器的默认行为
答案:C

5、 下面表达哪些是合法的?
A、<%=(Math.random()+5)*2; %>
B、<%=String s=”foo”  %>
C、<%=new String[3]  %>
D、<%=new Count()  %>
E、<%=5>3 %>
答案CDE

待补充……  


3
5
分享到:
评论
5 楼 dengzhangtao 2011-04-04  
DD设置是 web.xml吧    为什么叫DD呢
4 楼 天使的羽翼 2011-03-16  
gohands 写道

8错,8错!

谢谢啦,哈哈
3 楼 gohands 2011-03-15  

8错,8错!
2 楼 天使的羽翼 2011-03-09  
javafound 写道
酷啊.

刚才排版排了眼睛都花了
1 楼 javafound 2011-03-09  
酷啊.

相关推荐

    jsp el表达式详解

    **JSP EL表达式详解** JavaServer Pages (JSP) Expression Language(EL)是JSP 2.0及更高版本中引入的一种轻量级、...阅读《JSP2.0-EL.pdf》这份文档将帮助你全面掌握EL的用法和细节,进一步提升你的JSP开发技能。

    Java代码中使用JSP/JSF表达式语言EL

    Java代码中使用JSP/JSF表达式语言(EL,Expression Language)是Web开发中的一个核心概念,它允许开发者在页面上动态地访问和操作JavaBean或其他数据源的数据。EL提供了一种简洁的方式来读取和设置Java对象的属性,...

    JSTL,EL表达式语法简介

    综上所述,JSTL和EL是JSP开发中非常重要的工具,它们提供了丰富的功能,使开发者能够更加专注于业务逻辑,而不是页面的呈现细节。通过熟练掌握JSTL和EL的使用,可以大大提高JSP页面的可读性和可维护性。提供的`JSTL...

    jsp最全笔记,jstl+El

    ### JSP与JSTL及EL表达式的综合解析 #### JSP概述 JSP(Java Server Pages)是一种基于Java技术的动态网页开发技术,它允许将动态内容...此外,结合JSTL和EL表达式,JSP页面可以更加简洁高效地实现复杂的Web应用功能。

    J2EE JSP-EL.ppt(453K)

    EL是JSP中增强可读性和简化代码的重要工具,它通过简化的语法和隐含对象提高了开发效率,使得开发者能更专注于业务逻辑而不是数据存取的细节。理解并熟练运用EL对于任何J2EE开发者来说都是至关重要的。

    教会你怎样用好el表达式

    总结来说,EL表达式是JSP开发中的强大工具,它简化了数据的获取和处理,提高了代码的整洁度,使得开发者能更专注于业务逻辑,而非繁琐的语法细节。熟练掌握EL表达式,无疑会提升开发效率,让JSP编程变得更加优雅。

    EL表达式所用的jar包.rar

    EL(Expression Language)表达式是JavaServer Pages(JSP)2.0及更高版本中引入的一种强大而简洁的脚本语言,用于访问JavaBeans组件的属性和方法。它简化了在JSP页面中获取和设置数据的过程,提高了代码的可读性...

    jsp应用开发详解 jsp电子书

    11. **JSP与JavaBean**:了解JavaBean的规范,如何在JSP中使用JavaBean来封装数据和业务逻辑,以及JSP中的`&lt;jsp:useBean&gt;`标签。 12. **数据库连接和操作**:学习如何使用JDBC进行数据库连接,执行SQL查询和更新,...

    EL源代码 java实现

    EL(Expression Language)是Java EE中的一个核心组件,主要用于在JSP、JSF等Web应用程序中简化数据访问和表达式处理。它允许开发者通过简洁的语法来访问和操作Java对象的属性,而无需编写大量的Java脚本或者JSP标签...

    js中如何引用EL表达式.txt

    在探讨“js中如何引用EL表达式”的主题时,我们首先需要理解EL(Expression ...这不仅要求开发者熟练掌握JSP、EL和JS的语法,还需要关注编码、安全性和浏览器兼容性等细节问题,以确保应用程序的稳定运行和用户体验。

    JSP&Servlet;相关的规范

    在JSP 2.0及以上版本中,JSP被设计为更加面向组件,鼓励使用标准的JavaServer Pages Standard Tag Library (JSTL)和Java Expression Language (EL)。 **2. Servlet规范** Servlet是Java平台上的服务器端应用程序...

    表达式与言EL和OGNL

    在Java EE中,EL主要用于JSP和JSF页面,使得在视图层可以方便地访问模型层的数据。 OGNL(Object-Graph Navigation Language),即对象图导航语言,是EL的一种实现,提供了更强大的功能。除了基本的属性访问和方法...

    JSP源码——jsp+servlet+javaBean实现MVC_jspmvc.zip

    在MVC模式中,JSP通常作为“View”层,负责渲染和展示数据。JSP页面可以包含静态HTML、EL(表达式语言)、JSTL(JavaServer Pages Standard Tag Library)标签以及嵌入的Java代码。 **2. Servlet** Servlet是Java EE...

    JSP设计(第三版)

    4. **EL(Expression Language)**:EL是JSP 2.0引入的一种简洁的表达式语言,用于访问JavaBeans属性和JSP作用域中的对象,简化了数据的输出。 5. **JSTL(JSP Standard Tag Library)**:JSTL是一套标准的标签库,...

    开发中常用jsp配置文件

    这表明文档将涵盖一些重要的JSP配置细节和技术要点,对于初学者和有经验的开发者来说都具有很高的参考价值。 ### 描述:“开发中常用jsp配置文件,大家可以下载看看!很有帮助的!” 这段描述进一步强调了这些JSP...

    使用EL和JSTL显示查询结果

    在JavaWeb开发中,EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)是两种非常重要的技术,它们极大地简化了视图层的编程,使得开发者可以从Servlet中传递数据到前端页面,并以优雅的方式...

    jsp动态网站设计项目教程 张兴科

    5. **EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)**:介绍EL作为简化JSP页面表达式的方法,以及JSTL提供的一系列标准标签库,如何提高代码的可读性和可维护性。 6. **MVC设计模式**...

    El表达式帮助文档

    EL的主要功能在于简化JSP页面中对对象及属性的操作方式,通过更加简洁的语法提高开发效率。任何符合Servlet 2.4 / JSP 2.0规范的服务器都能够直接支持EL技术的应用。 #### 二、EL语法介绍 ##### 1. EL的基本结构 ...

Global site tag (gtag.js) - Google Analytics