zoukankan      html  css  js  c++  java
  • JSP JSTL入门

    1、安装JSTL(标准标签库)

    1)下载 jakarta-taglibs-standard-1.1.2.zip 包并解压,将 jakarta-taglibs-standard-1.1.2/lib/ 下的两个 jar 文件:standard.jar 和 jstl.jar 文件拷贝到 /WEB-INF/lib/ 下,下载链接:

    http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/jakarta-taglibs-standard-1.1.2.zip

    2)将需要引入的tld文件(标签库描述文件)复制到拷贝到 /WEB-INF/tld/ 下

    (tld文件中将写好的类映射成jsp标签,然后可以在jsp页面中使用定义好的标签)

    3)在web.xml文件中添加配置:

    以下列出了常用的tld文件的uri和文件名

      <jsp-config>
        <taglib>
        <taglib-uri>http://java.sun.com/jsp/jstl/fmt</taglib-uri>
        <taglib-location>/WEB-INF/tld/fmt.tld</taglib-location>
        </taglib>
        <taglib>
        <taglib-uri>http://java.sun.com/jsp/jstl/fmt-rt</taglib-uri>
        <taglib-location>/WEB-INF/tld/fmt-rt.tld</taglib-location>
        </taglib>
        <taglib>
        <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
        <taglib-location>/WEB-INF/tld/c.tld</taglib-location>
        </taglib>
        <taglib>
        <taglib-uri>http://java.sun.com/jsp/jstl/core-rt</taglib-uri>
        <taglib-location>/WEB-INF/tld/c-rt.tld</taglib-location>
        </taglib>
        <taglib>
        <taglib-uri>http://java.sun.com/jsp/jstl/sql</taglib-uri>
        <taglib-location>/WEB-INF/tld/sql.tld</taglib-location>
        </taglib>
        <taglib>
        <taglib-uri>http://java.sun.com/jsp/jstl/sql-rt</taglib-uri>
        <taglib-location>/WEB-INF/tld/sql-rt.tld</taglib-location>
        </taglib>
        <taglib>
        <taglib-uri>http://java.sun.com/jsp/jstl/x</taglib-uri>
        <taglib-location>/WEB-INF/tld/x.tld</taglib-location>
        </taglib>
        <taglib>
        <taglib-uri>http://java.sun.com/jsp/jstl/x-rt</taglib-uri>
        <taglib-location>/WEB-INF/tld/x-rt.tld</taglib-location>
        </taglib>
        </jsp-config>

    4)在使用该库的每个JSP的顶部包含一个 <taglib> 指令定义应用的标签库和访问前缀,例如:

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


    2、核心标签库

    1)定义:用于完成JSP页面的常用功能,包括JSTL的表达式标签(<c:out>、<c:set>、<c:remove>、<c:catch>)、URL标签(<c:import>、<c:redirect>、<c:url>、<c:param>)、流程控制标签(<c:if>、<c:choose>、<c:when>、<c:otherwise>)、循环标签(<c:foreach>、<c:forTokens>),他们的基本作用如下所示:

    <c:out>

    将表达式的值输出到JSP页面中,相当于JSP表达式<%=表达式%>

    <c:set>

    在指定范围中定义变量或为指定的对象设置属性值

    <c:remove>

    从指定的JSP范围中移除指定的变量

    <c:catch>

    捕获程序中出现的异常,并且将错误信息储存起来

    <c:if>

    与Java语言中用的if语句类似,仅当对表达式求出的值为true时,才处理标记的主体内容

    <c:choose>

    本身只当做<c:when>和<c:otherwise>的父标签,与Java预言中的switch语句类似

    <c:when>

    <c:choose>的子标签,用来判断条件是否成立

    <c:otherwise>

    <c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行

    <c:import>

    导入站内或其他网站的静态和动态文件到Web页面中

    <c:forEach>

    根据循环条件遍历数组和集合类中的所有或部分数据

    <c:forTokens>

    根据指定的分隔符来分隔字符串并迭代输出

    <c:param>

    为其它标签提供参数信息,通常与其它标签结合使用,比如给重定向的页面传递参数

    <c:redirect>

    重定向至一个新的URL

    <c:url>

    使用正确的URL重写规则构造一个URL

    2)<c:out>标签

    ①属性:

    属性

    描述

    是否必要

    默认值

    value

    要输出的内容

    default

    输出的默认值

    主体中的内容

    escapeXml

    指定是否转换特殊字符

    true

    ②注意:

    escape的值为true时不转换特殊字符,例如&lt转换后为<

    只有value属性可以使用EL表达式

    ③使用示例:

    <c:out value="${null}" default="hello" escapeXml="false"></c:out>

    3)<c:set>标签

    ①属性:

    属性

    描述

    是否必要

    默认值

    value

    要存储的值

    主体的内容

    target

    要修改的属性所属的对象

    property

    要修改的属性

    var

    存储信息的变量

    scope

    var属性的作用域

    Page

    ②说明:用于在某个范围(page、request、session、application等)中为某个名称设定特定的值,或者设定某个已经存在的JavaBean对象的属性。使用改标签可以在页面中定义变量。

    ③语法:

    用法1:

    <c:set value="value" var="varName" [scope="{page | request | session | application}"] />

    或:

    <c:set value="value" var="varName" [scope="{page | request | session | application}"] ></c:set>

    用法2:

    <c:set value="value" target="object" property="propertyName" />

    或:

    <c:set value="value" target="object" property="propertyName" ></c:set>

    ④使用示例:

    设置变量:

    <c:set var="str" value="hello JSTL" scope="page" ></c:set>

    设置JavaBean对象的属性:

    <jsp:useBean id="msg" class="cn.qi.JavaBean.MyMessage" scope="page" ></jsp:useBean>
    <c:set target="${msg}" property="message" value="hello JSTL" ></c:set>
    <c:out value="${msg.message}" ></c:out>

    ⑤注意:

    只有value、target属性可以使用EL表达式

    4)<c:if>标签:

    ①属性:

    属性

    描述

    是否必要

    默认值

    test

    条件表达式

    var

    用于存储条件判断结果的变量

    scope

    var属性的作用域(存在范围)

    page

    ②说明:将test属性的判断结果保存在指定范围scope的变量var中,还可以根据条件的判断结果执行标签主体。标签主体是JSP页面能够使用的任何元素,如HTML标记、Java代码或者其它的JSP标签。

    ③语法:

    <c:if test="condition" [var="varName"] [scope="{page | request | session | application}"] >

    标签主体部分

    </c:if>

    ④使用示例:

    <c:if test="${'1'.equals('1')}" var="res" scope="page">
        <c:out value="${res}" ></c:out>
      </c:if>

    ⑤注意:

    只有test属性可以使用EL表达式

    5)<c:forEach>标签:

    ①属性:

    属性

    描述

    是否必要

    默认值

    items

    指定被循环遍历的对象,多用于数组与集合类

    begin

    循环变量的初始位置(0=第一个元素,1=第二个元素)

    0

    end

    循环的终止位置(0=第一个元素,1=第二个元素)

    Last element

    step

    每一次迭代的步长

    1

    var

    代表当前条目的变量名称,例如items当前迭代到的对象成员

    varStatus

    代表循环状态的变量名称

    ②说明:

    可以根据循环条件遍历数组和集合类中的所有或部分数据。

    ③语法:

    <c:forEach items="collection_requestAttribute" [varStatus="varStatusName"] [var="varName"] [begin="begin"] [end="end"] [step="step"]>

    标签体部分

    </c:forEach>

    ④使用示例:

    <%
        ArrayList<String> arr = new ArrayList<>();
        arr.add("Linux入门");
        arr.add("windows入门");
        arr.add("系统平台入门");
        arr.add("Web应用程序入门");
        arr.add("安卓开发入门");
        request.setAttribute("book_arr", arr);
      %>
      <c:forEach items="${book_arr}" var="index" begin="1" end="3" step="2">
        <c:out value="${index}"/>
      </c:forEach>

    ⑤注意:

    var属性不可以使用EL表达式

    6)<c:forTokens>标签:

    ①属性:

    属性

    描述

    是否必要

    默认值

    items

    指定要迭代的String对象

    begin

    迭代的开始位置(0=第一个元素,1=第二个元素)

    0

    end

    迭代的结束位置(0=第一个元素,1=第二个元素)

    Last element

    step

    每一次迭代的步长

    1

    var

    保存分隔后的字符串

    varStatus

    代表循环状态的变量名称

    ②说明:用指定的分隔符分割一个字符串,根据分隔的数量确定循环的次数。

    ③语法:

    <c:forTokens items="stringOfTokens" delims="delimiters" [var="varName"] [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"] >

    标签主体部分

    </c:forTokens>

    ④使用示例:

    <c:set value="Java入门经典、Oracle学习手册、C#编程基础、轻松学Linux、ASP.NET实践" var="params" ></c:set>
      <b>分隔后的字符串:</b><br />
      <c:forTokens items="${params}" delims="、" var="cl" >
        <c:out value="${cl}"></c:out>
      </c:forTokens>
  • 相关阅读:
    Springboot整合MongoDB的Docker开发,其它应用也类似
    Docker可视化工具Portainer
    Mac上使用Docker Desktop启动Kubernetes,踩坑后终于搞掂
    Docker入门——理解Docker的核心概念
    删库吧,Bug浪——我们在同一家摸鱼的公司
    一键下载网页所有图片,把美丽存下来
    序列推荐(transformer)
    [论文笔记] An introduction to ROC analysis
    【推荐算法工程师技术栈系列】分布式&数据库--tensorflow
    [论文翻译]Practical Diversified Recommendations on YouTube with Determinantal Point Processes
  • 原文地址:https://www.cnblogs.com/GjqDream/p/11650478.html
Copyright © 2011-2022 走看看