JSTL标签库

一、JSTL标签库介绍

  • JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能
  • 意义:jstl出现的目的同el一样也是要替换jsp页面中的脚本代码

二、标签库的使用步骤

  1. 导入jstl标签的两个jar包

    taglibs-standard-impl-1.2.1.jar

    taglibs-standard-spec-1.2.1.jar

  2. 使用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

上一篇:JSTL学习总结


下一篇:idea 配置maven中的springMVC框架