JSTL标签库
🐲技术引入:
解决在代码中实现逻辑判断(if、while、for),帮助我们在jsp页面中添加复杂的逻辑判断,避免逻辑代码和页面标签混为一谈。
🐲内容:
-
JSTL是apache对EL表达式的扩展,为了方便从作用域中获取值
-
JSTL是标签语言
-
使用需要导包
-
JSTL导入
添加jstl.jar,standard.jar添加到web-inf下的lib目录
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-
简单案例:
<body> <c:out value="哈哈"></c:out> <!--JSTL标签--> </body>
🐲标签分类:
核心标签库(必须掌握)
格式化标签库(掌握)
函数标签库(了解)
XML标签库(了解)
SQL标签库(了解)
🐲标签学习:
<c:out value="哈哈"></c:out>
输出标签
value:填写要输出的值
default:默认值
<c:set var="java" value="pageContext" scope="page"></c:set>
向作用域中设置属性值
var:表示参数的key
value:表示参数的值
scope:表示向哪个作用域设置属性值
注意:当只配置这两个属性的值的时候,默认向pageContext作用域中设置属性,可以通过参数来做选择向哪个作用域设置属性值
<c:remove var="java"></c:remove>
删除作用域中的数据
var:作用域中的key
scope:删除指定作用域中的数据
注意:如果没有指定scope属性,那么默认会把所用作用域中的参数都删掉
<c:if test="${a>5}"></c:if>
逻辑判断,if判断
test:填写逻辑判断表达式
var:条件表达式的结果存储变量
scope:结果变量存储的作用域
<c:choose> <c:when test="${age<10}"></c:when> </c:choose>
进行多重逻辑判断类似于switch
<c:forEach begin="0" end="2" step="1" varStatus="sta" var="i" items="${map}">
循环标签
begin:起始值
end:结束值
step:步长
varStatus:循环状态的变量值名称
var:集合数据的每条记录的迭代值
items:从作用域中获取的数据
<body>
<%
request.setAttribute("str","happy");
request.setAttribute("hello","world");
request.setAttribute("java","1234");
%>
<c:out value="哈哈"></c:out> <!--JSTL标签-->
<c:out value="${str2}" default="嘿嘿"></c:out>
<c:out value="${hello}"></c:out>
<!-- 向作用域设置属性值 -->
<c:set var="java" value="pageContext" scope="page"></c:set>
<c:set var="java" value="request" scope="request"></c:set>
<c:set var="java" value="session" scope="session"></c:set>
<c:set var="java" value="application" scope="application"></c:set>
<!---->
<c:out value="${pageScope.java}"></c:out>
<c:out value="${requestScope.java}"></c:out>
<c:out value="${sessionScope.java}"></c:out>
<c:out value="${applicationScope.java}"></c:out>
<!--删除作用域中的数据-->
<c:remove var="java"></c:remove>
<c:remove var="java" scope="request"></c:remove>
<c:out value+"${java}"></c:out>
<!--逻辑判断标签-->
<% int i = 10;
if(i>5){
%>
jstl is easy
<%}%>
<c:set vat="a" value="6"></c:set>
<c:if test="${a>5}" var="flag" scope="request">
<h1> jstl is easy</h1>
</c:if>
<!--多重逻辑判断标签-->
<c:set vat="age" value="15"></c:set>
<c:choose>
<c:when test="${age<10}">
<h1>小孩</h1>
</c:when>
<c:when test="${age<20}">
<h1>青少年</h1>
</c:when>
<c:when test="${age<30}">
<h1>青年</h1>
</c:when>
<c:when test="${age<40}">
<h1>中年</h1>
</c:when>
<c:when test="${age<50}">
<h1>老年</h1>
</c:when>
<c:otherwise>
<h1> i don't know </h1>
</c:otherwise>
</c:choose>
<!--循环标签-->
<table border="1px">
<tr>
<td>1</td>
<td>111</td>
</tr>
<tr>
<td>2</td>
<td>222</td>
</tr>
<tr>
<td>3</td>
<td>333</td>
</tr>
</table>
<% HashMap<String,String> map = new HashMap<String,String>();
map.put("1","111");
map.put("2","222");
map.put("3","333");
request.setAttribute("map",map);
%>
<table border="1px">
<c:forEach begin="0" end="2" step="1" varStatus="sta" var="i" items="${map}">
<tr>
<td>${i.key}</td>
<td>${i.value}</td>
</tr>
</c:forEach>
</table>
</body>