EL表达式及JSTL标准标签
在探讨“EL表达式及JSTL标准标签”的过程中,我们深入分析了这些技术在Java Server Pages(JSP)中的应用及其对Web开发的影响。以下是对该主题的详细阐述: ### 1. EL表达式(Expression Language) EL表达式是Java Server Pages(JSP)的一种特性,它允许开发者在JSP页面中直接访问JavaBeans对象的属性以及执行简单的运算。通过EL表达式,开发者可以避免在JSP页面中嵌入复杂的Java代码,从而提高代码的可读性和维护性。 #### 使用场景 1. **直接访问属性**:例如,若有一个`UserBean`对象存储在请求范围内,其包含一个`userName`属性,可以直接使用`${userBean.userName}`来访问这个属性。 2. **逻辑判断**:EL表达式也支持条件判断,如`${userBean.age > 20 && userBean.age < 30}`,用于判断年龄是否在20到30岁之间。 3. **特殊变量**:EL提供了一些预定义的特殊变量,如`pageScope`, `requestScope`, `sessionScope`, `applicationScope`,它们分别代表当前页面、请求、会话和应用程序的范围。这使得开发者可以方便地访问不同作用域内的对象。 ### 2. JSTL标准标签库 JSTL(JavaServer Pages Standard Tag Library)是一组用于简化JSP页面开发的标准标签库。它提供了多种功能标签,如流程控制、循环、条件判断、数据库操作等,极大地提高了JSP页面的开发效率和代码的可读性。 #### 常见标签 1. **数据输出与格式化**:如`<c:out>`用于输出数据,支持XML转义和默认值设定;`<fmt:formatNumber>`用于数字格式化。 2. **流程控制**:如`<c:if>`用于条件判断,`<c:choose>`, `<c:when>`, `<c:otherwise>`用于多条件选择。 3. **循环**:`<c:forEach>`和`<c:forTokens>`用于循环遍历集合或数组。 4. **URL重写和导入资源**:`<c:url>`和`<c:import>`用于处理URL和导入外部资源。 5. **数据库操作**:`<sql:query>`和`<sql:update>`用于执行SQL查询和更新操作。 6. **国际化与本地化**:`<fmt:message>`用于输出本地化的消息,`<fmt:bundle>`用于设置消息资源束。 7. **XML处理**:`<x:out>`用于输出XML数据。 #### 示例代码 ```jsp <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <c:out value="${user.userName}"/> <c:if test="${user.age > 18}"> 成年人 </c:if> <c:forEach var="item" items="${list}"> ${item.name} </c:forEach> ``` 以上代码展示了如何使用JSTL中的`<c:out>`, `<c:if>`, 和`<c:forEach>`标签进行数据输出、条件判断和循环处理。 ### 结论 EL表达式和JSTL标准标签库是JSP开发者不可或缺的工具,它们不仅简化了JSP页面的开发过程,还提高了代码的可维护性和可读性。通过合理运用这些技术,开发者可以构建出更加高效、灵活和安全的Web应用程序。
注:在一个jsp中一定要注意
<%@ page isELIgnored="true|false" %>
1,可以访问一个简单的参数
userName是一个参数
${userName}
2, 访问一个嵌套的参数
${userBean.userName}
3, 可以是一个表达式
${userBean.age>0}
${userBean.age>20 && userBean.age<10}
4, 隐含对象
1) pageContext jsp页面的上下文,它提供了访问以下对象的方法
a, Servlet Context,Servlet的上下文信息
b, Session 客户端的session对象
c, request
d, response
2) param 把请求中的参数名和单个值进行映射
3) paramValues 把请求中的参数名和一个array值进行映射
4) cookie 把请求中的cookie名和单个值进行映射
表达式编程举例:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset:gb2312" language="java" %>
<jsp:useBean id="user" class="com.iss.ch1.TestBean" scope="request">
<jsp:setProperty name="user" property="*" />
</jsp:useBean>
<html>
<head><title>表达式语言举例</title>
<body>
姓名:${user.userName}<br>
密码:${user.password}<br>
年龄:${user.age}<br>
<hr>
姓名:${param.userName}<br>
密码:${param.password}<br>
年龄:${param.age}<br>
<hr>
姓名:${param['userName']}<br>
密码:${param['password']}<br>
年龄:${param['age']}<br>
<hr>
标准标签库(JSTL)
JSTL包含了和以下操作相关的标签
常用标签 <c:out> ,<c:set>
条件标签 <c:if>, <c:choose> <c:when> <c:otherwise>
url标签 <c;import>
xml标签 <xml:out>
国际化输出标签 <fmt:timeZone>
SQL标签 : <sql:query>
1, 一般标签;
<c:out> <c:set> <c:remove> <c:catch>
1) 把计算的结果输出
a <c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"]/>
b <c:out value="value" [escapeXml="{true|false}"]> body </c:out>
剩余18页未读,继续阅读
- lovingkid2014-03-03还不错,查询方便很多
- hefangrong02202013-01-05正则表达式我比较喜欢用,它无论是在js上还是在java上都非常的好用,处理问题很简单,效率也高……
- adfadfsd2012-02-01正则表达式老是记不住,之前搞struts1老是报错,这下子终于搞定了,非常感谢。
- 粉丝: 1
- 资源: 46
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 自己写的一个很小的工具,用于替换文件的扩展名 文件扩展名匹配的才会被替换,如果不指定原始扩展名,将修改所有文件的扩展名为新扩展名 如果新扩展名为空,则替换后文件将没有扩展名
- nginx整合lua脚本demo
- 欧标TYPE 2桩端充电枪
- (22782460)单片机设计(详细教程MSP430.zip
- UE-ORCA.zip
- (11696858)条形码生成打印
- 个人使用资源,请勿下载使用
- (180014056)pycairo-1.21.0-cp37-cp37m-win-amd64.whl.rar
- (3268844)3G无线基本知识.pdf
- 捷米特JM-PN-EIP(Profinet转Ethernet-IP)应用案例.docx