jstl标签的使用

 

一、使用步骤

1、导入jar包 

  jstl.jar   standard.jar

 2、在jsp页面中添加标签

  <%@taglib uri=''' prefix="" %>

二、核心标签

  a、<c:if>

    <c:if test="${!empty param.age}">

      ----以下if执行逻辑,先判断年龄是否大于18,然后将结果通过session.setAttribute("isAdult")赋给变量。----

      <c:if test="${param.age > 18 }" var="isAdult" scope="session">

        you are an adult

      </c:if>    

      <c:if test = "${!isAdult}">

        you are a young man

      </c:if>

    </c:if>

  b、<c:choose> <c:when> <c:otherwise>

    <c:choose>

      <c:when test="${param.age > 18 }">

      </c:when>

      <c:otherwise>

      </c:otherwise>  

    </c:choose>

  c、<c:foreach>

    ---以下代码执行逻辑:从集合users中从第一个元素取,通过pageContext.setAttribute("user")赋给user变量中--

    --pageContext.setAttribute("status"),status可指向对象--

    <c:foreach var="user" items="${users}" varStatus="status" >

      <tr class="row${status.index %2 + 1}"><td>${user.name}</td><td>${status.index}</td></tr>

    </c:foreach>

  d、<c:out>

    <c:out value="abc" >

    <c:out value="${abc}" default="not found" >

    <c:out value="<table>" escapeXml="true" >,默认为true,  页面显示<table>,否则显示为空,因为是浏览器当做错误的表格了

  e、<c:remove> 删除值

    通常组合使用:

     删除变量值:<c:remove var="rs" scope="request/......etc" >

        输出值:${rs}

  f、<c:set> 设置值

    通常组合使用:

     设置值:<c:set var="rs" scope="request/......etc" value="${1+1}" >

        输出值:${rs}

  g、<c:catch> 处理异常,此标签只有var一个属性,没有scope等其他属性

    <c:catch var="msg">

    <%

       Integer.parseInt("123a")

    %>

    </c:catch>

    输出值:${msg}

  h、<c:url> 页面表单提交,页面解析后a标签自动生成一个带有sessionId的串。

    作用1:用于URL重写

    作用2:自动生成绝对路径,自动在路径添加应用名,所以此时可以省略掉应用名,例如:<%=request.getContextPath%>/first.jsp

    <a href="<c:url value='/first.jsp' /> "  var="" > click me </a>

    <a href="<%= Response.encodeURL("www.baidu.com")%>">

  i、<c:import> 用于包含其他页面

    相当于<jsp:include>

  j、<c:redirect>

    作用1:生成带有sessionId地址,用于URL重写机制

    作用2:重定向。等价于:<%=Response.encodeRedirectURL("first1.jsp")%>"

    <c:redirect value='/first.jsp' />">,此标签自动在路径上添加应用名。

 三、自定义标签

1、步骤

  1)、写java类,实现SimpleTag接口或继承SimpleTagSupport

  2)、复写doTag()

  3)、在.tld文件中添加描述

  4)、在页面中添加taglib指令   

  在tld文件中,要注意:

    <body-content> empty</body-content> 不允许出现标签体

    <body-content> scriptless</body-content> 允许出现标签体,不允许出现java代码

     <body-content> jsp</body-content> 允许出现标签体,允许java代码,但简单标签不支持,即通过实现SimpleTag接口或继承SimpleTagSupport开发的标签。

        <rtexprvalue>true</rtexprvalue>  意味着标签的属性值可以是EL表达式.

 

对应标签体有代码,要在实现方法中添加如下的代码JSPFragment jf = this.getJspBody(),如图:

 

 

 

 

  

posted @ 2018-01-13 18:51  无敌多么,无敌寂寞  阅读(87)  评论(0)    收藏  举报