JSTL

<转>JSTL截取字符串以及格式化时间
fn函数里面有很多好用的方法
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

下面是JSTL中自带的方法列表以及其描述

函数名                                    函数说明                                                          使用举例
fn:contains                             判断字符串是否包含另外一个字符串      <c:if test="${fn:contains(name, searchString)}">


fn:containsIgnoreCase          判断字符串是否包含另外一个字符串(大小写无关)      <c:if test="${fn:containsIgnoreCase(name, searchString)}">


fn:endsWith                           判断字符串是否以另外字符串结束            <c:if test="${fn:endsWith(filename, ".txt")}">


fn:escapeXml                         把一些字符转成XML表示,                      例如 <字符应该转为&lt; ${fn:escapeXml(param:info)}


fn:indexOf                              子字符串在母字符串中出现的位置           ${fn:indexOf(name, "-")}


fn:join                                     将数组中的数据联合成一个新字符串,并使用指定字符格开 ${fn:join(array, ";")}
fn:length                                获取字符串的长度,或者数组的大小        ${fn:length(shoppingCart.products)}


fn:replace                               替换字符串中指定的字符                          ${fn:replace(text, "-", "?")}


fn:split                                    把字符串按照指定字符切分                      ${fn:split(customerNames, ";")}


fn:startsWith                           判断字符串是否以某个子串开始                <c:if test="${fn:startsWith(product.id, "100-")}">


fn:substring                            获取子串                                                  ${fn:substring(zip, 6, -1)}


fn:substringAfter                    获取从某个字符所在位置开始的子串         ${fn:substringAfter(zip, "-")}


fn:substringBefore                获取从开始到某个字符所在位置的子串    ${fn:substringBefore(zip, "-")}


fn:toLowerCase                    转为小写                                                  ${fn.toLowerCase(product.name)}


fn:toUpperCase                     转为大写字符                                           ${fn.UpperCase(product.name)}


fn:trim                                    去除字符串前后的空格                             ${fn.trim(name)}


函数
描述

fn:contains(string, substring)
如果参数string中包含参数substring,返回true

fn:containsIgnoreCase(string, substring)
如果参数string中包含参数substring(忽略大小写),返回true

fn:endsWith(string, suffix)
如果参数 string 以参数suffix结尾,返回true

fn:escapeXml(string)
将有特殊意义的XML (和HTML)转换为对应的XML character entity code,并返回

fn:indexOf(string, substring)
返回参数substring在参数string中第一次出现的位置

fn:join(array, separator)
将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。

fn:length(item)
返回参数item中包含元素的数量。参数Item类型是数组、collection或者String。如果是String类型,返回值是String中的字符数。

fn:replace(string, before, after)
返回一个String对象。用参数after字符串替换参数string中所有出现参数before字符串的地方,并返回替换后的结果

fn:split(string, separator)
返回一个数组,以参数separator 为分割符分割参数string,分割后的每一部分就是数组的一个元素

fn:startsWith(string, prefix)
如果参数string以参数prefix开头,返回true

fn:substring(string, begin, end)
返回参数string部分字符串, 从参数begin开始到参数end位置,包括end位置的字符

fn:substringAfter(string, substring)
返回参数substring在参数string中后面的那一部分字符串

fn:substringBefore(string, substring)
返回参数substring在参数string中前面的那一部分字符串

fn:toLowerCase(string)
将参数string所有的字符变为小写,并将其返回

fn:toUpperCase(string)
将参数string所有的字符变为大写,并将其返回

fn:trim(string)
去除参数string 首尾的空格,并将其返回

fmt函数

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<fmt:formatDate value="${xxx}" pattern="yyyy-MM-dd">
<fmt: formatNumber value =”12.3” pattern=”.000”/>
将输出 12.300. 应用样式 ”.000”, 将使格式化后的小数部分有 3 位。不足 3 位将以 0 补齐。
<fmt:formatDate value=”<%=new java.util.Date() %>” type=”date”  pattern="yyyy/M/d" />
格式化的结果是: 2007-5-27 .
<fmt:formatDate value=”<%=new java.util.Date() %>” type=”time” pattern="hh:mm:ss"/>
格式化的结果是: 9:25:11
<fmt:formatDate value=”<%=new java.util.Date() %>” type=”both” />
格式化的结果是: 2007-5-27 9:25:11

 

<think>好的,我现在需要帮助用户了解JSTL的使用教程和示例。首先,我应该回顾用户提供的引用内容,确保回答准确。用户提到了几个引用,涉及JSTL的基本概念、核心标签库、与EL的结合以及特定标签的用法,比如<c:import>和<c:url>。用户可能希望了解如何开始使用JSTL,包括配置步骤、常用标签的示例以及最佳实践。 首先,我应该确认JSTL的基本介绍,包括它的作用和优势。根据引用[2],JSTL用于解决常见的逻辑控制问题,如遍历集合、条件测试等,而无需在JSP中编写Java代码。这需要提到JSTL的不同标签库,比如核心库、格式化库、SQL库等,但可能用户更关注核心库的使用。 接下来,用户需要教程和示例,所以需要分步骤说明如何配置JSTL。引用[4]提到需要导入标签库,可能需要说明如何在JSP页面中添加taglib指令,例如<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>。同时,用户可能需要知道如何下载JSTL库并将其添加到项目中,不过具体的下载步骤可能需要简略提及,或者建议查看官方文档。 然后,针对核心标签库的常用标签,需要给出示例。例如,变量操作标签<c:set>和<c:out>,条件判断标签<c:if>、<c:choose>,循环标签<c:forEach>和<c:forTokens>,URL处理标签<c:import>和<c:url>。每个标签都需要一个简单的代码示例,比如使用<c:forEach>遍历列表,用<c:if>进行条件判断。 另外,结合EL(表达式语言)的使用也很重要,引用[1]和[3]提到EL和JSTL的结合可以避免Java代码。因此,在示例中应该展示如何用EL表达式访问变量,例如${user.name}。 可能需要注意JSTLJSP的版本兼容性,比如JSP 2.0及以上版本对EL的支持,但用户可能没有提到这个问题,所以可能不需要深入,但可以稍微提及。 最后,根据用户提供的引用[4],需要说明<c:import>与<jsp:include>的区别,指出前者可以包含其他Web应用或网络资源,而后者仅限于同一应用。这部分可以作为使用技巧或注意事项来强调。 在生成相关问题的时候,需要考虑用户可能进一步想知道的内容,比如JSTL的其他标签库(如格式化、SQL),与EL的协作细节,常见错误处理,或者性能优化等。因此,相关问题可以围绕这些主题展开。 现在需要确保回答结构清晰,分步骤说明,并包含实际示例。同时,引用正确的来源,比如引用[2]说明JSTL的功能,引用[4]说明<c:import>的用法。每个引用标识要正确对应,比如在讲解核心标签时引用[2],在讲解<c:import>时引用[4]。 检查是否有遗漏的部分,比如配置步骤是否需要详细说明jar包的添加,或者是否需要提及Maven依赖。不过用户可能只需要基础的教程,所以简要说明导入taglib即可,具体依赖管理可能属于更高级的内容,可以放在相关问题中。 总结,回答的结构应该是:简介、配置步骤、核心标签示例(变量、条件、循环、URL)、与EL结合的优势、注意事项或高级用法,最后相关问题。</think>### JavaServer Pages Standard Tag Library (JSTL) 使用教程和示例 #### **1. JSTL简介** JSTLJSP 的标准标签库,提供了一系列标签用于简化页面逻辑控制,例如遍历集合、条件判断、格式化数据等。通过与 EL(Expression Language)结合,开发者可以避免在 JSP 中直接编写 Java 代码,提升代码可维护性[^2]。 --- #### **2. 配置 JSTL** - **步骤1**:下载 JSTL 库(如 `jstl-1.2.jar`),并将其添加到项目的 `WEB-INF/lib` 目录。 - **步骤2**:在 JSP 页面顶部声明标签库: ```jsp <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> ``` 这里 `prefix="c"` 表示使用核心标签库的简写前缀。 --- #### **3. 核心标签库示例** ##### **(1) 变量操作** - **设置变量**:`<c:set>` ```jsp <c:set var="userName" value="Alice" scope="session" /> ``` - **输出变量**:`<c:out>` ```jsp 用户名:<c:out value="${userName}" default="Guest" /> ``` ##### **(2) 条件判断** - **单条件判断**:`<c:if>` ```jsp <c:if test="${user.age >= 18}"> 已成年 </c:if> ``` - **多条件选择**:`<c:choose>` ```jsp <c:choose> <c:when test="${score >= 90}">优秀</c:when> <c:when test="${score >= 60}">及格</c:when> <c:otherwise>不及格</c:otherwise> </c:choose> ``` ##### **(3) 循环遍历** - **遍历集合**:`<c:forEach>` ```jsp <c:forEach items="${userList}" var="user" varStatus="status"> 第${status.index + 1}位用户:${user.name} </c:forEach> ``` - **分割字符串**:`<c:forTokens>` ```jsp <c:forTokens items="Java,Python,C++" delims="," var="lang"> 语言:${lang} </c:forTokens> ``` ##### **(4) URL 处理** - **生成动态 URL**:`<c:url>` ```jsp <a href="<c:url value='/user/profile?id=${userId}' />">查看详情</a> ``` - **包含外部资源**:`<c:import>` ```jsp <c:import url="https://example.com/api/data" charEncoding="UTF-8" /> ``` 与 `<jsp:include>` 不同,`<c:import>` 支持跨应用或网络资源包含[^4]。 --- #### **4. 结合 EL 简化逻辑** JSTL 通常与 EL 配合使用,例如通过 `${}` 直接访问变量或对象属性: ```jsp <c:if test="${empty cart.items}"> 购物车为空 </c:if> ``` --- #### **5. 注意事项** - **作用域管理**:使用 `scope` 属性明确变量作用域(如 `request`、`session`)。 - **错误处理**:可通过 `<c:catch>` 捕获异常: ```jsp <c:catch var="errorMsg"> <%-- 可能出错的代码 --%> </c:catch> <c:if test="${not empty errorMsg}"> 错误:${errorMsg} </c:if> ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值