EL表达式与JSTL标签库详解

需积分: 16 0 下载量 29 浏览量 更新于2024-08-05 收藏 13KB MD 举报
"EL表达式和JSTL标签库笔记" EL(Expression Language)表达式是Java Web开发中用于简化页面数据访问的一种强大的语法,它主要用于数据的输出和基本的运算。JSTL(JavaServer Pages Standard Tag Library)标签库则提供了一系列的标签,帮助开发者在JSP页面中执行常见任务,如循环、条件判断、XML处理等,以减少页面上的Java脚本代码。 #### EL表达式 1. **EL表达式的作用**:EL表达式主要用于替代JSP页面中的脚本表达式,用于从四大域对象(pageContext、request、session、application)中获取并输出数据。这使得页面更加简洁,易于阅读和维护。 2. **EL表达式的特点**:当EL表达式遇到null值时,它会输出一个空字符串,而传统的JSP表达式会输出"null"字符串。 3. **搜索域的顺序**:EL表达式在查找变量时遵循特定的顺序,即`pageContext` -> `request` -> `session` -> `application`。这意味着它首先会在局部范围内查找变量,如果找不到,会逐渐向更大的范围扩展。 4. **EL表达式的输出**: - `${p}`:输出对象`p`的地址。 - `${p.name}`:输出`p`对象的`name`属性的值。 - `${p.phones}`:输出`phones`数组的地址。 - `${p.phones[1]}`:输出数组中索引为1的元素。 - `${p.cities}`:输出`cities`数组的内容,如`[v1, v2, v3]`。 - `${p.cities[1]}`:输出数组第二个元素`v2`。 - `${p.map}`:输出`map`对象的内容,如`{key=value, key2=value2}`。 - `${p.map['key']}`:通过中括号模式获取键为`key`的值。 - `${p.map.key}`:通过点号模式获取键为`key`的值。 5. **EL表达式的运算**: - **关系运算**:例如`${12 == 12}` 和 `${12 eq 12}` 都表示相等。 - **逻辑运算**:例如`${12 != 12}` 或 `${12 ne 12}` 表示不等。 - **算术运算**:支持基本的加减乘除操作,如`${5 + 3}`。 - **empty运算**:用于检查值是否为空或空集合,如`${empty p}`。 #### EL的11个隐含对象 除了JSP的九大内置对象外,EL还提供了11个隐含对象: 1. `pageContext`:提供对整个页面上下文的访问,可以获取其他八大内置对象。 2. `pageScope`:提供对pageContext域的访问,类型为`Map<String, Object>`。 3. `requestScope`、`sessionScope`、`applicationScope`:分别对应请求、会话和应用域的映射。 4. `param` 和 `paramValues`:用于获取请求参数。 5. `header` 和 `headerValues`:获取HTTP头信息。 6. `initParam`:获取servlet初始化参数。 7. `cookie`:访问HTTP请求中的cookie。 8. `page`:引用当前的JSP页面实例。 9. `out`:引用JSP的`javax.servlet.jsp.JspWriter`对象,用于输出内容。 10. `exception`:在错误处理中,引用了捕获的异常对象。 11. `config`:引用了servlet配置对象`javax.servlet.ServletConfig`。 #### JSTL标签库 JSTL标签库包括几个核心标签库,如Core、XML、JDBC、Functions等。其中,Core库提供了诸如迭代、条件判断、URL处理等功能,显著减少了JSP页面中的Java代码。例如: - `<c:forEach>`:用于遍历集合。 - `<c:if>` 和 `<c:choose>`:实现条件判断。 - `<c:set>`:设置变量。 - `<c:remove>`:移除域中的变量。 JSTL的使用使得JSP页面更符合MVC模式,提高了代码的可读性和可维护性。结合EL表达式,开发者可以创建出更加高效和简洁的Web应用。