JSP 标准标记库(JSP Standard Tag Library,JSTL)主要功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问等等。在MVC模式中作为页面展现jstl是一个不错的选择,使用起来也感觉比较舒服。现将常用的标签介绍如下:
Core Actions Action Description
<c:catch> 主要用于异常的捕获
<c:choose> 相当于switch的作用
<c:forEach> 主要用于集合、数组等等的迭代
<c:forTokens> 主要用于字符串的迭代
<c:if> 条件语句
<c:import> Imports a URL
<c:otherwise> 相当于switch中的default
<c:out> 主要用于输出
<c:param> 主要用于为 <c:import> or <c:url>指定参数
<c:redirect> 重定向
<c:remove> Removes a scoped variable
<c:set> Creates a scoped variable
<c:url> 重写url
<c:when> 相当于switch中的case
一、在jsp中要使用jstl标签首先要声明对标签的引用:
1.jakarta-taglibs-standard-1.0版本声明
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
2.jakarta-taglibs-standard-1.1版本声明
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
二、使用
1.<c:set>定义变量
(1)语法:<c:set var=" " name=" " scope=" " value=" " expression=" "/> scope 属性是可选的,其缺省值是 page 。
(2)例子:<c:set var="name" value="yourName" />
2.<c:out>输出语句
(1)语法:<c:out value=" " expression=" " default=" " expression=" " escapeXml="boolean"/>
escapeXml 属性也是可选的。true:输出代码,false:输出真正内容。它控制当用<c:out> 标记输出诸如“<”、“>”和“&”之类的字符(在 HTML 和 XML 中具有特殊意义)时是否应该进行转义。如果将 escapeXml 设置为 true,则会自动将这些字符转换成相应的 XML 实体(此处提到的字符分别转换成 < 、 > 和 & )。
带缺省内容的 <c:out> 操作示例
Hello <c:out value="${user.username}" default=="Guest"/>! default属性作用于如果提供的变量不存在则使用该属性定义的值。
禁用转义的 <c:out> 操作示例
<c:out value="${user.company}" escapeXml=="false"/>
组合静态文本和多个 EL 表达式以指定动态属性值:
<c:out value="Hello ${user.firstName} ${user.lastName}"/>
<1>.点运算符通常用于访问对象的属性。如在表达式 ${user.firstName} 中,使用点运算符来访问 user 标识符所引用对象的名为firstName 的属性。当被访问的属性本身是对象时,可以递归地应用点运算符。例如,如果我们虚构的 user 对象有一个实现为 Java 对象的address属性,那么也可以用点运算符来访问这个对象的和。例如,表达式 ${user.address.city} 将会返回这个地址对象嵌套的 city 属性。
<2>.方括号运算符用来检索数组和集合的元素。例如,表达式 ${urls[0]} 返回 urls 标识符所引用的数组或集合的第1个元素。
在方括号中指定键,并将相应的值作为表达式的值返回。例如,表达式 ${commands["dir"]} 返回与 commands 标识符所引用的 Map 中的 "dir" 键相关联的值。此外,点运算符和方括号运算符还可以互操作。例如,如果数组的元素本身是对象,则可以使用方括号运算符来检索该数组的元素,并结合点运算符来检索该元素的一个特性(例如 ${urls[0].ip}。
(2)例子:
<c:out var='name'/>
3.<c:if>条件语句
(1)语法:<c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]/>
test属性定义的是条件表达式。
(2)例子:
<c:if test="${sessionScope.list!=null and sessionScope.list!=''}">
<c:set var="list" value="${list}," scope="session" />
</c:if>
<c:if test="${pageContext.request.method=='POST'}">
4.迭代
(1)语法:
<c:forEach items='${primitiveValues}' var='item'>
value = <c:out value='${item}'/><br>
</c:forEach>
实现迭代内容的主要 JSTL 操作是 <c:forEach> 定制标记。该标记支持两种不同样式的迭代:整数范围上的迭代(类似 Java 语言的 for 语句)和集合上的迭代(类似 Java 语言的 Iterator 和 Enumeration 类)。
<c:forEach> 标记的语法。 begin 和 end 属性要么是静态整数值,要么是可以得出整数值的表达式。它们分别指定迭代索引的初始值以及迭代索引的终止值。当使用<c:forEach> 在整数范围内进行迭代时,这两个属性是必需的,而其它所有属性都是可选的。 当出现 step 时,它也必须是整数值。它指定每次迭代后索引的增量。
items可以为:List, LinkedList, Vector, ArrayList, Stack,Hashtable, HashMap, TreeMap,WeakHashMap,java.lang.Object[],java.lang.String,java.util.Iterator,java.util.Enumeration。
(2)例子:
<c:forEach var='item' begin='5' end='10'>
value = <c:out value='${item}'/><br>
</c:forEach>
输出结果:5 6 7 8 9 10.
<c:forEach var='item' begin='5' end='10' step='2'>
<c:out value='${item}'/>
</c:forEach>
输出结果:5 7 9.
<c:forEach items='ONE, TWO, THREE, FOUR' var='item'>
<c:out value='${item}'/>
</c:forEach>
输出结果:ONE TWO THREE FOUR.
<c:forTokens items='ONE | TWO | THREE | FOUR' delims='|' var='item'>
<c:out value='${item}'/>
</c:forTokens>
输出结果:ONE TWO THREE FOUR.
<c:forTokens items='(A B C)-(D E F)' delims='()' var='item'>
<c:out value='${item}'/><br>
</c:forTokens>
输出结果:(A B C) - (D E F)
5.条件选择语句
(1)语法:
<c:choose>
<c:when test="testCondition">
body content
</c:when>
<c:otherwise>
<c:out value="${param.enter}" />
<br />
</c:otherwise>
</c:choose>
(2)例子:
<c:choose>
<c:when test="${param.enter=='1'}">One
<br />
</c:when>
<c:when test="${param.enter=='2'}">Two
<br />
</c:when>
<c:otherwise>
<c:out value="${param.enter}" />
<br />
</c:otherwise>
</c:choose>
6.异常语句:
(1)语法:
<c:catch var="e">
body-condition
</c:catch>
(2)例子:
<c:catch var="e">
10 divided by 0 is
<c:out value="${10/0}" />
<br />
</c:catch>
<c:import url='http://www.mysite.com/mydoc.txt'/>
7.格式化输出:
(1)语法:
<fmt:formatNumber value="numericValue"
[type="{number|currency|percent}"]
[pattern="customPattern"]
[currencyCode="currencyCode"]
[currencySymbol="currencySymbol"]
[groupingUsed="{true|false}"]
[maxIntegerDigits="maxIntegerDigits"]
[minIntegerDigits="minIntegerDigits"]
[maxFractionDigits="maxFractionDigits"]
[minFractionDigits="minFractionDigits"]
[var="varName"]
[scope="{page|request|session|application}"]/>
type:可以是currency、 number、 和percent。
(2)例子:
<fmt:formatNumber value="12" type="currency" pattern=".00元"/> 将显示 12.00元
<fmt:formatNumber value="12" type="currency" pattern=".0#元"/> 将显示 12.0元
<fmt:formatNumber value="1234567890" type="currency"/> 将显示 ¥1,234,567,890.00
(货币符号与web服务器的 locate 设定相关)
<fmt:formatNumber value="123456.7891" pattern="#,#00.0#"/> 将显示 123,456.79
<fmt:formatNumber value="12" type="percent" />将显示 1,200%
<fmt:formatNumber value="${requestScope.money}" type="currency" pattern="0.00元"/>
<fmt:formatNumber value="500000.01" groupingUsed="false" />
500000.01
<fmt:formatNumber value="98.6" minIntegerDigits="4"/>
0,098.6
<fmt:formatNumber value="98.6" minIntegerDigits="4" groupingUsed="false"/>
0098.6
<fmt:formatNumber value="3.141592653589" maxFractionDigits="2"/>
3.14
<fmt:formatDate value=”${now}” pattern="yyyy-MM-dd"/>
<fmt:message key="Welcome" />
WEB-INF/classes/messages_en.properties
内容:index.num=Welcome to the JSTL
<fmt:message key='index.num' var='msg' scope='request'/>
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.locale</param-name>
<param-value>zh_CN</param-value>
</context-param>
<fmt:setLocale value='CN'/>
<fmt:requestEncoding value='GB2312'/>
分享到:
相关推荐
**正文** JSTL(JavaServer Pages Standard Tag Library)是Java Web开发中一个重要的标签库,主要用于简化...通过学习和实践这些内容,开发者可以更加熟练地在JSP页面中运用JSTL标签,提升Web应用的开发质量和效率。
从JSP 1.1规范开始,JSP就支持在JSP中使用自定义标签了,自定义标签的广泛使用造成了程序员重复定义,这样就促成了JSTL(JavaServer Pages Standard Tag Library)的诞生。
总结来说,JSTL1.2是一个强大的JavaWeb开发工具,通过提供一系列预定义的标签,使开发者能够更加专注于页面展现和业务逻辑,而不是底层的Java代码。而这个“jstl1.2.zip”压缩包中的四个组件,共同构成了JSTL1.2的...
3. **使用JSTL标签**:在JSP页面中,通过以下方式引入JSTL库: ```jsp <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> ...
2. **减少脚本代码**:通过使用JSTL,可以在JSP页面中避免过多的Java脚本,使页面更专注于展现逻辑。 3. **模块化开发**:JSTL提供了多种标签库,如Core库、XML库、SQL库等,方便模块化开发。 4. **与Struts、Spring...
JSTL,全称JavaServer Pages Standard Tag ...JSTL标签的应用大大减少了JSP页面中的脚本let代码,使得页面更专注于展现逻辑,而将业务逻辑和控制逻辑移到了后台处理。使用JSTL可以使JSP代码更清晰、更易于理解和维护。
它提供了一套标准的标签,使得开发者可以在JSP页面中使用标签代替Java脚本(scriptlets)进行业务逻辑处理和数据展现。JSTL的主要目标是提高JSP页面的可读性、可维护性和符合JavaServer Pages 2.0标准。 在传统的...
《深入理解EL表达式与JSTL在企业实训中的应用》 在现代Web开发中,EL(Expression Language)表达式和JSTL(JavaServer Pages ...在实际项目中,应根据需求合理选择和组合使用EL和JSTL,以实现最佳的业务逻辑展现。
在第一个动态版本的基础上,使用JSTL/Sevelet/EL/JavaBean优化宠物分类展现的页面代码高版本MyEclipse创建的Web项目已自带,不用添加。 二、开发环境准备 在任务4的开发环境的基础上,下载包jstjar 和standardjar ...
Java网络编程 JAVA web开发实例讲解 宠物分类展现web项目 第06章 用JavaBean、EL和JSTL优化宠物分类展现页面 (共30页).ppt Java网络编程 JAVA web开发实例讲解 宠物分类展现web项目 第07章 用Struts实现宠物商城的...
在本项目中,JSP页面接收到后端传递的数据后,可以使用EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)来处理这些数据。EL用于简化数据访问,而JSTL则提供了一系列标签来处理循环、条件...
本资源提供了一个高效且易理解的分页解决方案,主要使用Java后端配合JSP(JavaServer Pages)和JSTL(JavaServer Pages Standard Tag Library)在前端进行展现。 首先,让我们详细了解`page`分页处理的核心概念: ...
第一种使用了Jsp中的JSTL标签与后台的连接,数据库返回数据,Jsp负责绘制表格,充分展现了前端与后台的分工职能,有利于理解MVC的架构模式。第二种使用了Jsp中的JavaScript的函数功能实现前台与后台的连接,本次使用...
在JSP中,我们可以使用JSTL(JavaServer Pages Standard Tag Library)或EL(Expression Language)来引入CSS资源,例如通过`<link>`标签来链接外部CSS文件,或者直接在JSP页面中使用`<style>`标签内联定义样式。...
本篇文章将详细讲解如何使用JavaServer Pages(JSP)来读取Excel文件中的数据,并以表格的形式在网页上展示,同时考虑字体和背景的样式。 首先,我们需要了解JSP的基础知识。JSP是一种基于Java的动态网页技术,允许...
两者可以结合使用,JSP用于展现,Servlet处理业务逻辑。 【适合初学者的学习路径】 对于初学者,学习JSP应该从理解基本概念和语法开始,然后逐步掌握JSP指令、内置对象的使用,以及EL和JSTL的应用。同时,了解...
8. **JSTL(JavaServer Pages Standard Tag Library)**:一套标准的标签库,提供了一些常用的标签来简化JSP页面的开发,如迭代、条件判断、XML处理等。 9. **Servlet与JSP的关系**:JSP最终会被编译成Servlet,...
- 使用EL和JSTL减少脚本代码,提高可读性。 - 适当使用session和cookie,避免过多的数据存储。 - 了解MVC(Model-View-Controller)模式,结合Spring MVC或Struts等框架提高开发效率。 7. **学习资源** - 本...
在项目中使用JSTL,首先需要引入相应的标签库,然后在页面上使用这些标签来替代传统的JSP脚本。JSTL使得代码更加简洁和可读,提高了代码的可维护性。例如,`<c:forEach>`遍历集合,`<c:if>`进行条件判断,`<c:set>`...
在IT行业中,网页开发是一项重要的工作,而动态树形菜单是网页交互设计中常见的元素,尤其在内容层次较多、结构复杂的网站中更为常见。本文将深入探讨“网页动态树形菜单图”这一主题,以及与之相关的JSP技术。 ...