jsp表达式语言

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

表达式语言

jsp表达式语言(EL)

简介:

Sun Microsystems 在1997 年下半年推出了Servlet API,将它定位为CGI 开发人员使用的一种功能强大的工具,这些开发人员正在寻找比CGI(通用网关接口)编程更高效和轻便的优秀解决方案。但是,开发人员很快就发现Servlet API 有其自身的缺点,从代码的可维护性和可扩展性方面来看,该解决方案难以实施。在某种程度上,这种缺点促使团队开发一种允许在HTML 中嵌入Java 代码的解决方案— JavaServer Pages (JSP) 因此而出现。

不久以后,开发人员意识到将表达与商务逻辑混合在一起的复杂JSP 页不易于理解和维护。不能编写scriplet 的页面制作人员所面临的另一个问题是由于标准标记集而带来的JSP 限制。这些限制使得难点变成利用JSP 实施自定义标记的机制来创建JSP 自定义标记。JSP 标准标记库(JSTL) 是自定义标记库的集合,它将许多JSP 应用程序通用的核心功能封装为简单的标记。它不再需要使用JSP scriptlet和表达式,而使用表达式的更高级语法。它还实现了通用目的的功能,如迭代和条件化、数据管理格式化、XML 操作、数据库访问、国际化和对本地化信息敏感的格式化标记以及SQL 标记。JSTL 1.0 推出了EL 的概念,但只限于JSTL 标记。在JSP 2.0 中,您可以使用带模板文本的EL,甚至可以通过javax.servlet.jsp.el 获得编程方式的访问。

在我们了解JSTL 如何适应环境以及与JSTL 表达式语言相关的限制以后,我们来看JSP 2.0 的重要优点之一— JSP 表达式语言(EL)。我们将特别涉及到以下内容:

1、应用表达式语言的动力

表达式语言是JSP2.0的新特性,是从JavaScript脚本语言得到启发的一种语言,它借鉴了JavaScript多类型转换无关性的特点。在使用EL从scope中得到参数时可以自动转换类型,因此对于类型的限制更加宽松。

表达式语言可以将表示层简化,它允许我们使用更简洁,更易读的项。

EL不仅可以用来取代难以维护的java脚本或笨拙的标签。尤其重要的是,表达式语言支持下面的功能:

1>精确的访问存储对象:要输出“作用域变量”(使用setAttribute 方法存储在

PageContext、HttpServletReqest、HttpSession或ServletContext中的对象),我们可以直接使用${对象名}。

2>Bean属性的简略记法:如要输出访问作用域变量company的name属性(即

company.getName()方法的结果)我们可以直接使用${}。

3>对几个元素的简单访问:如要访问数组、List或Map集合里,我们使用${对象名[索

引]}。如果索引或键所采用的形式可以合法java变量名的要求,则Bean的点号记法可以和集合的括号记法互换。

4>对请求参数、Cookie和其他请求数据的简单访问:如果要访问标准的请求数据,

我们可以使用几个预定义的隐式对象。

5>条件性输出:在进行有选择地输出时,我们可以不必借助于Java脚本元素。取而

代之,我们可以使用${test?option1:option2}来完成这一功能。

6>自动类型转换:表达式语言移除了大多数类型转换的需求,可以省略很多将字符

串解析成数字代码。

7>空值取代错误消息:大多数情况下,没有响应的值或NullPointerException 异常都

会导致空字符串的出现,而非抛出异常。

2、JSP页面使用EL

在Jsp页面中,我们使用下面形式的调用表达式语言:

${expression}

这些EL元素可以出现在JSP页面中和JSP标签属性中,只要JSP标签的属性允许使用JSP表达式。如下所示:

  • Name:${表达式1}

  • Address:${表达式2}

在标签属性中使用表达式语言时,我们可与使用多分表达式(有可能与静态文本混合在一起),结果被强行拼接成字符串。如下所示:

注意,如果希望“${”出现在页面的输出中,在JSP页面中需要使用“\${”。如果希望在EL表达式中使用单引号或双引号,则须分别使“\’”和“\””。

下面是页面使用EL的典型例子,代码所示:

<%@page contentType="text/html;charset=gbk"isELIgnored = "false"%>

页面使用EL

EL表达式计算结果
\${3+2}${3+2}
\${3*2}${3*2}
\${3>2}${3>2}
\${!true }${!true }
\${true&&false }${true&&false }

3、JSP页面禁用EL

JSP2.0的页面默认是允许使用EL表达式,如果要在个别页面内禁用EL,可以将page 指令的isELIgnored属性设为true,如下所示:

<%@ page isELIgnored = “true” %>

注意,isELIgnored是JSP 2.0新引入的属性,不能在只支持JSP1.2或更早版本的服务器中使用它。因此我们不能使用这项技术让同一JSP页面不加修改地运行在新的和较老的服务器上。

这里有一中批量禁用EL的方式,我们可以在web.xml中使用标签批量禁用EL,代码片段如下:

相关文档
最新文档