什么是JSTL?
JSP Standard Tag Library,简称JSTL,JSP标准标签库,提供了一系列的标签供开发者在JSP页面中使用,编写各种动态功能。
JSTL常用标签?
JSTL一共包含四大标签库:
1.core:核心标签库
核心标签库主要分为如下:
- 表达式标签:out标签、set标签、remove标签、catch标签;
- 流程标签:if标签、choose标签、when标签、otherwise标签;
- 循环标签:forEach标签、forTokens标签;
- URL标签:import标签、url标签、redirect标签。
详细的作用描述如下:
2.fmt:格式化标签库
引用格式化标签库:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
3.sql:数据库标签库
JSTL SQL 标签提供了许多操作数据库(MySQL、Oracle、SQL Server 等)的标签。
导入 SQL 标签库的语法如下:
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
4.xml:xml标签库
不需要学习了,它过时了。
JSTL使用示例
<%@page import="java.util.List"%> <%@page import="java.util.ArrayList"%> <%@ page language="java" contentType="text/html; charset=utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <<jsp:useBean id="person" class="com.ftc.test.Person"></jsp:useBean> <!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=ISO-8859-1"> <title>Insert title here</title> </head> <body> <h2>this is index.jsp!</h1> <hr> <% String username = "ftc"; request.setAttribute("username", username); %> <c:out value="this is our JSTL firstDemo"></c:out> <hr> <input type="text" value="username" id="username" name="username" /> <input type="submit" value="submit" id="submit" name="submit" /> <c:out value="${username}"> </c:out> <br> <c:out value="${1+2}"></c:out> <c:out value="${empty username}"></c:out> <br> <c:out value="${name }" default="error"></c:out> <br> <!-- 存值到scope (存储一个value的常量到var这么变量中,作用于为scope) --> <c:set value="today" var="day" scope="session"></c:set> <c:out value="${day }"></c:out> <br> <c:set var="age" scope="application">eleven</c:set> <c:out value="${age}"></c:out> <c:set target="${person}" property="name" value="zhangsan"></c:set> <c:out value="${person.name}"></c:out> <!-- remove 标签的用法 --> <c:set var="firstname" value="vlay"></c:set> <c:out value="${firstname }"></c:out> <c:set var="lastname" value="wang"></c:set> <c:remove var="lastname" /> <c:out value="${lastname }"></c:out> <hr> <!-- catch标签的用法 --> <c:catch var="error"> <c:set target="aa" property="bb">asas</c:set> </c:catch> <c:out value="${error}"></c:out> <!-- if标签的用法 --> <form action="index.jsp" method="post"> <input type="text" name="score" value="${param.score}" /> <input type="submit" /> </form> <c:if test="${param.score>=90}" var="result" scope="application"> <c:out value="你的成绩是优秀"></c:out> <br> </c:if> <c:out value="${applicationScope.result}"></c:out> <hr> <!-- choose when otherwise标签的使用 --> <c:choose> <c:when test="${param.score>=90 && param.score<=100}"> <c:out value="优秀"></c:out> </c:when> <c:when test="${param.score>=80 && param.score<90}"> <c:out value="良"></c:out> </c:when> <c:when test="${param.score>=70 && param.score<80}"> <c:out value="中等"></c:out> </c:when> <c:when test="${param.score>=60 && param.score<70}"> <c:out value="及格"></c:out> </c:when> <c:when test="${param.score>=0 && param.score<60}"> <c:out value="不及格"></c:out> </c:when> <c:otherwise> <c:out value="你的输入有误!"></c:out> </c:otherwise> </c:choose> <c:choose> <c:when test="${param.score==100}"> <c:out value="你是满分"></c:out> </c:when> </c:choose> <br> <% List<String> fruits = new ArrayList<String>(); fruits.add("苹果"); fruits.add("橘子"); fruits.add("香蕉"); fruits.add("葡萄"); fruits.add("梨子"); request.setAttribute("fruits", fruits); %> <!-- foreach标签的使用 --> <c:forEach var="fruit" items="${fruits}"> <c:out value="${fruit}"></c:out> <br> </c:forEach> <hr> <c:forEach var="fruit" items="${fruits}" begin="1" end="3"> <c:out value="${fruit}"></c:out> <br> </c:forEach> <hr> <c:forEach var="fruit" items="${fruits}" step="2"> <c:out value="${fruit}"></c:out> <br> </c:forEach> <hr> <c:forEach var="fruit" items="${fruits}" varStatus="fru"> <c:out value="${fruit}的四个属性值"></c:out> <c:out value="index:${fru.index}"></c:out> <c:out value="count:${fru.count}"></c:out> <c:out value="first:${fru.first}"></c:out> <c:out value="last:${fru.last}"></c:out> <br> </c:forEach> <hr> </body> </html>
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》