Servlet之JSTL

JSTL标签库

JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言!JSTL标签使用很是方便,它与JSP动做标签同样,只不过它不是 JSP内置的标签,须要咱们本身导包,以及指定标签库。html

为何须要JSTL标签库?在渲染jsp页面时,不少时候会进行条件判断、循环等操做,这时又要与java逻辑代码混写。JSTL就能够解决这个问题java

一、导入JSTL(IDE版)apache

  • 在项目中添加lib目录并导入相关的jar包

image

  • 在jsp页面中添加taglib标签指令

image
taglib中uri必须是这个,能够看到这个uri变成红色,爆红意味着找不到,国内是访问不到这个地址,咱们须要配置成本地标签。
image
image
imagesession

二、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

  • 标准化标签库
  • 函数标签库
相关文章
相关标签/搜索