一. JSTL标签
1. 简介
JSTL(全名:java standard tag libarary - java标准标签库);
2. 五套标签库(重点是前三套)
(1) 核心标签库 (c标签库)
(2) 国际化标签(fmt标签库)
(3) EL函数库(fn函数库)
(4) xml标签库(x标签库)
(5) sql标签库(sql标签库)
3. 使用JSTL标签步骤
(1) 导入jstl支持的jar包(标签背后隐藏的java代码)
注意:使用javaee5.0的项目自动导入jstl支持jar包
(2) 使用taglib指令导入标签库
<%@taglib uri="核心标签库的tld文件的uri名称" prefix="标签库的简写或者前缀" %>
注意:每一个核心标签库都有一个tld文件,tld文件在这个jar包的META-INF中,tld文件就是声明标签用的,在
文件中找到uri复制粘贴即可。使用这个uri就可以定位到这个标签库。前缀也是在这个文件中去找,在这个文件中
有一个<short-name></short-name>标签,中间的值就是简写。
(3) 在jsp中使用标签
二. 核心标签库的重点标签
1. 保存数据:<c:set></c:set>
(1) <c:set>标签用于把某一个对象存在指定的域范围内,或者设置Web域中的java.util.Map类型的属性对象或
JavaBean类型的属性对象的属性。
(2) 标签属性
(3) 实例
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%--导入标签库 --%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>核心标签库</title>
</head>
<body>
<%--使用标签 --%>
<%--set标签 :保存数据(保存到域中)默认保存到page域 --%>
<c:set var="name" value="rose" scope="request"></c:set>
${requestScope.name}
</body>
</html>
运行结果如下图所示:
2. 获取数据:<c:out value=""></c:out>
(1) <c:out> 标签用于输出一段文本到浏览器中。
(2) 标签属性
(3) 实例
3. 单条件判断<c:if test=""></c:if>
(1) <c:if test=“”>标签可以构造简单的“if-then”结构的条件表达式。
(2) 标签属性
(3) 实例
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%--导入标签库 --%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>核心标签库</title>
</head>
<body>
<%
String msg = null;
pageContext.setAttribute("msg",msg);
%>
<%--if标签 :单条件判断,test返回的是布尔值,如果返回值为true,标签体的内容就会输出--%>
<%--
<c:if test="true">
条件成立
</c:if>
--%>
<c:if test="${!empty msg}">
条件成立
</c:if>
</body>
</html>
4. 多条件判断<c:choose></c:choose>
(1) <c:choose>标签用于指定多个条件选择的组合边界,它必须与<c:when>和<c:otherwise>标签一起使用。
使用<c:choose>,<c:when>和<c:otherwise>三个标签,可以构造类似 “if-else if-else” 的复杂条件判断结
构。
(2) 实例
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%--导入标签库 --%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>核心标签库</title>
</head>
<body>
<%--choose标签+when标签+otherwirse标签: 多条件判断 --%>
<c:set var="score" value="56"></c:set>
<c:choose>
<c:when test="${score>=90 && score<=100}">
优秀
</c:when>
<c:when test="${score>=80 && score<90}">
良好
</c:when>
<c:when test="${score>=70 && score<80}">
一般
</c:when>
<c:when test="${score>=60 && score<70}">
及格
</c:when>
<c:otherwise>
不及格
</c:otherwise>
</c:choose>
</body>
</html>
运行结果如下图所示:
5. 循环数据<c:forEach></c:forEach>
(1) <c:forEach>标签用于对一个集合对象中的元素进行循环迭代操作,或者按指定的次数重复迭代执行标签体中
的内容。
(2) 标签属性
(3) 实例
<%@ page language="java" import="java.util.*,zw_entity.*" pageEncoding="utf-8"%>
<%--导入标签库 --%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>核心标签库</title>
</head>
<body>
<%-- forEach标签:循环 --%>
<%
//List
List<Student> list = new ArrayList<Student>();
list.add(new Student("rose",18));
list.add(new Student("jack",28));
list.add(new Student("lucy",38));
//放入域中
pageContext.setAttribute("list",list);
//Map
Map<String,Student> map = new HashMap<String,Student>();
map.put("100",new Student("mark",20));
map.put("101",new Student("maxwell",30));
map.put("102",new Student("narci",40));
//放入域中
pageContext.setAttribute("map",map);
%>
<hr/>
<%--
begin="" : 从哪个元素开始遍历,默认从0开始
end="": 到哪个元素结束。默认到最后一个元素
step="" : 步长 (每次加几) ,默认1
items="": 需要遍历的数据(集合)
var="": 每个元素的名称 ,需要使用名称去访问它,相当于起别名。
varStatus="": 当前正在遍历元素的状态对象。(count属性:当前位置,从1开始)
--%>
<c:forEach items="${list}" var="student" varStatus="varSta">
序号:${varSta.count} - 姓名:${student.name } - 年龄:${student.age}<br/>
</c:forEach>
<hr/>
<c:forEach items="${map}" var="entry">
${entry.key } - 姓名: ${entry.value.name } - 年龄:${entry.value.age }<br/>
</c:forEach>
</body>
</html>
运行结果如下图所示:
6. 循环特殊字符串<c:forTokens items="" delims=""></c:forTokens>
(1) 对带有相同符合格式内容进行分割输出,例如varstr="1,2,3,4,5,6";
(2) 标签属性
(3) 实例
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%--导入标签库 --%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>核心标签库</title>
</head>
<body>
<%-- forToken标签: 循环特殊字符串 --%>
<%
String str = "java-php-net-平面";
pageContext.setAttribute("str",str);
%>
<c:forTokens items="${str}" delims="-" var="s">
${s }<br/>
</c:forTokens>
</body>
</html>
运行结果如下图所示:
7. 重定向<c:redirect></c:redirect>
(1) <c:redirect>标签用于将当前的访问请求转发或重定向到其他资源,它可以根据url属性所指定的地址,执行
类似<jsp:forward>这个JSP标准标签的功能,将访问请求转发到其他资源;或执行response.sendRedirect()方
法的功能,将访问请求重定向到其他资源。
(2) 标签属性
(3) 实例
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%--导入标签库 --%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>核心标签库</title>
</head>
<body>
<%--redirect:重定向,重定向可以指向任何地址--%>
<c:redirect url="http://www.baidu.com"></c:redirect>
</body>
</html>