概念
JavaServer Pages Tag Library JSP标准标签库
作用
用于简化和替换jsp页面上的java代码
使用步骤
1、导入jstl相关jar包
官网下载:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
javax.servlet.jsp.jstl.jar 、jstl-impl.jar文件拷贝到 /WEB-INF/lib/ 下。
2、引入标签库:taglib指令
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3、使用标签
标签
标签 | 说明 |
<c:out> | 将表达式的值输出到jsp页面中,相当于jsp表达式<%=表达式%> |
<c:set> | 在指定范围中定义变量,或为指定的对象设置属性值 |
<c:remove> | 从指定的jsp范围中移除指定的变量 |
<c:catch> | 捕获程序中出现的异常,相当于Java语言的try...catch语句 |
<c:import> | 导入站内或者其他网站显示静态和动态文件到web页面中 |
<c:redirect> | 将客户端发出的request请求·重定向到其他的URL服务端 |
<c:url> | 使用正确的URL重写规则构造一个URL |
<c:param> | 为其他标签提供参数信息,通常与其他标签结合使用 |
<c:if> | 根据不同的条件去处理不同的业务逻辑,与Java语言中的if语句类似,只不过该语句没有else语句 |
<c:choose> <c:when> <c:otherwise> | 根据不同的条件去完成指定的业务逻辑,如果没有符合的条件,则会执行默认的业务逻辑,相当于Java语句的switch语句 |
<c:forEach> | 根据循环条件遍历数组和集合类中的所有或部分数据 |
<c:forTokens> | 迭代字符串中由分隔符分隔的各个成员 |
<c:out>输出标签
将表达式的值输出到jsp页面中,相当于jsp表达式<%=表达式%>
<c:out value="<string>" default="<string>" escapeXml="<true|false>"/>
属性
属性 | 描述 |
value | 用于指定将要输出的变量或者表达式 |
default | 可选属性,用于指定value属性值等于null时,将要显示这个默认的值,没有指定这个属性,并且value属性的值为null,该标签将输出空字符串。 |
escapeXml | 可选属性, 用于指定是否转换特殊字符串,其值为true|false 默认是true,表示转换,将html标签转换为转义字符,在页面显示出html标签,false就会将其解析出来。 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>out 标签实例</title>
</head>
<body>
<h1><c:out> 实例</h1>
<c:out value="<hr>要显示的数据对象(未使用转义字符)<hr>" escapeXml="true" default="默认值"></c:out><br/>
<c:out value="<hr>要显示的数据对象(使用转义字符)<hr>" escapeXml="false" default="默认值"></c:out><br/>
<c:out value="${null}" escapeXml="false">使用的表达式结果为null,则输出该默认值</c:out><br/>
</body>
</html>
escapeXml为false的有下划线
<c:set>变量设置标签
属性
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
value | 要存储的值 | 否 | 主体的内容 |
target | 要修改的属性所属的对象 | 否 | 无 |
property | 要修改的属性 | 否 | 无 |
var | 存储信息的变量 | 否 | 无 |
scope | var属性的作用域 | 否 | Page |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
</head>
<body>
<c:set var="salary" scope="session" value="${username}"/>
<c:out value="${salary}"/>
</body>
</html>
<c:if>条件判断标签
<c:if>标签可以根据不同的条件处理不同的业务,它与Java语言的if语句类似
语法格式
<c:if test="<boolean>" var="<string>" scope="<string>">
...
</c:if>
属性
属性 | 描述 |
test | 必选属性,用于指定条件表达式,可以使用EL |
var | 可选属性,用于指定变量名,该变量用于保存test属性判断的结果 |
scope | 用于指定变量的有效范围,默认值是page |
<c:if test="${salary > 2000}">
<p>我的工资为: <c:out value="${salary}"/><p>
</c:if>
<c:choose>, <c:when>, <c:otherwise> 标签
<c:choose>标签与Java switch语句的功能一样,用于在众多选项中做出选择。
switch语句中有case,而<c:choose>标签中对应有<c:when>,switch语句中有default,而<c:choose>标签中有<c:otherwise>。
语法格式
<c:choose>
<c:when test="<boolean>">
...
</c:when>
<c:when test="<boolean>">
...
</c:when>
...
...
<c:otherwise>
...
</c:otherwise>
</c:choose>
属性
<c:choose>标签没有属性
<c:when>标签只有一个属性,在下表中有给出
<c:otherwise>标签没有属性
<c:when>标签的属性如下:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
test | 条件 | 是 | 无 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>标签实例</title>
</head>
<body>
<c:set var="salary" scope="session" value="${2000*2}"/>
<p>你的工资为 : <c:out value="${salary}"/></p>
<c:choose>
<c:when test="${salary <= 0}">
太惨
</c:when>
<c:when test="${salary > 1000}">
不错的薪水
</c:when>
<c:otherwise>
什么都没有。
</c:otherwise>
</c:choose>
</body>
</html>
<c:forEach>标签
这些标签封装了Java中的for,while,do-while循环。
属性 | 描述 |
items | 用于指定被循环的对象,多用于数组和集合 |
var | 用于指定循环体的变量,就是存储item指定的对象的 |
begin | 用于指定循环的起始位置,如果没有指定,就是从集合的第一个开始迭代(可选属性) |
end | 用于指定循环的终止位置,如果没有指定,就是循环到集合的最后一位(可选属性) |
step | 用于指定循环的步长 |
varStatus | 用于指定循环的状态变量,该属性有4个状态属性,如下表 |
标签体 | 可以是jsp页面的能显示的任何属性 |
状态属性
变量 | 类型 | 描述 |
index | int | 当前循环的索引值,从0开始 |
count | int | 当前循环的循环计数,从1开始 |
first | boolean | 是否为第一次循环 |
last | boolean | 是否为最后一次循环 |
<c:forEach items="${key}" var="goodsList" varStatus="status">
<div class="goods_one1">
<a href="item?itemId=${goodsList.id}"><img src="${goodsList.image}"></a>
<span style="color: red; font-weight: 1000;">¥${goodsList.price}</span>
<span style="color:whitesmoke;background-color: red;"> 包邮</span>
<span class="buy_numbers1">9000+人付款</span><br>
<a href="goods1.jsp">${goodsList.name}</a>
</div>
</c:forEach>