zoukankan      html  css  js  c++  java
  • JSTL

    JSTL

    JSP Standard Tag Library JSP 标准标签库,JSP 为开发者提供的⼀系列的标签,使⽤这些标签可以完成
    ⼀些逻辑处理,⽐如循环遍历集合,让代码更加简洁,不再出现 JSP 脚本穿插的情况。
    实际开发中 EL 和 JSTL 结合起来使⽤,JSTL 侧重于逻辑处理,EL 负责展示数据。
    JSTL 的使⽤
    1、需要导⼊ jar 包(两个 jstl.jar standard.jar)存放的位置 web/WEB-INF
    2、在 JSP ⻚⾯开始的地⽅导⼊ JSTL
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

    3.一个直白的例子

    <c:forEach items="${list}" var="user">
     <tr>
     <td>${user.id}</td>
     <td>${user.name}</td>
     <td>${user.score}</td>
     <td>${user.address.value}</td>
     </tr>
    </c:forEach>
    4.JSTL 优点
    1、提供了统⼀的标签
    2、可以⽤于编写各种动态功能
    5.
    核⼼标签库常⽤标签:
    set、out、remove、catch
    set:向域对象中添加数据
    <%
     requset.setAttribute(key,value)
    %>
    
    <c:set var="name" value="tom" scope="request"></c:set>
    ${requestScope.name}
    <%
    User user = new User(1,"张三",66.6,new Address(1,"科技路"));
    request.setAttribute("user",user);
    %>
    ${user.name}
    <hr/>
    <c:set target="${user}" property="name" value="李四"></c:set>
    ${user.name}
    out:输出域对象中的数据
    <c:set var="name" value="tom"></c:set>
    <c:out value="${name}" default="未定义"></c:out>
    remove:删除域对象中的数据
    <c:remove var="name" scope="page">
    </c:remove> <c:out value="${name}" default="未定义"></c:out>
    catch:捕获异常
    <c:catch var="error">
     <%
     int a = 10/0;
     %>
    </c:catch>
    ${error}

    一个例子

      <%
          List<User> list=(List<User>) request.getAttribute("list");
          for(User user:list){
        request.setAttribute("user",user);//修改后
    %> <tr> <td>${user.id}</td> <td>${user.name}</td> <td>${user.score}</td> <td>${user.address.value}</td> </tr> <% } %>

    此时用${}取值不行

    原因:没有将user对象setAttribute

    修改方式:加上setAttribute

    迭代标签:forEach
    <c:forEach items="${list}" var="str" begin="2" end="3" step="2"
    varStatus="sta">
     ${sta.count}、${str}<br/>
    </c:forEach>
    条件标签:if choose
    <c:set var="num1" value="1"></c:set> <c:set var="num2" value="2"></c:set> 
    <c:if test="${num1>num2}">ok</c:if> <c:if test="${num1<num2}">fail</c:if> <hr/> <c:choose> <c:when test="${num1>num2}">ok</c:when> <c:otherwise>fail</c:otherwise> </c:choose>
     
    格式化标签库常⽤的标签:
    <%
    request.setAttribute("date",new Date());
    %>
    <fmt:formatDate value="${date}" pattern="yyyy-MM-dd HH:mm:ss">
    </fmt:formatDate><br/>
    <fmt:formatNumber value="32145.23434" maxIntegerDigits="2"
    maxFractionDigits="3"></fmt:formatNumber>
    函数标签库常⽤的标签:
    <%
    request.setAttribute("info","Java,C");
    %>
    ${fn:contains(info,"Python")}<br/>
    ${fn:startsWith(info, "Java")}<br/>
    ${fn:endsWith(info, "C")}<br/>
    ${fn:indexOf(info, "va")}<br/>
    ${fn:replace(info, "C","Python")}<br/>
    ${fn:substring(info, 2, 3)}<br/>
    ${fn:split(info, ",")[0]}-${fn:split(info, ",")[1]}
  • 相关阅读:
    ES6学习笔记(七)-对象扩展
    ES6学习笔记(四)-数值扩展
    ES6学习笔记(三)-正则扩展
    ES6学习笔记(二)-字符串的扩展
    ES6学习笔记(一)-变量的解构赋值
    webpack打包踩坑之TypeError: Cannot read property 'bindings' of null
    CSS之Flex 布局
    iscsi
    DHCP
    DNS
  • 原文地址:https://www.cnblogs.com/hanabi-521/p/14324329.html
Copyright © 2011-2022 走看看