二、JSTL 标签库
JSTL标签库全称是指JSP Standard Tag LibraryJSP标准标签库。是一个不断完善的开放源代码的JSP标签库。
EL表达式主要是为了替换jsp中的表达式脚本,而标签库则是为了替换代码脚本。这样使得整个jsp页面变得更佳简洁。
JSTL 由五个不同功能的标签库组成。
JSTL 标签库的使用步骤
先导入jstl标签库的jar包
taglibs-standard-impl-1.2.1.jartaglibs-standard-spec-1.2.1.jar
第二步,使用taglib 指令引入标签库
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %> core 核心库使用 <c:set /> 使用set标签可以往域中保存数据 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%-- Created by IntelliJ IDEA. User: Jack Date: 2021/12/25 Time: 19:54 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <%-- 域对象.setAttribute( key , value); scope属性设置保存到哪个域 page表示Pagecontext域 request表示Request域 session表示Session域 application表示ServletContext域 var属性 设置key是多少 value属性 设置值 --%> 保存之前:${ requestScope.abc}<br/> <c:set scope="request" var="abc" value="abcValue"/> 保存之后:${ requestScope.abc}<br/> </body> </html>
<c:if /> <c:if test="${12 == 12 }"> <h1> 12等于12 </h1> </c:if> <c:if test="${12 != 12}"> <h1> 12 不等于 12</h1> </c:if>
<c:choose > <c:when > <c:otherwise >标签
多路判断,跟switch…case…default非常类似
<%--choose标签开始选择判断--%> <%--when表示每一种判断的情况--%> <%--otherwise标签表示剩下的情况--%> <%--<c : choose> <c:when> <c :otherwise>标签使用时需要注意的点:--%> <%-- 1,标签里不能使用htmL注释,要使用jsp注释--%> <%-- 2,when标签的父标签一定要是choose标签--%> <% // 在域里设置一个属性 request.setAttribute("height",178); %> <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>你比它们都帅!</h2> </c:otherwise> </c:choose>
<c:forEach /> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%-- Created by IntelliJ IDEA. User: Jack Date: 2021/12/25 Time: 22:46 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <%--遍历1到10的情况 begin属性设置开始的索引 end属性设置结束的索引 var属性表示循环的变量 for(int i = 1; i<10 ; i++) --%> <c:forEach begin="1" end="10" var="i"> ${ i } </c:forEach> </body> </html>
这玩意是真的灵活
<table border="1"> <c:forEach begin="1" end="10" var="i"> <tr> <td>${ i }</td> </tr> </c:forEach> </table>
遍历Object数组
<% request.setAttribute("arr",new String[]{"123456789","32432423534"}); %> <c:forEach items="${requestScope.arr}" var="item"> ${item}<br> </c:forEach>
遍历map集合
<% Map<String, Object> map = new HashMap<>(); map.put("key1","value1"); map.put("key2","value2"); map.put("key3","value3"); request.setAttribute("map",map); %> <%--item是数据域中的集合--%> <c:forEach items="${requestScope.map}" var="entry"> <h1>${entry.key} = ${entry.value}</h1> </c:forEach>