码迷,mamicode.com
首页 > Web开发 > 详细

JSTL

时间:2016-02-16 01:14:17      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:

JSTL全名为JavaServer Pages Standard Tag Library 主要提供给JavaWeb开发人员一个标准通用的标签函数库.

Web程序开发人员能够利用JSTL和EL来开发Web程序,取代传统直接在页面上嵌入Java程序(Scripting)的做法,以提高程序的可读性,维护性和方便性.

需要引入的jar 

jstl.jar

standard.jar

标签函数库主要分为5大类:

1.核心标签库(Core tag library)

2.I18N格式标签库(I18N-capable formatting tag library)

3.SQL标签库(SQL tag library)

4.XML标签库(XML tag library)

5.函数标签库(Functions tag library)

最常用的是 核心标签库

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

 

<c:out>

与el类似,比el更强大,能够对敏感的字符进行转换

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


book:<>
<<book>> 

通过查看源文件,<c:out>会将敏感字符自动转义

    <br>
    book:<<book>>
    <br>
    &lt;&lt;book&gt;&gt;
    <br><br>

<c:out value="${requestScope.book }" escapeXml="false"></c:out>

设置escapeXml="false" 默认不进行转义

<c:out value="${requestScope.book }" default="booktitle"></c:out>

当从域中没找到book时,取默认值

 

<c:set var="name" value="java" scope="page"></c:set>
<%--
pageContext.setAttribute("name", "java");
--%>
name:${pageScope.name }

使用<c:set>向指定域对象中赋值,类似于setAttribute

value中可以放EL表达式

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

使用<c:set>为javaBean赋值

<%
         Customer cust = new Customer();
         cust.setId(1001);
         request.setAttribute("cust", cust);
     %>
     ID:${requestScope.cust.id }
     <br>
     <c:set target="${requestScope.cust }" property="id" value="${param.id }"></c:set>
     ID:${requestScope.cust.id }

使用<c:remove>可以移除指定域对象中的指定属性

<c:set value="1997-1-1" var="date" scope="session"></c:set>
     <c:out value="${sessionScope.date }"></c:out>
     <br>
     <c:remove var="date" scope="session"/>
     date:${sessionScope.date }
     <br><br>

 

JSTL 流程控制

<c:if> 仅有if,没有else,但可以把判断的结果储存起来,以备之后使用

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

<c:choose>只能当做<c:when>,<c:otherwise>的子标签

在同一个<c:choose>中时,<c:when>必须在<c:otherwise>之前

<c:when>必须有test属性

在同一个<c:choose>时,<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>
    <br><br>

 

JSTL迭代操作

<c:forEach>,<c:forTokens>

遍历一个Collection,遍历数组同Collection

<%
        List<Customer> custs = new ArrayList<Customer>();
        custs.add(new Customer(1001,"AA","aa@java.com"));  //index:0
        custs.add(new Customer(1002,"BB","bb@java.com"));
        custs.add(new Customer(1003,"CC","cc@java.com"));
        custs.add(new Customer(1004,"DD","dd@java.com"));
        custs.add(new Customer(1005,"EE","ee@java.com"));
        custs.add(new Customer(1006,"FF","ff@java.com"));
        request.setAttribute("customers", custs);
    %>
    <c:forEach items="${requestScope.customers }" var="custs"
     varStatus="status">
        ${status.index},${status.count},${status.first},${status.last}:${custs.id }:${custs.name }:${custs.email }<br>
    </c:forEach>

    <br><br>

遍历Map

<%
        Map<String,Customer> custsMap = new HashMap<String,Customer>();
        custsMap.put("a", new Customer(1001,"AA","aa@java.com"));
        custsMap.put("b", new Customer(1002,"BB","bb@java.com"));
        custsMap.put("c", new Customer(1003,"CC","cc@java.com"));
        custsMap.put("d", new Customer(1004,"DD","dd@java.com"));
        custsMap.put("e", new Customer(1005,"EE","ee@java.com"));
        custsMap.put("f", new Customer(1006,"FF","ff@java.com"));
        request.setAttribute("customers", custsMap);
    %>
    <c:forEach items="${requestScope.customers }" var="custs">
        ${custs.key}-${custs.value.id }-${custs.value.name }-${custs.value.email }<br>
    </c:forEach>
    <br><br>

可以用来获取属性名称

<c:forEach items="${pageContext.session.attributeNames }" var="attrName">
        ${attrName }
    </c:forEach>

<c:forTokens>处理字符串的,类似于String的split

<c:set value="a,b,c.d.e.f;g;h" var="test" scope="request"></c:set>
    <c:forTokens items="${requestScope.test }" delims="," var="s">
        ${s }<br>
    </c:forTokens>

a
b
c.d.e.f;g;h

 

JSTL

标签:

原文地址:http://www.cnblogs.com/wq3435/p/5191570.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!