JSP标准标签库(JSTL)
配置 JSTL
JSTL 现在已经是 Java EE5 的一个组成部分,如果采用支持 Java EE5 或以上版本的集成开发环境开发 Web 应用程序,就不需要再配置 JSTL 了。如果你再用的是 Eclipse 平台,则需要配置 JSTL。配置 JSTL 的步骤如下:
1)复制 JSTL 的标准实现
在 Tomcat 的 \webapps\examples\WEB-INF\lib 目录下找到 taglibs-standard-impl-1.2.5.jar 和 taglibs-standard-spec-1.2.5.ja r文件,然后复制到 Web 工程的 WEB-INF\lib 目录下。2)使用 taglib 标记定义前缀与 uri 引用
如果使用 Core 标签库,首先需要在 JSP 页面中使用 taglib 标记定义前缀与 uri 引用,代码如下:<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
如果使用 Functions 标签库,首先需要在 JSP 页面中使用 taglib 标记定义前缀与 uri 引用,代码如下:<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
核心标签库之通用标签
1. <c:out> 标签
<c:out> 标签用来显示数据的内容,与 <%=表达式%> 或 ${表达式} 类似。格式如下:<c:out value="输出的内容" [default="defaultValue"]/>
或
<c:out value="输出的内容">
defaultValue
</c:out>
<c:out value="${param.data}" default="没有数据"/>
<br>
<c:out value="${param.nothing}"/>
<br>
<c:out value="这是一个字符串"/>
图 1 <c:out>标签
2. <c:set>标签
1)设置作用域变量
用户可以使用 <c:set> 在 page、request、session、application 等范围内设置一个变量。格式如下:<c:set value="value" var="varName"[scope="page|request|session|application"]/>
该代码将 value 值赋给变量 varName。<c:set value="zhao" var="userName" scope="session"/>
相当于<%session.setAttribute("userName","zhao");%>
2)设置 JavaBean 的属性
在使用 <c:set> 设置 JavaBean 的属性时必须使用 target 属性进行设置。格式如下:<c:set value="value" target="target" property="propertyName"/>
该代码将 value 值赋给 target 对象(JaveBean 对象)的 propertyName 属性。如果 target 为 null 或没有 set 方法则抛出异常。3. <c:remove>标签
如果要删除某个变量,可以使用 <c:remove> 标签。例如:<c:remove var="userName" scope="session"/>
相当于<%session.removeAttribute("userName")%>
核心标签库之流程控制标签
1. <c:if> 标签
<c:if> 标签实现 if 语句的作用,具体语法格式如下:
<c:if test="条件表达式">
主体内容
</c:if>
2. <c:choose>、<c:when>及<c:otherw ise>标签
<c:choose>、<c:when> 及 <c:otherwise> 标签实现 if/elseif/else 语句的作用,具体语法格式如下:<c:choose> <c:when test="条件表达式1"> 主体内容1 </c:when> <c:when test="条件表达式2"> 主体内容2 </c:when> <c:otherwise> 表达式都不正确时执行的主体内容 </c:otherwise> </c:choose>
核心标签库之迭代标签
1. <c:forEach> 标签
<c:forEach> 标签可以实现程序中的 for 循环。语法格式如下:
<c:forEach var="变量名" items="数组或Collection对象">
循环体
</c:forEach>
ArrayList<UserBean> users=new ArrayList<UserBean>(); UserBean ub1=new UserBean("zhao",20); UserBean ub2=new UserBean("qian",40); UserBean ub3=new UserBean("sun",60); UserBean ub4=new UserBean("li",80); users.add(ub1); users.add(ub2); users.add(ub3); users.add(ub4); request.setAttribute("usersKey", users);那么在对应 JSP 页面中可以使用 <c:forEach> 循环遍历出数组中的元素。代码如下:
<table> <tr> <th>姓名</th> <th>年龄</th> </tr> <c:forEach var="user" items="${requestScope.usersKey}"> <tr> <td>${user.name}</td> <td>${user.age}</td> </tr> </c:forEach> </table>在有些情况下需要为 <c:forEach> 标签指定 begin、end、step 和 varStatus 属性。begin 为迭代时的开始位置,默认值为 0。
- end 为迭代时的结束位置,默认值是最后一个元素。
- step 为迭代步长,默认值为 1。
- varStatus 代表迭代变量的状态,包括 count(迭代的次数)、index(当前迭代的索引,第一个索引为0)、first(是否为第一个迭代对象)和 last(是否为最后一个迭代对象)。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <table border=1> <tr> <th>Value</th> <th>Square</th> <th>Index</th> </tr> <c:forEach var="x" varStatus="status" begin="0" end="10" step="2"> <tr> <td>${x }</td> <td>${x*x }</td> <td>${status.index }</td> </tr> </c:forEach> </table> </body> </html>上述程序的运行结果如图 2 所示。
图 2 <c:forEach>标签
2. <c:forTokens> 标签
<c:forTokens> 用于迭代字符串中由分隔符分隔的各成员,它通过 java.util.StringTokenizer 实例来完成字符串的分隔,属性 items 和 delims 作为构造 StringTokenizer 实例的参数。语法格式如下:
<c:forTokens var="变量名" items="要迭代的String对象" delims="指定分隔字符串的分隔符">
循环体
</c:forTokens>
<c:forTokens var="name" items="chenheng1:chenheng2:chenheng3" delims=":">
${name}<br>
</c:forTokens>
图 3 <c:forTokens>标签
<c:forTokens> 标签与 <c:forEach> 标签一样,也有 begin、end、step 和 varStatus 属性,并且用法相同,这里不再赘述。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算