zoukankan      html  css  js  c++  java
  • JSTL标签的用法详解

    在JSP中写Java代码是一件很恶心的事情,代码量少的话还可以,要是多的话,就蛋疼了,整个页面都是<%  %>所以EL表达式和JSTL就应运而生了,这里我们注重讲解一下JSTL标签的使用:

    首先来开一下JSTL的语法:

    JSTL语法及参数 
    JSTL包含以下的标签: 
    常用的标签:如<c:out>、<c:remove>、<c:catch>、<c:set>等 
    条件标签:如<c:if><c:when>、<c:choose>、<c:otherwise>等 
    URL标签:如<c:import>、<c:redirect>和<c:url>等 
    XML标签:如<xml:out>等 
    国际化输出标签:如<fmt:timeZone>等 
    SQL标签:如<sql:query>、<sql:update>、<sql:transaction>等 

    一般用途的标签: 

    1.<c:out> 

    没有Body时的语法 
    <c:out value=”value” [escapeXml=”{true|false}”] [default=”defaultValue”]/> 
    有Body时的语法 
    <c:out value=”value” [escapeXml=”{true|false}”]> 
    这里是Body部分 
    </c:out> 
    名字 类型 描述 
    value Object 将要输出的表达式 
    escapeXml boolean 确定以下字符:<,>,&,’,”在字符串中是否被除数,默认为true 
    default Object 如果vaule计算后的结果是null,那么输出这个默认值 

    2.<c:set> 

    这个标签用于在某个范围(page、request、session、application等)中使用某个名字设定特定的值,或者设定某个已经存在的javabean对象的属性。他类似于<%request.setAttrbute(“name”,”value”);%> 
    语法1:使用value属性设定一个特定范围中的属性。 
    <c:set value=”value” var=”varName” [scope=”{page|request|session|application}”]/> 
    语法2:使用value属性设定一个特定范围中的属性,并带有一个Body。 
    <c:set var=”varName” [scope=”{page|request|session|application}”]> 
    Body部分 
    </c:set> 
    语法3:设置某个特定对象的一个属性。 
    <c:set value=”value” target=”target” property=”propertyName”/> 
    语法4:设置某个特定对象的一个属性,并带有一个Body。 
    <c:set target=”target” property=”propertyName”> 
    Body部分 
    </c:set> 
    名字 类型 描述 
    value Object 将要计算的表到式。 
    var String 用于表示value 值的属性,如果要在其他标签中使用,就是通过这 个var指定的值来进行的。它相当于在标签定义了一个变量,并且这个变量只能在标签中的一个。 
    scope String var的有效范围,可以是page|request|session|application中的一个 
    target String 将要设置属性的对象,它必须是javabean或则java.util.Map对象 
    property Object 待设定的Target对象中的属性名字,比如在javabean中有个name属性,提供了setUserId方法,那么这里填userId。 

    3.<c:remove> 

    <c:remove var=”varName” [scope=”{page|request|session|application}”]/> 

    4.<c:catch> 

    这个标签相当于捕获在它里边的标签抛出的异常对象 
    <c:catch [var=”varName”]> //var是异常的名字 
    内容 
    </c:catch> 


    条件标签 

    1. <c:if> 

    语法1:无Body情况 
    <c:if test=”testCondition” var=”varName” [scope=”page|request|session|application”]/> 
    语法2:有Body的情况 
    <c:if test=”testCondition” var=”varName” [scope=”page|request|session|application”]> 
    Body内容 
    </c:if> 
    名字 类型 描述 
    test Boolean 表达式的条件,相当于if()中的条件判断语句。 
    var String 表示这个语句的名字。 
    scope String var这个变量的作用范围。 

    2.<c:choose> 

    语法:<c:choose> 
    Body内容(<c:when>和<c:otherwise>子标签) 
    </c:choose> 
    注意:它的Body只能由以下元素组成: 
    1) 空格 
    2) 0或多个<c:when>子标签,<c:when>必须在<c:otherwise>标签之前出现. 
    3) 0个或多个<c:otherwise>子标签。 

    3.<c:when> 

    代表的是<c:choose>的一个条件分支,只能在<c:choose>中使用 
    语法:<c:when test=”testCondition”> //test是boolean类型,用于判断条件真假 
    Body语句 
    </c:when> 

    4.<c:otherwise> 

    代表的是<c:choose>中的最后选择。必须在最后出现 
    <c:otherwise> 
    内容 
    </c:otherwise> 

    迭代标签 

    1.<c:forEach> 
    语法1:在Collection中迭代 
    <c:forEach[var=”varName”] items=”collection” [varStatus=”varStatusName”] 
    [begin=”begin”] [end=”end”] [step=”step”] 
    Body内容 
    </c:foeEach> 
    语法2:迭代固定的次数. 
    <c:forEach [var=”varName”] [varStatus=”varStatusName”] 
    [begin=”begin”] [end=”end”] [step=”step”] 
    Body内容 
    </c:foeEach> 
    名字 类型 描述 
    var String 迭代的参数,它是标签参数,在其他标签中通过它来引用这个标签中的内容。 
    Items Collection、ArrayList、 要迭代的items集合. 
    Iterator、Map、String、 
    Eunmeration等 
    VarStatus String 表示迭代的状态,可以访问迭代自身的信息 
    Begin int 表示开始迭代的位置。 
    End int 表示结束迭代的位置。 
    Step int 表示迭代移动的步长,默认为1。 

    URL相关的标签 

    1.<c:import> 

    语法1:资源的内容使用String对象向外暴露 
    <c:import url=”url” [context=”context”] 
    [var=”varName”] [scope=”{page|request|session|application}”] [charEncoding=”charEncoding”]> 
    内容 
    </c:import> 
    语法2:资源的内容使用Reader对象向外暴露。 
    <c:import url=”url” [context=”context”] 
    varReader=”varReaderName” [charEncoding=”charEncoding”]> 
    内容 
    </c:import> 
    名字 类型 描述 
    url String 待导入资源的URL,可以是相对路径和绝对路径,并且可以导入其他主机资源 
    context String 当使用相对路径访问外部context资源时,context指定了这个资源的名字。 
    var String 参数的名字。 
    scope String var参数的作用范围。 
    cahrEncoding String 输入资源的字符编码。 
    varReader String 这个参数的类型是Reader,用于读取资源。 

    2.<c:redirct> 

    语法1:没有Body的情况. 
    <c:redirect url=”value” [context=”context”]/> 
    语法2:有Body情况下,在Body中指定查询的参数 
    <c:redirect url=”value” [context=”context”]> 
    <c:param name=”name” value=”value”/> 
    </c:redirect> 

    3.<c:url> 

    语法1:没有Body 
    <c:url value=”value” [context=”context”] [var=”varName”] [scope=”{page|request|session+application}”]/> 
    语法2:有Body 
    <c:url value=”value” [context=”context”] [var=”varName”] [scope=”{page|request|session+application}”]> 
    <c:param name=”name” value=”value”/> 
    </c:url> 
    名字 类型 描述 
    value String URL值 
    context String 当使用相对路径访问外部context资源时,context指定了这个资源的名字 
    var String 标识这个URL标量。 
    Scope String 变量作用范围。 


    下面来看一下JSTL的具体用法:

    首先定义一个Servlet中进行封装数据,然后转发到index.jsp页面中:

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

    /*************一个实体bean****************/
    UserBean userBean = new UserBean();
    userBean.setId("1001");
    userBean.setName("jiangwei");
    userBean.setAge(22);
    userBean.setSex("男");
    userBean.setBirth("1990-08-01");
    request.setAttribute("userBean", userBean);
    //request.getRequestDispatcher("/index.jsp").forward(request,response);

    /************多个实体bean****************/
    ArrayList<UserBean> userBeanList = new ArrayList<UserBean>();
    for(int i=0;i<5;i++){
    userBean.setId("1001");
    userBean.setName("jiangwei");
    userBean.setAge(22);
    userBean.setBirth("1990-08-01");
    userBeanList.add(userBean);
    }
    request.setAttribute("userBeanList", userBeanList);
    request.getRequestDispatcher("/index.jsp").forward(request,response);
    }

    (红色部分是放到request域中的属性名称,在index.jsp页面中需要用这个属性来操作数据的)

    index.jsp页面中使用JSTL:

    (1)首先要使用JSTL标签的话,需要引导额外的jar包:jstl.jar和standard.jar


    (2)然后在index.jsp页面中引入标签库:

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


    (3)下面就可以使用JSTL标签库了:

    <body>
        <!-- c:out标签的使用:输出 -->
         用户id:<c:out value="${userBean.id}" default="0"></c:out>
         用户姓名:<c:out value="${userBean.name}"></c:out>
         用户年龄:<c:out value="${userBean.age}"></c:out>
         用户性别<c:out value="${userBean.sex}"></c:out>
         用户的出生日期:<c:out value="${userBean.birth}"></c:out>
         <br><br>
         
         <!-- c:forEach标签的使用:迭代 -->
         <c:forEach var="userBean" items="${userBeanList}">
        用户id:<c:out value="${userBean.id}"></c:out>
        用户姓名:<c:out value="${userBean.name}"></c:out>
        用户年龄:<c:out value="${userBean.age}"></c:out>
        用户性别<c:out value="${userBean.sex}"></c:out>
        用户的出生日期:<c:out value="${userBean.birth}"></c:out>
        <br><br>
         </c:forEach>
         
         <!-- c:set标签的使用:设置变量 -->
         <c:set value="10元" var="r" scope="page"/>
             价格:<c:out value="${r}"/>
         <br><br>
         
         <!-- c:remove标签的使用:移除属性 -->
         <c:remove var="r" scope="page"/>
             价格:<c:out value="${r}"/>
             
         <!-- c:choose标签的使用:多分枝判断 -->
         <c:set var="luck" value="${userBean.id}"></c:set>
         <c:choose>
            <c:when test="${luck==8}">恭喜你中了一等奖!</c:when>
            <c:when test="${luck==6}">恭喜你中了二等奖!</c:when>
            <c:when test="${luck==9}">恭喜你中了三等奖!</c:when>
            <c:otherwise>谢谢参与,欢迎下次再来!</c:otherwise>
         </c:choose>
        <br><br>    
        
        <!-- c:if标签的使用:if判断 -->
        判断:<c:if test="${userBean.id==0}">是真的</c:if>
        <br><br>
        
        <!-- c:forTokens标签的使用:字符串的分割 -->
        <c:forTokens items="A,B,C,D,E,F,G" delims="," var="item">
              ${item}
        </c:forTokens>
        <br><br>
        
        <!-- c:import标签的使用:包含include.jsp页面 -->
        <c:import url="/include.jsp"></c:import>
        <br><br>
        
        <!-- c:redirect标签的使用:重定向打开include.jsp页面 -->
        <c:redirect url="/include.jsp"></c:redirect>
        <br><br>
        
        <!-- c:url标签的使用:将url地址转换成字符串 -->
        <c:url var="urlVar" value="/include.jsp"></c:url>
        url地址:<c:out value="${urlVar}"/>
        <br><br>
        
      </body>

  • 相关阅读:
    <排序算法> 计数排序CountSort
    <排序算法> 直接插入排序InsertSort
    <排序算法> 快速排序QuickSort
    C# 获取文件的后缀,文件名和路径
    C# 移除HTML标签
    无限层级数
    iOS通用链接配置
    iOS 最新证书制作流程、制作通用证书
    C# FormData 文件太大报错404 Form表单上传大文件,无法进入后台Action,页面提示404.
    IS加载JSON 和 MP4文件 错误 404 提示 需要添加mime映射(默认IIS Express里没有映射)
  • 原文地址:https://www.cnblogs.com/roccheung/p/5797428.html
Copyright © 2011-2022 走看看