jsp表达式语言
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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表达式 | 计算结果 |
\${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中使用