javaweb编程课件第8章.ppt_第1页
javaweb编程课件第8章.ppt_第2页
javaweb编程课件第8章.ppt_第3页
javaweb编程课件第8章.ppt_第4页
javaweb编程课件第8章.ppt_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java Web 编程技术 第第8 8章章 使用表达式语言使用表达式语言 本章主要内容: 8.1 理解表达式语言 8.2 使用EL运算符 8.3 使用EL访问数据 8.4 在EL中使用函数 8.5 在JSP页面中禁用EL 8.6 小 结 8.1 理解表达式语言 v 8.1.1 表达式语言的调用 v 8.1.2 表达式语言的功能 v 8.1.3 表达式语言与JSP表达式的区别 在JSP 2.0的页面中,我们使用下面形式的元素调用表 达式语言: $expression EL可以出现在JSP页面的模板文本中,也可以出现在 JSP标签的属性中。 下面是在JSP模板文本中使用表达式: 客户名:$customer.custName Email地址:$customer.email 8.1.1 表达式语言的调用 下面是在JSP标准动作的属性中使用EL表达式: (1)提供了一组简单的运算符。表达式语言提供了一组简 单有效的运算符,通过这些运算符可以完成算术、关系、 逻辑、条件或空值检查运算。 (2)对作用域变量的方便访问。作用域变量是使用 setAttribute()方法存储在PageContext、 HttpServletRequest、HttpSession或ServletContext作 用域中的对象,可以简单地使用下面的形式访问: $userName 8.1.2 表达式语言的功能 (3)对JavaBeans对象访问的简单表示。在JSP页面中要 访问一个JavaBean对象customer的custName属性,需要 下面的语法: 而使用EL表达式,可以表示为: $customer.custName (4)对集合元素的简单访问。集合包括数组、List对象 、Map对象等,对这些对象的元素的访问可以使用下面 的简单形式: $variableindexOrKey (5)对请求参数、Cookie和其他请求数据的简单访问。 如要访问Accept请求头,可以使用header隐含变量,如 下所示: $header.Accept或$header“Accept“ (6)提供了在EL中使用Java函数的功能。EL中不能定义 和使用变量,也不能调用对象的方法,但可以通过标签 的形式使用Java语言定义的函数。 JSP表达式的使用格式为: 这里的expression为合法的Java表达式,它属于脚本语 言的代码。在expression中可以使用由脚本声明的变 量。 EL表达式的格式为: $expression 这里的expression是符合EL规范的表达式,并且不需要 包含在标签内的。在EL表达式不能使用脚本中声明的 变量。 8.1.3 表达式语言与JSP表达式的区别 使用传统的脚本语言,很容易在JSP中声明变量,使用 的标签为,例如: 这里声明了一个整型变量,接下来使用下面的JSP表达 式语句,这将输出变量count的值为100: The count value is : 而如果使用下面的语句,将返回一个空值,即用EL的 empty运算符测试结果为true。 The count value is: $count 在EL中不能定义变量,也不能使用脚本中声明的变量, 但它可以访问请求参数、作用域变量、JavaBeans以 及EL隐含变量等。 8.2.1 EL算术运算符 8.2.2 EL关系与逻辑运算符 8.2.3 条件运算符 8.2.4 empty运算符 8.2.5 属性与集合元素访问运算符 8.2 使用EL运算符 8.2.1 EL算术运算符 算术运 算符 说 明 示 例结果 +加$6.80 + -12-5.2 -减$15-510 *乘$2 * 3.141596.28318 /或div除$25 div 5 与 $25/5 5.0 %或 mod 取 余 $24 mod 5 与 $24 % 5 4 v 在EL表达式中还可以使用“e”在浮点数中表示幂运算,例如: v $1.5e6/1000000 的结果为 1.5; v $1e6 * 1 的结果为 1000000.0。 v 这些操作在执行时调用类中的方法,但是要注意操作结果的数 据类型。例如,定点数和浮点数的运算结果总是浮点数值。类 似地,低精度的值与高精度的值进行运算,如一个Integer的值 与一个BigInteger的值相加,总是得到一个高精度的值。 v 与数值一样,String对象上也可以使用算术运算符,只要 String对象能够转换为数值即可,例如: v $“16“ * 4 的结果为 64,字符串被转换成整数16; v $a div 4 的结果为 0.0,a没有定义,它的默认值为0; v $“a“ div 4 将产生编译错误,字符串“a”不能和数值运算 。 8.2.1 EL算术运算符 8.2.2 EL关系与逻辑运算符 8.2.3 条件运算符 8.2.4 empty运算符 8.2.5 属性与集合元素访问运算符 8.2 使用EL运算符 8.2.2 EL关系与逻辑运算符 关系运 算符 说明示 例结果 = 或 eq 相等$3=5或$3 eq 5 false != 或ne不相 等 $3!=5或$3 ne 5true 或gt大于$35或$3 gt 5false = 或ge 大于 等于 $3=5或$3 ge 5false 8.2.2 EL关系与逻辑运算符 逻辑运 算符 说明示 例结果 favoriteFruit.add(“apple“); favoriteFruit.add(“orange“); favoriteFruit.add(“banana“); request.setAttribute(“favoriteList“, favoriteFruit); % My favorite fruit is:$favoriteList 2 (3)如果attributeName对象是实现了Map接口的对象,则entryName为 键,相应的值通过Map对象的get(key)方法获得的,例如: capital = new HashMap(); capital.put(“England“,“伦敦“); capital.put (“China“,“北京“); capital.put (“Russia“,“莫斯科“); request.setAttribute(“capital“, capital); % The capital of China is:$capital“China“ The capital of Russia is:$capital.Russia 程序8.8 CollectServlet.java 程序8.9 collections.jsp v 在JSP页面中可以访问JSP隐含变量,如request、session 、application等。在EL表达式中也定义了一套自己的隐 含变量。使用EL可以直接访问这些隐含变量。 8.3.4 在EL中访问隐含变量 变量名说明 pageContext包含JSP常规隐 含对象的PageContext类型对象 param包含请求参数字符串的Map对象 paramValues包含请求参数字符串数组的Map对象 header包含请求头字符串的Map对象 headerValues包含请求头字符串数组的Map对象 initParam包含环境(context)参数的参数名和参数值的Map 对象 cookie匹配Cookie域和单个对象的Map对象 pageScope包含page作用域属性的Map对象 requestScope包含request作用域属性的Map对象 sessionScope包含session作用域属性的Map对象 applicationScope包含application作用域属性的Map对象 1. pageContext变量 v pageContext是PageContext类型的变量。PageContext类 依次拥有request、response、session、out和 servletContext属性,使用pageContext变量可以访问这 些属性的属性。 v 下面是一些例子: $pageContext.request.method /获得HTTP请求的方法,如 GET或POST。 $pageContext.request.queryString /获得请求的查询串 $pageContext.request.requestURL /获得请求的URL $pageContext.request.remoteAddr /获得请求的IP地址 $pageContext.session.id /获得会话的ID $pageContext.session.new /判断会话对象是否是新建的 $pageContext.servletContext.serverInfo /获得服务器的信息 上述EL是通过成员访问运算符访问对象的属性。在EL中不允 许调用对象的方法,所以下面的使用是错误的: $pageContext.request.getMethod() 然而,仍然可以使用下面的脚本表达式: 2. param和paramValues变量 v param和paramValues变量用来从ServletRequest中检索请 求参数值。param变量是调用给定参数名的 getParameter(String name)方法的结果,使用EL表示如 下: $ v 类似地,paramValues是使用getParameterValues(String name)方法返回给定名称的参数值的数组。要访问参数值 数组的第一个元素,可使用下面代码: $paramV0 v 上述代码也可以用下面两种形式表示: $paramV“0“ $paramV0 v 因为数组元素是按整数下标访问的,因此必须使用“” 运算符访问数组元素。下面两个表达式都会产生编译错误 : $paramV.0 $paramV.“0“ v 所以,EL在处理属性和集合的访问时与传统的Java语法并 不完全一样。 v 3. header和headerValues变量 v header和headerValues变量是从HTTP请求头中检索值,它 们的运行机制与param和paramValues类似。下面代码使用 EL显示了请求头host的值。 v $header.host或$header“host“ v 类似地,headerValues.host是一个数组,它的第一个元 素可使用下列表达式之一显示: v $headerValues.host0 v $headerValues.host“0“ v $headerValues.host0 v 4. cookie变量 在Servlet中向客户发送一个Cookie可以使用下面代码: Cookie cookie = new Cookie(“userName“,“Hacker“); response.addCookie(cookie); 要检索客户发给服务器的Cookie,应该使用下面代码: Cookie cookies = request.getCookies(); for(int i =0; i email 则可以使用下面的EL表达式得到参数email的值: $initParam.email 如果通过JSP脚本元素访问该Servlet上下文参数,应该使用 下面表达式: 6. pageScope、requestScope、sessionScope和 applicationScope变量 v 这几个隐含变量很容易理解,它们用来限定访问不同作用 域的属性。例如,下面代码在会话作用域中添加一个表示 商品价格的totalPrice属性,然后使用EL访问该属性值: $sessionScope.totalPrice 注意,访问应用作用域的属性应使用applicationScope变量 而不是使用pageContext变量。 v 下面的JSP页面演示了EL隐含变量的使用。 v 程序8.10 variable.jsp v 8.4.1 创建静态(static)方法 v 8.4.2 创建标签库描述文件 v 8.4.3 在JSP中访问EL函数 8.4 在EL中使用函数 v 在JSP页面中使用EL函数需要创建下面三个文件: (1)方法的类文件(*.java),它定义了在JSP中要使用的 Java方法。 (2)标签库描述文件(*.tld),它实现将每个Java方法与 函数名的映射。 (3)JSP文件(*.jsp),使用标签库URI以及函数名调用 Java方法。 8.4.1 创建静态(static)方法 v 开发EL函数首先要创建在JSP中要调用的Java方法。在下 面的例子中,创建了一个名为add(String x,String y)的 方法来计算传递的两个字符串参数的和。 v 程序8.11 Compute.java v 在创建EL函数时请记

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论