JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言!JSTL标签使用很是方便,它与JSP动做标签同样,只不过它不是 JSP内置的标签,须要咱们本身导包,以及指定标签库。html
为何须要JSTL标签库?在渲染jsp页面时,不少时候会进行条件判断、循环等操做,这时又要与java逻辑代码混写。JSTL就能够解决这个问题java
一、导入JSTL(IDE版)apache
taglib中uri必须是这个,能够看到这个uri变成红色,爆红意味着找不到,国内是访问不到这个地址,咱们须要配置成本地标签。session
二、JSTL标签的基本使用app
<%@ page import="java.util.HashMap" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>Title</title> </head> <style> td{ text-align: center; } </style> <body> <%-- 1.内容输出 <c:out value="" default=""></c:out> value:要输出的内容 default:当value没有设置值时,输出default设置的值 2.向做用域设置属性值 <c:set var="" value="" scope=""></c:set> var:表示参数的key value:表示参数的值 scope:指定向哪一个做用域设置属性值,默认向pageContext做用域中设置属性 3.删除做用域的数据 <c:remove var="" scope=""></c:remove> var:要删除属性的key scope:删除指定做用域的值,若是没指定,则删除全部做用域key的值 4.逻辑判断 <c:if test="" var="" scope=""></c:if> test:逻辑判断表达式 var:条件表达式的结果存储变量 scope:结果变量存储的做用域 <c:choose> 相似于switch case <c:when></c:when> <c:when></c:when> …… </c:choose> 5.循环 <c:forEach begin="0" end="3" step="1" var="data" items="" varStatus=""></c:forEach> begin:循环开始位置 end:循环结束位置 step:循环步长 var:循环数据每条记录的迭代变量名(随便起个变量名便可) items:要循环的数据 varStatus:循环状态的变量值名称(随便起个名便可) --%> <c:set var="name" value="pageContext" scope="page"></c:set> <c:set var="name" value="request" scope="request"></c:set> <c:set var="name" value="session" scope="session"></c:set> <c:set var="name" value="application" scope="application"></c:set> <%--key相同,则优先取做用域范围小的pageContext--%> <c:out value="${name}"></c:out><%--输出pageContext--%> <%--key相同,如何取指定做用域中的值--%> <c:out value="${pageScope.name}"></c:out><%--输出pageContext--%> <c:out value="${requestScope.name}"></c:out><%--输出request--%> <c:out value="${sessionScope.name}"></c:out><%--输出session--%> <c:out value="${applicationScope.name}"></c:out><%--输出application--%> <c:remove var="name"></c:remove> <c:set var="i" value="2"></c:set> <c:if test="${i>1}" var="flag" scope="request"> <h3>JSTL</h3> </c:if> <c:set var="age" value="20"></c:set> <c:choose> <c:when test="${age<18}"> <b>青少年</b> </c:when> <c:when test="${age>=18}"> <b>成年</b> </c:when> </c:choose> <hr> <% HashMap<String, Integer> userInfo = new HashMap<String, Integer>(); userInfo.put("zhangsan", 20); userInfo.put("lisi", 22); userInfo.put("wangwu", 24); userInfo.put("zhaoliu", 25); pageContext.setAttribute("userInfo", userInfo); %> <table border="1px" cellspacing="0" > <tr> <td>姓名</td> <td>年龄</td> <td>当前循环索引</td> <td>当前循环次数</td> <td>当前是不是第一次循环</td> <td>当前是不是最后一次循环</td> </tr> <c:forEach begin="0" end="3" step="1" var="data" items="${userInfo}" varStatus="status"> <tr> <td>${data.key}</td> <td>${data.value}</td> <td>${status.index}</td> <td>${status.count}</td> <td>${status.first}</td> <td>${status.last}</td> </tr> </c:forEach> </table> </body> </html>
记住核心标签库便可,其余标签库用到的时候再查
其余标签库参考菜鸟教程https://www.runoob.com/jsp/js...jsp