JSTL标签库
JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言!JSTL标签使用非常方便,它与JSP动作标签一样,只不过它不是 JSP内置的标签,需要我们自己导包,以及指定标签库。
为什么需要JSTL标签库?在渲染jsp页面时,很多时候会进行条件判断、循环等操作,这时又要与java逻辑代码混写。JSTL就可以解决这个问题
1、导入JSTL(IDE版)
- 在项目中添加lib目录并导入相关的jar包
- 在jsp页面中添加taglib标签指令
taglib中uri必须是这个,可以看到这个uri变成红色,爆红意味着找不到,国内是访问不到这个地址,我们需要配置成本地标签。
2、JSTL标签的基本使用
- 核心标签库
<%@ 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...
- 标准化标签库
- 函数标签库
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。