zoukankan      html  css  js  c++  java
  • JSTL

    1.什么是JSTL?

    JSTL全名为JavaServer Pages Standard Tag Library,是由JCP所指定的标准规格,主要提供给java web开发人员一个标准通用的标签函数库。web程序开发人员能够利用JSTL和ELl来开发web程序,取代传统直接在页面上嵌入java程序的做法,以提高程序可读性,维护性和方便性。

    2.JSTL标签库的分类

    • 核心标签(用的最多)
    • 国际化标签(I18N格式化标签)
    • 数据库标签(SQL标签,很少使用)
    • XML标签(几乎不用)
    • JSTL函数(EL函数)

    3.核心标签库

    从功能上可以分为4类:表达式控制标签,流程控制标签,循环标签,URL操作标签。

    ①表达式控制标签:out标签,set标签,remove标签,catch标签

    ②流程控制标签:if标签,choose标签,when标签,otherwise标签

    ③循环标签:forEach标签,forTokens标签

    ④URL操作标签:import标签,url标签,redirect标签,param标签

    在jsp页面中引入核心标签库的代码为:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

    3.1 <c:out>标签使用总结

    3.1.1 <c:out>标签主要用来显示数据的内容,就像是<%= scripting-language %>一样,和EL表达式的区别在于使用<c:out>标签可以对敏感的字符自动进行转换。

    如以下代码:

    <body>
      <h4>c:out</h4>
      <%
      request.setAttribute("book","<<java>>");
       %>
       book:${requestScope.book}
       <br><br>
       book:<c:out value="${requestScope.book}"></c:out>
    </body>

     运行后显示:

    查看网页的源代码:

    <body data-genuitec-lp-enabled="false" data-genuitec-file-id="wc1-13" data-genuitec-path="/MyWebProject/WebRoot/tag/jstl.jsp">
        <h4 data-genuitec-lp-enabled="false" data-genuitec-file-id="wc1-13" data-genuitec-path="/MyWebProject/WebRoot/tag/jstl.jsp">c:out</h4>
        
         book:<<java>>
         <br><br>
         book:<<java>>
    </body>
    

    可以看到使用<c:out>时进行了特殊字符的转换。

    3.1.2 <c:out>标签的属性

    3.2 <c:set>标签可以为域对象赋值

    <c:set var="name" value="koala" scope="page"></c:set>
    <br><br>
    name:${pageScope.name}
    

    相当于

    <%=pageContext.setAttribute("name","koala") %>
    

     value可以使用EL表达式:

    <c:set var="subject" value="${param.subject}" scope="session"></c:set>
     subject:${sessionScope.subject}
    

    3.3 <c:remove>标签可以移除指定域对象的指定属性值

    <c:remove>标签可以将<c:set>标签设置的值移除,使用时需要指定变量名和属性范围。例如,移除上面设置的name变量的属性值。

    <c:remove var="name" scope="page"></c:remove>
    

    3.4 <c:if>标签

    <c:if>标签必须要有test属性,当test中的表达式结果为true时,执行标签体内容。<c:if>标签没有else,但可以把判断的结果储存起来,以备之后使用。像下面这样:

    <c:if test="${requestScope.age>18}">成年!</c:if>
    <br><br>
    <c:if test="${requestScope.age>18}" var="isAdult" scope="request"></c:if>
    isAdult:<c:out value="${requestScope.isAdult}"></c:out>
    <br><br>
    

    3.5 <c:choose>,<c:when>,<c:otherwise>标签

    <c:choose>
           <c:when test="${param.age>60}">老年</c:when>
           <c:when test="${param.age>35}">中年</c:when>
           <c:when test="${param.age>18}">青年</c:when>
           <c:otherwise>未成年</c:otherwise>
    </c:choose>
    

    c:choose,c:when,c:otherwise可以实现if...else if...else if...else的效果,但较为麻烦,其中c:choose以c:when,c:otherwise的父标签出现,并且c:when,c:otherwise不能脱离c:choose单独使用,c:otherwise必须在c:when之后使用。

    3.6 迭代操作标签

    <c:forEach>:可以对数组,Collection,Map进行遍历,可以指定起始位置begin(对于集合begin从0开始算),结束位置end,以及步长step。例如:

    <c:forEach begin="1" end="10" step="2" var="i">
         ${i}
    </c:forEach>
    

    3.7 URL操作

    JSTL包含三个与URL操作有关的标签,分别为:<c:import>,<c:redirect>和<c:url>。它们主要的功能是用来将其他文件的内容包含起来,网页的导向,还有url的产生。

    <c:import>可以包含任何页面到当前页面。

    <c:redirect>可以使当前jsp页面重定向到任何指定页面。

    <c:url>产生一个url地址,可以根据Cookie是否可用来智能进行URL重写,对GET请求的参数进行编码,可以把产生的URL存储在域对象中的属性中,还可以使用c:param为URL添加参数(c:url会对参数进行自动的转码)。

  • 相关阅读:
    Array.of()和Array()区别
    less常用方法
    javascript时间戳转换成yyyy-MM-DD格式
    javascript中标准事件流addEventListener介绍
    javascript中模块化知识总结
    搜索栏简单小案例
    css3伸缩布局中justify-content详解
    css3动画简单案例
    正则表达式的语法
    Beautisoup库
  • 原文地址:https://www.cnblogs.com/naihuangbao/p/9911260.html
Copyright © 2011-2022 走看看