JSTL核心标签库

三、JSTL标签库

1.JSTL是jsp标准标签库

2.JSTL中的五个标签库

核心标签库:主要用于完成基本的逻辑运算
格式化标签库:主要用于完成日期,数字的格式化显示
EL函数标签库:定义了若干EL函数
SQL操作标签库:目前已经不使用了
XML操作标签库:目前已经不使用了

3.核心标签库

(1)c:set标签
<%@ page pageEncoding="UTF-8" import="Servlet.*" import="java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%-- 本例演示JSTL标签库中的set标签 --%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>title</title>
	</head>
	<body>
		<%-- c:set 将变量放入指定的域中 --%>
		<%-- 这里的name默认存放到page域中,也可以通过scope属性指定对应的域 --%>
		<c:set var="name" value="张三" scope="session"></c:set>
		<%-- 找不到 --%>
		name = ${pageScope.name}<br>
		<%-- 能找到 --%>
		name = ${sessionScope.name}<br>
		<%-- c:set 为Bean的属性赋值 --%>
		<%
			Student s = new Student();
			pageContext.setAttribute("student", s);
		%>
		<c:set value="李四" property="name" target="${pageScope.student}"></c:set>
		<c:set value="20" property="age" target="${pageScope.student}"></c:set>
		student = ${student }<br>
		<%-- c:set 为Map赋值 --%>
		<%
			Map<String,Object> map = new HashMap<>();
			pageContext.setAttribute("map", map);
		%>
		<%-- 键值对以property和value成对出现 --%>
		<c:set value="male" property="sex" target="${pageScope.map }"></c:set>
		<c:set value="100" property="age" target="${pageScope.map }"></c:set>
		map = ${map }
	</body>
</html>

student类:

package Servlet;

public class Student 
{
	private String name;
	private int age;
	public Student() 
	{
		
	}
	public Student(String name,int age) 
	{
		this.name = name;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String toString() {
		return "Student [name=" + name + ", age=" + age + "]";
	}
}
(2)c:remove标签
(3)c:catch标签
(4)c:out标签
<%@ page pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%-- 本例演示c:remove,c:catch和c:out --%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>title</title>
	</head>
	<body>
		<%-- c:remove 删除指定域中的属性 --%>
		<c:set var="school" value="page"></c:set>
		<c:set var="school" value="request" scope="request"></c:set>
		<c:set var="school" value="session" scope="session"></c:set>
		<c:set var="school" value="application" scope="application"></c:set>
		<%-- 删除session域中的school属性 --%>
		<c:remove var="school" scope="session"/>
		school = ${pageScope.school }<br>
		school = ${requestScope.school }<br>
		school = ${sessionScope.school }<br>
		school = ${applicationScope.school }<br>
		<%-- c:remove 删除所有域中的属性 --%>
		<c:remove var="school"/>
		school = ${pageScope.school }<br>
		school = ${requestScope.school }<br>
		school = ${sessionScope.school }<br>
		school = ${applicationScope.school }<br>
		<%-- c:catch 捕获异常 --%>
		<c:catch var="exception">
			<%
				//此代码有异常
				int i = 5 / 0;
			%>
		</c:catch>
		exception = ${exception }<br>
		exception = ${exception.message }<br>
		<%-- c:out 用于输出,若EL中变量没有定义,则使用default中的默认值 --%>
		<c:set var="name" value="lisi"></c:set>
		name = <c:out value="${name }" default="zhangsan"></c:out><br>
		name = ${name }<br>
		<%-- 默认情况下c:out不会解析html,直接输出“<h1>我是标题<h1>” --%>
		<c:set var="title" value="<h1>我是标题<h1>"></c:set>
		<%-- 将escapeXml设为false时,会解析html --%>
		title = <c:out value="${title }" escapeXml="false"></c:out><br>
		<%-- EL表达式默认解析html --%>
		title = ${title }<br>
	</body>
</html>
(5)c:if标签
(6)c:choose标签
<%@ page pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>title</title>
	</head>
	<body>
		<%-- c:if的用法 --%>
		<c:set var="name" value="zhangsan"></c:set>
		<c:if test="${name == 'zhangsan' }">
			<a href="#">欢迎您${name }</a>
		</c:if>
		<br><br><br>
		<%-- c:choose的用法 --%>
		<c:set var="pageno" value="5"></c:set>
		<c:set var="totalno" value="10"></c:set>
		<%-- 根据当前的页数指定对应的链接 --%>
		<%-- c:choose只能包含两类标签c:when和c:otherwise --%>
		<c:choose>
			<%-- 当是第一页时 --%>
			<c:when test="${pageno == 1 }">
				<a href="#">下一页</a>
				<a href="#">末页</a>
				当前是:${pageno } / ${totalno } 页
			</c:when>
			<c:when test="${pageno == totalno }">
				<a href="#">首页</a>
				<a href="#">上一页</a>
				当前是:${pageno } / ${totalno } 页
			</c:when>
			<c:otherwise>
				<a href="#">首页</a>
				<a href="#">上一页</a>
				<a href="#">下一页</a>
				<a href="#">末页</a>
				当前是:${pageno } / ${totalno } 页
			</c:otherwise>
		</c:choose>
	</body>
</html>
(7)c:forEach标签
<%@ page pageEncoding="UTF-8" import="java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>title</title>
	</head>
	<body>
		<%
			List<String> ages = new ArrayList<>();
			ages.add("10");
			ages.add("11");
			ages.add("2");
			ages.add("100");
			ages.add("77");
			ages.add("93");
			ages.add("3");
			pageContext.setAttribute("ages", ages);
		%>
		<%-- 使用forEach遍历List --%>
		<%-- 从第3个开始,第5个结束 --%>
		<c:forEach items="${ages }" var="age" begin="3" end="5">
			${age }<br>
		</c:forEach>
		<br>----------------------------------<br>
		<%-- 从第0个开始,第5个结束,步长为2 --%>
		<c:forEach items="${ages }" var="age" begin="0" end="5" step="2">
			${age }<br>
		</c:forEach>
		<br>----------------------------------<br>
		<%-- 输出数字1-10 --%>
		<c:forEach begin="1" end="10" var="num">
			${num }&nbsp;
		</c:forEach>
	</body>
</html>

4.格式化标签库

这里只演示日期格式化

<%@ page pageEncoding="UTF-8" import="java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%-- 本例演示格式化日期标签 --%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>title</title>
	</head>
	<body>
		<%
			Date d = new Date();
			pageContext.setAttribute("d", d);
		%>
		<%-- 此时输出的是默认格式的日期 --%>
		date = ${d }<br>
		<%-- 使用自定义格式的日期 --%>
		date = <fmt:formatDate value="${d }" pattern="yyyy-MM-dd"/><br>
		<%-- 此处不显示,将格式化后的日期保存到变量birthday中 --%>
		date = <fmt:formatDate value="${d }" pattern="yyyy-MM-dd" var="birthday"/><br>
		生日:<input type="text" value="${birthday }" /><br>
	</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值