EL表达式与JSTL:隐含对象param与paramValues的使用

需积分: 9 19 下载量 37 浏览量 更新于2024-08-18 收藏 3.74MB PPT 举报
"这篇文档介绍了EL(Expression Language)表达式以及如何在JSTL标签库中使用它们,特别是与输入相关的隐含对象param和paramValues。EL是JSTL的一部分,起初仅在JSTL标签内使用,后来成为了JSP 2.0的标准,使得在JSP页面中直接使用EL变得可能。文档详细阐述了EL的语法结构,包括.和[]运算符的使用,并解释了它们在不同情况下的差异。" EL表达式是用于在Java服务器页面(JSP)中简便地访问和操作数据的语言。它起源于JSTL(JavaServer Pages Standard Tag Library)1.0,主要用于简化数据获取。EL表达式通常以`${}`包裹,例如 `${sessionScope.user.sex}`,这表示从Session范围中获取用户对象的性别属性。EL提供了`.`和`[]`两种运算符来访问对象的属性。`.`运算符用于简单的属性访问,而`[]`运算符则允许使用动态属性名或处理包含特殊字符的属性名。 `.`和`[]`运算符的使用有以下几点需要注意: 1. 如果属性名包含非字母或数字的特殊字符,如`-`,则必须使用`[]`。例如,正确的写法是 `${user["My-Name"]}`,而不是 `${user.My-Name}`。 2. 当需要根据变量来动态获取属性时,`[]`运算符也是必需的。比如 `${sessionScope.user[data]}`,这里的`data`变量可以指向`"sex"`或`"name"`,使得EL表达式能够根据`data`的值动态地访问`user`对象的不同属性。 EL表达式的其他特性包括: - 当`expr-a`的值为`null`时,`expr-a[expr-b]`会返回`null`。 - 若`expr-b`的值为`null`,同样返回`null`。 - 如果`expr-a`是一个`Map`类型,`expr-a[expr-b]`将根据`expr-b`的值作为键来获取`Map`中的值。 在处理用户输入时,`param`和`paramValues`是EL中的两个隐含对象。`param`用于获取单个请求参数的值,如 `${param.name}`,而`paramValues`则用于获取同一个参数名的多个值,例如在多选框提交场景中,可以使用 `${paramValues.name}` 获取一个数组。 在JSTL中,除了EL表达式,还可以结合使用其他标签库功能,如`<c:out>`标签用于安全地输出数据,防止跨站脚本攻击(XSS)。这些工具共同构成了处理Web应用中数据交互的强大工具集。