zoukankan      html  css  js  c++  java
  • JSP 标准标签库(JSTL)(菜鸟教程)

    菜鸟教程

    JSTL 1.1 与 JSTL 1.2 之间的区别?如何下载 JSTL 1.2?

    JSTL 1.2 中不要求 standard.jar 包。

    您可以在 Maven 中央仓库中找到它们。

    http://repo2.maven.org/maven2/javax/servlet/jstl/

    http://repo2.maven.org/maven2/taglibs/standard/

    由于JSTL 1.1已经过时,Apache已将其置于存档中。选择jakarta-taglibs-standard-current.zip文件。

    但是,如果您正在运行Servlet 2.5兼容容器并且web.xml声明为至少Servlet 2.5

    那么您应该能够使用新的JSTL 1.2

    需要注意的是JSTL 1.2并没有要求standard.jar

    根据JSTL标签所提供的功能,可以将其分为5个类别。

    • 核心标签
    • 格式化标签
    • SQL 标签
    • XML 标签
    • JSTL 函数

    JSTL 库安装

    从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip)。

    下载 jakarta-taglibs-standard-1.1.2.zip 包并解压,将 jakarta-taglibs-standard-1.1.2/lib/ 下的两个 jar 文件:standard.jar 和 jstl.jar 

    文件拷贝到 /WEB-INF/lib/ 下。

    将 tld 下的需要引入的 tld 文件复制到 WEB-INF 目录下。

    接下来我们在 web.xml 文件中添加以下配置:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" 
        xmlns="http://java.sun.com/xml/ns/j2ee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
            http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
        <jsp-config>
        <taglib>
        <taglib-uri>http://java.sun.com/jsp/jstl/fmt</taglib-uri>
        <taglib-location>/WEB-INF/fmt.tld</taglib-location>
        </taglib>
        <taglib>
        <taglib-uri>http://java.sun.com/jsp/jstl/fmt-rt</taglib-uri>
        <taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
        </taglib>
        <taglib>
        <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
        <taglib-location>/WEB-INF/c.tld</taglib-location>
        </taglib>
        <taglib>
        <taglib-uri>http://java.sun.com/jsp/jstl/core-rt</taglib-uri>
        <taglib-location>/WEB-INF/c-rt.tld</taglib-location>
        </taglib>
        <taglib>
        <taglib-uri>http://java.sun.com/jsp/jstl/sql</taglib-uri>
        <taglib-location>/WEB-INF/sql.tld</taglib-location>
        </taglib>
        <taglib>
        <taglib-uri>http://java.sun.com/jsp/jstl/sql-rt</taglib-uri>
        <taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
        </taglib>
        <taglib>
        <taglib-uri>http://java.sun.com/jsp/jstl/x</taglib-uri>
        <taglib-location>/WEB-INF/x.tld</taglib-location>
        </taglib>
        <taglib>
        <taglib-uri>http://java.sun.com/jsp/jstl/x-rt</taglib-uri>
        <taglib-location>/WEB-INF/x-rt.tld</taglib-location>
        </taglib>
        </jsp-config>
    </web-app>

    使用任何库,你必须在每个 JSP 文件中的头部包含 <taglib> 标签。

    核心标签

    核心标签是最常用的 JSTL标签。引用核心标签库的语法如下:

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

    <c:out> 标c:out

    <c:out>标签用来显示一个表达式的结果,与<%= %>作用相似,

    它们的区别就是<c:out>标签可以直接通过"."操作符来访问属性。

    如果想要访问customer.address.street,只需要这样写:<c:out value="customer.address.street">。

    语法格式

    <c:out value="<string>" default="<string>" escapeXml="<true|false>"/>

     

    <c:set> 标签   c:set

    <c:set>标签用于设置变量值和对象属性。

    <c:set>标签就是<jsp:setProperty>行为标签的孪生兄弟。

    这个标签之所以很有用呢,是因为它会计算表达式的值然后使用计算结果来设置 JavaBean 对象或 java.util.Map 对象的值。

    <c:set var="salary" scope="session" value="${2000*2}"/>
    <c:out value="${salary}"/>

    <c:remove> 标签  c:remove

    <c:remove>标签用于移除一个变量,可以指定这个变量的作用域,若未指定,则默认为变量第一次出现的作用域。

    这个标签不是特别有用,不过可以用来确保JSP完成清理工作

    <c:remove var="<string>" scope="<string>"/>

     

    <c:set var="salary" scope="session" value="${2000*2}"/>
    <p>salary 变量值: <c:out value="${salary}"/></p>
    <c:remove var="salary"/>
    <p>删除 salary 变量后的值: <c:out value="${salary}"/></p>

    <c:catch> 标签  c:catch

     <c:catch> 标签主要用来处理产生错误的异常状况,并且将错误信息储存起来。

     

    <c:catch var ="catchException">
       <% int x = 5/0;%>
    </c:catch>
    
    <c:if test = "${catchException != null}">
       <p>异常为 : ${catchException} <br />
       发生了异常: ${catchException.message}</p>
    </c:if>

    <c:if> 标签   c:if

     <c:if>标签判断表达式的值,如果表达式的值为 true 则执行其主体内容。

     

    <c:set var="salary" scope="session" value="${2000*2}"/>
    <c:if test="${salary > 2000}">
       <p>我的工资为: <c:out value="${salary}"/><p>
    </c:if>

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

    <c:choose>标签与Java switch语句的功能一样,用于在众多选项中做出选择。

    switch语句中有case,而<c:choose>标签中对应有<c:when>,

    switch语句中有default,而<c:choose>标签中有<c:otherwise>。

     

    <c:set var="salary" scope="session" value="${2000*2}"/>
    <p>你的工资为 : <c:out value="${salary}"/></p>
    <c:choose>
        <c:when test="${salary <= 0}">
           太惨了。
        </c:when>
        <c:when test="${salary > 1000}">
           不错的薪水,还能生活。
        </c:when>
        <c:otherwise>
            什么都没有。
        </c:otherwise>
    </c:choose>

    <c:import> 标签    c:import

    <c:import>标签提供了所有<jsp:include>行为标签所具有的功能,同时也允许包含绝对URL。

    举例来说,使用<c:import>标签可以包含一个FTP服务器中不同的网页内容。

     

    <c:import var="data" url="http://www.runoob.com"/>
    <c:out value="${data}"/>

    以上程序将会打印http://www.runoob.com"页面的源代码

    <c:forEach>, <c:forTokens> 标签   c:forEach   c:forTokens

    这些标签封装了Java中的for,while,do-while循环。

    相比而言,<c:forEach>标签是更加通用的标签,因为它迭代一个集合中的对象。

    <c:forTokens>标签通过指定分隔符字符串分隔为一个数组然后迭代它们。

     

    <c:forEach>标签有如下属性:

    属性描述是否必要默认值
    items 要被循环的信息
    begin 开始的元素(0=第一个元素1=第二个元素 0
    end 最后一个元素(0=第一个元素,1=第二个元素) Last element
    step 每一次迭代的步长 1
    var 代表当前条目的变量名称
    varStatus 代表循环状态的变量名称

     <c:forTokens>标签与<c:forEach>标签有相似的属性,

    不过<c:forTokens>还有另一个属性:

    delims 分隔符
    <c:forEach var="i" begin="1" end="5">
       Item <c:out value="${i}"/><p>
    </c:forEach>

    <c:forTokens>演示实例

    <c:forTokens items="google,runoob,taobao" delims="," var="name">
       <c:out value="${name}"/><p>
    </c:forTokens>

    <c:param> 标签   c:param

    <c:param>标签用于在<c:url>标签中指定参数,而且与URL编码相关。

    在<c:param>标签内,name属性表明参数的名称,value属性表明参数的值。

     

     <h1>&lt;c:param&gt; 实例</h1>
        <c:url var="myURL" value="main.jsp">
            <c:param name="name" value="Runoob"/>
            <c:param name="url" value="www.runoob.com"/>
        </c:url>
          <a href="/<c:out value="${myURL}"/>">
     使用 &lt;c:param&gt; 为指定URL发送两个参数。</a>

    <c:redirect> 标签    c:redirect

     <c:redirect>标签通过自动重写URL来将浏览器重定向至一个新的URL,它提供内容相关的URL,并且支持c:param标签。

    <c:redirect url="http://www.runoob.com"/>

    <c:url> 标签   c:url

    <c:url>标签将URL格式化为一个字符串,然后存储在一个变量中。

    这个标签在需要的时候会自动重写URL。

    var属性用于存储格式化后的URL。

    <c:url>标签只是用于调用response.encodeURL()方法的一种可选的方法。它真正的优势在于提供了合适的URL编码,包括<c:param>中指定的参数。

     

    <h1>&lt;c:url&gt实例 Demo</h1>
        <a href="<c:url value="http://www.runoob.com"/>">
         这个链接通过 &lt;c:url&gt; 标签生成。
        </a>
  • 相关阅读:
    【eclipse】Server Tomcat v9.0 Server at localhost failed to start.
    【eclipse】运行maven项目clean tomcat7:run报错
    window下安装redis报错: creating server tcp listening socket 127.0.0.1:6379: bind No error
    【eclipse】svn在线安装
    【eclipse】点Clean后没反应
    谷歌浏览器&360浏览器安装——有道云笔记插件
    阿里云企业邮箱设置
    PyTorch 高级实战教程:基于 BI-LSTM CRF 实现命名实体识别和中文分词
    最全Pycharm教程(43)——Pycharm扩展功能之UML类图使用 代码结构
    精选Pycharm里6大神器插件
  • 原文地址:https://www.cnblogs.com/mkl7/p/10836448.html
Copyright © 2011-2022 走看看