JSP标准模板库(下)入门教程
目录
1、[JSP标签库简介](#jsp标签库简介)
2、[JSTL核心标签库](#jstl核心标签库)
[表达式语言 (EL)](#表达式语言el)
[<c:out>标签](#c:out标签)
[<c:set>标签](#c:set标签)
[<c:if>标签](#c:if标签)
[<c:choose>、<c:when>和<c:otherwise>标签](#c:choose、c:when和c:otherwise标签)
[<c:forEach>标签](#c:forEach标签)
[<c:forTokens>标签](#c:forTokens标签)
[<c:url>标签](#c:url标签)
[<c:param>标签](#c:param标签)
[<c:redirect>标签](#c:redirect标签)
3、[JSTL格式化标签库](#jstl格式化标签库)
[<fmt:formatNumber>标签](#fmt:formatnumber标签)
[<fmt:parseNumber>标签](#fmt:parsenumber标签)
[<fmt:formatDate>标签](#fmt:formatdate标签)
[<fmt:parseDate>标签](#fmt:parsedate标签)
[<fmt:timeZone>标签](#fmt:timezone标签)
[<fmt:setLocale>标签](#fmt:setlocale标签)
4、[JSTL函数标签库](#jstl函数标签库)
[常用函数](#常用函数)
5、[常见问题与解答](#常见问题与解答)
[问题1:为什么在JSP中使用EL表达式时,有时会出现“PropertyNotFoundException”?](#问题1:为什么在jsp中使用el表达式时,有时会出现propertynotfoundexception?)
[问题2:如何在JSTL中进行循环遍历?](#问题2:如何在jstl中进行循环遍历?)
JSP标签库简介
JSP标准标签库(JSTL, JavaServer Pages Standard Tag Library)是一个实现Web应用程序中常见功能的自定义标签库,它提供了一组用于处理数据、控制页面逻辑和格式化输出的标签,使用JSTL可以减少JSP页面中的Java代码量,提高代码可读性和维护性。
JSTL核心标签库
表达式语言 (EL)
表达式语言(Expression Language, EL)是一种简化的数据访问和操作语法,用于在JSP页面中读取和设置数据,EL表达式以${}
包围,例如${user.name}
表示获取名为user
的对象的name
属性。
<c:out>标签
<c:out>
标签用于在JSP页面中安全地输出变量值,它可以自动转义HTML特殊字符,防止XSS攻击。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> ... <c:out value="${user.name}" />
<c:set>标签
<c:set>
标签用于将值赋给一个范围变量或属性,可以指定作用域为page
、request
、session
或application
。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> ... <c:set var="username" value="John Doe" scope="page" />
<c:if>标签
<c:if>
标签用于在JSP页面中进行条件判断,类似于Java中的if
语句。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> ... <c:if test="${user.age > 18}"> 成年用户 </c:if>
<c:choose>、<c:when>和<c:otherwise>标签
这三个标签共同实现了类似于Java中的switch-case
语句的功能。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> ... <c:choose> <c:when test="${user.age < 18}"> 未成年用户 </c:when> <c:otherwise> 成年用户 </c:otherwise> </c:choose>
<c:forEach>标签
<c:forEach>
标签用于在JSP页面中遍历集合,类似于Java中的for
循环。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> ... <c:forEach items="${users}" var="user"> ${user.name} </c:forEach>
<c:forTokens>标签
<c:forTokens>
标签用于遍历字符串中的单词,类似于Java中的StringTokenizer
类。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> ... <c:forTokens items="apple,banana,orange" delims="," var="fruit"> ${fruit} </c:forTokens>
<c:url>标签
<c:url>
标签用于生成URL,可以指定查询参数和作用域。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> ... <a href="<c:url value='/index.jsp' />">首页</a>
<c:param>标签
<c:param>
标签用于在URL中添加查询参数,通常与<c:url>
标签一起使用。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> ... <a href="<c:url value='/search.jsp' ><c:param name='keyword' value='${query}' /></c:url>">搜索</a>
<c:redirect>标签
<c:redirect>
标签用于重定向到另一个页面,相当于Java中的response.sendRedirect()
方法。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> ... <c:redirect url="/login.jsp" />
JSTL格式化标签库
<fmt:formatNumber>标签
<fmt:formatNumber>
标签用于格式化数字,可以指定小数位数、整数部分最小位数等。
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> ... <fmt:formatNumber value="${price}" pattern=",.00" />
<fmt:parseNumber>标签
<fmt:parseNumber>
标签用于将字符串解析为数字,可以指定整数或浮点数。
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> ... <fmt:parseNumber value="1234.56" type="number" var="num" />
<fmt:formatDate>标签
<fmt:formatDate>
标签用于格式化日期,可以指定日期格式。
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> ... <fmt:formatDate value="${now}" pattern="yyyy-MM-dd HH:mm:ss" />
<fmt:parseDate>标签
<fmt:parseDate>
标签用于将字符串解析为日期,可以指定日期格式。
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> ... <fmt:parseDate value="2022-01-01 00:00:00" pattern="yyyy-MM-dd HH:mm:ss" var="date" />
<fmt:timeZone>标签
<fmt:timeZone>
标签用于设置时区,可以指定时区ID。
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> ... <fmt:timeZone value="GMT" var="timezone" />
<fmt:setLocale>标签
<fmt:setLocale>
标签用于设置地区,可以指定地区代码。
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> ... <fmt:setLocale value="en_US" scope="session" />
JSTL函数标签库
常用函数
JSTL函数标签库提供了一组常用的字符串处理函数,如字符串长度、子字符串、替换等,使用时需要引入函数标签库。
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> ... Length of the string is ${fn:length(str)}. Substring from index 2 to 5 is ${fn:substring(str, 2, 5)}. Replace all 'a' with 'A' in the string: ${fn:replace(str, 'a', 'A')}.
常见问题与解答
问题1:为什么在JSP中使用EL表达式时,有时会出现“PropertyNotFoundException”?
答:在使用EL表达式时,如果表达式中的属性不存在于对应的作用域中,就会抛出“PropertyNotFoundException”,为了避免这个问题,可以在使用EL表达式之前检查属性是否存在,或者使用JSTL的<c:if>
、<c:choose>
等标签进行条件判断。
示例:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> ... <c:if test="${not empty user}"> 用户名:${user.name} </c:if>
问题2:如何在JSP中进行循环遍历?
答:在JSP中,可以使用JSTL的<c:forEach>
标签进行循环遍历,该标签可以遍历集合、数组、Map等数据结构,示例如下:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> ... <c:forEach items="${list}" var="item"> ${item} <br/> </c:forEach>
到此,以上就是小编对于“入门教程:JSP标准模板库(下)”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。