一、JSTL标签库介绍
- JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能
- 意义:jstl出现的目的同el一样也是要替换jsp页面中的脚本代码
二、标签库的使用步骤
-
导入jstl标签的两个jar包
taglibs-standard-impl-1.2.1.jar
taglibs-standard-spec-1.2.1.jar
-
使用taglib指令导入标签库
下面是导入JSTL的core标签库:
<%@ taglib prefix="c"uri="http://java.sun.com/jstl/core" %>
1)prefix="c":指定标签库的前缀,这个前缀可以随便给值,但大家都会在使用core标签库时指定前缀为c;
2)uri="http://java.sun.com/jstl/core":指定标签库的uri,它不一定是真实存在的网址,但它可以让JSP找到标签库的描述文件;
三、常用标签
set标签
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!--
作用:set标签可以往域中保存数据
域对象.setAttribute(key,value)
scope 属性设置保存到哪个域
page表示PageContext域(默认值)
request表示Request域
session表示Session域
application表示ServletContext域
var属性设置key是多少
value属性设置值
-->
保存之前:${requestScope.abc }
<c:set scope="request" var="abc" value="abcValue"></c:set>
保存之后:${requestScope.abc }
</body>
</html>
结果:
保存之前:
保存之后:abcValue
if标签
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!--
if标签用来做if判断
test属性表示判断的条件(使用EL表达式输出)
不存在if-else的写法,没有多路判断
-->
<c:if test="${12 == 12 }">
<h1>12等于12</h1>
</c:if>
<c:if test="${12 != 12 }">
<h1>12不等于12</h1>
</c:if>
</body>
</html>
结果:12 == 12
choose、when、otherwise标签
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!--
多路判断,跟switch...case...default非常接近
choose标签开始选择判断
when标签表示每一种判断情况
test属性表示当前这种判断情况的值
otherwise标签表示剩下的情况
choose、when、otherwise标签使用时需要注意的点:
1、标签里不能使用HTML注释,要使用JSP注释
2、when标签的父标签一定要是choose标签
otherwise里写多路判断时必须加上<choose/>标签
-->
<%
request.setAttribute("height", 168);
%>
<c:choose>
<c:when test="${requestScope.height > 190 }">
<h2>小巨人</h2>
</c:when>
<c:when test="${requestScope.height > 180 }">
<h2>很高</h2>
</c:when>
<c:when test="${requestScope.height > 170 }">
<h2>还可以</h2>
</c:when>
<c:otherwise>
<h2>剩下小于170的情况</h2>
</c:otherwise>
</c:choose>
</body>
</html>
结果:剩下小于170的情况
四、forEach标签
1、遍历1到10
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!--
begin 设置开始的索引
end 设置结束的索引
var 表示循环的变量(也是当前正在遍历到的数据)
step 表示遍历的步长值
varstatus 表示当前遍历到的数据的状态
-->
<c:forEach begin="1" end="10" var="i">
${i }
</c:forEach>
</body>
</html>
结果:1 2 3 4 5 6 7 8 9 10
2、遍历object数组
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!--
for(Object item : arr)
items 表示遍历的数据源(遍历的集合)
var 表示当前遍历到的数据
-->
<%
request.setAttribute("arr", new String[]{"17377791234","15526431237","17355790713"});
%>
<c:forEach items="${requestScope.arr }" var="item">
${item }
</c:forEach>
</body>
</html>
结果:
17377791234 15526431237 17355790713
3、遍历Map集合
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!--
java语句输出:
for(Map.Entry<String,Object> entry : map.entrySet()){
}
-->
<%
Map<String,Object> map = new HashMap<String,Object>();
map.put("key1","value1");
map.put("key2","value2");
map.put("key3","value3");
request.setAttribute("map", map);
%>
<c:forEach items="${requestScope.map }" var="entry">
${entry }
</c:forEach>
</body>
</html>
结果:key1=value1 key2=value2 key3=value3
4、遍历list集合
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
List<String> list = new ArrayList<String>();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
request.setAttribute("list", list);
%>
<c:forEach items="${requestScope.list }" var="list">
${list }
</c:forEach>
</body>
</html>
结果:zhangsan lisi wangwu