(一)什么是JSTL?它有什么作用?
说明: JSTL是由sun公司制定的一套标准标签库,它可以简化JSP代码量、使得JSP开发者维护工作更加容易。
JSTL标签库有:Core、|18N、SQL、XML、Functions分别对应的前缀c、fmt、sql、x、fn.
(二)实现一个简单JSTL案例
在项目中lib中导入 jstl-1.2.jar、jstl-standard.jar
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%--使用taglib标签,引入Core标签库 --%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSTL案例</title>
</head>
<body>
<center>
<c:out value="实现第一个JSTL程序"></c:out>
</center>
</body>
</html>
输出:
(三)JSTL中Core标签库中常用标签
(1).<c:out>标签的使用
(2)<c:out>标签的常用3个属性
1.value:指定输出文本内容
2.default:当value属性值为null时,向浏览器页面输出默认值
3.escapeXml:用于指定是否将> ,< ,&等特殊字符进行HTML编码转换再输出,默认值为true.
(一)使用<c:out>标签输出默认值
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%--使用taglib标签,引入Core标签库 --%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSTL案例</title>
</head>
<body>
<center>
<!-- 第一个out标签,如果没有获取到请求参数,打印默认字符串 -->
<c:out value="${param.username}" default="Hello World"></c:out><br><br>
<!-- 第二个out标签,如果没有获取到请求参数,打印默认字符串 -->
<c:out value="${param.username}">Hello World</c:out>
</center>
</body>
</html>
浏览器地址栏输入:http://localhost/Project/index.jsp结果为:
浏览器地址栏输入:http://localhost/Project/index.jsp?username=Kaina结果为:
实例演示
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%--使用taglib标签,引入Core标签库 --%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSTL案例</title>
</head>
<body>
<center>
<!-- escapeXml值为true时,把下面的语句默认为字符串打印 -->
<c:out value="${param.username}" escapeXml="">
<a href="https://www.baidu.com/">登录百度网址</a>
</c:out>
</center>
</body>
</html>
(二)<c:if>标签的3个属性
1.test:设置逻辑表达式
2.var:指定逻辑表达式中的变量名
3.scope:指定var变量的作用范围,默认值为page,如果test的计算结果为true,那么标签体将执行,否则不执行。
实例演示:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%--使用taglib标签,引入Core标签库 --%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSTL案例</title>
</head>
<body>
<center>
<!--var配置变量名,value配置变量值 -->
<c:set value="1" var="a"></c:set>
<!-- 如果test属性中的表达式为true,打印出以下内容 -->
<c:if test="${a==1}">
标签体中的内容正在被执行.......
</c:if>
</center>
</body>
</html>
(三)<c:choose>标签嵌套以下标签
1.<c:when>:此标签中的test属性:设置逻辑表达式
2.<c:otherwise>
实例演示:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSTL案例</title>
</head>
<body>
<center>
<c:choose>
<!--相当于Java中的if语句-->
<c:when test="${empty param.username}">
请输入姓名.......
</c:when>
<c:when test="${ param.username=='Kaina'}">
${ param.username} 是一个IT爱好者
</c:when>
<!--相当于else语句 -->
<c:otherwise>
${ param.username}是一个公民
</c:otherwise>
</c:choose>
</center>
</body>
浏览器地址栏输入:http://localhost/Project/index.jsp?username=Kaina
(四)<c:forEach>标签的6个属性
1.var:指定属性名称
2.items:指定集合对象
3.begin:遍历开始位置
4.end:遍历结束位置
5.step:迭代因子的增量
6.varStatus:指定当前迭代信息对象保存到Page域中的名称
实例演示:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%--使用taglib标签,引入Core标签库 --%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSTL案例</title>
</head>
<body>
<% String[] names={"张三","李四","王五","曹操"}; %>
String 数组中的元素:<br/>
<c:forEach var="name" items="<%=names%>">
${name}<br>
</c:forEach>
<%
Map user=new HashMap();
user.put("1","张三");
user.put("2","李四");
user.put("3","王五");
user.put("4","曹操");
%><hr/>
HashMap集合中的元素:<br>
<c:forEach var="entry" items="<%=user%>">
${entry.key} ${entry.value}<br>
</c:forEach>
</body>
</html>
输出:
实例演示
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%--使用taglib标签,引入Core标签库 --%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSTL案例</title>
</head>
<body>
timeList集合:<br>
<%
List timelist=new ArrayList();
timelist.add("Friday");
timelist.add("Thusday");
timelist.add("Tuesday");
timelist.add("Monday");
timelist.add("Wednesday");
%><hr>
<c:forEach var="time" items="<%=timelist %>" begin="1" end="3" step="2">
${time} <br><hr>
</c:forEach>
</body>
</html>
输出:
实例演示
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%--使用taglib标签,引入Core标签库 --%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSTL案例</title>
</head>
<body>
<%
List userlist=new ArrayList();
userlist.add("张三");
userlist.add("李四");
userlist.add("王五");
%>
<table border="1" bgcolor="#9999dd">
<tr>
<td>序号</td>
<td>索引</td>
<td>是否为第一个元素</td>
<td>是否为最后一个元素</td>
<td>元素的值</td>
</tr>
<c:forEach var="name" items="<%=userlist%>" varStatus="status">
<tr>
<td>${status.count}</td>
<td>${status.index}</td>
<td>${status.first}</td>
<td>${status.last}</td>
<td>${name}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
输出:
(5)<c:param>和<c:url>标签
基本语法:
1.<c:url var="变量名" url="路径值">
2.<c:param name="变量名" value="属性值">
实例演示:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%--使用taglib标签,引入Core标签库 --%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSTL案例</title>
</head>
<body>
绝对路径构造URL:<br>
<c:url var="myURL" value="http://http://localhost:8080/Project/index.jsp">
<c:param name="username" value="Kaina"></c:param>
<c:param name="country" value="China"></c:param>
</c:url>
<a href="${myURL}">index.jsp</a>
相对路径构造URL:<br>
<c:url var="myURL" value="index.jsp?username=Kaina&country=China">
<a href="${myURL }">index.jsp</a>
</c:url>
</body>
</html>