经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
JSTL
来源:cnblogs  作者:miao1122334  时间:2018/11/6 18:27:12  对本文有异议

1.什么是JSTL?

JSTL全名为JavaServer Pages Standard Tag Library,是由JCP所指定的标准规格,主要提供给java web开发人员一个标准通用的标签函数库。web程序开发人员能够利用JSTL和ELl来开发web程序,取代传统直接在页面上嵌入java程序的做法,以提高程序可读性,维护性和方便性。

2.JSTL标签库的分类

  • 核心标签(用的最多)
  • 国际化标签(I18N格式化标签)
  • 数据库标签(SQL标签,很少使用)
  • XML标签(几乎不用)
  • JSTL函数(EL函数)

3.核心标签库

从功能上可以分为4类:表达式控制标签,流程控制标签,循环标签,URL操作标签。

①表达式控制标签:out标签,set标签,remove标签,catch标签

②流程控制标签:if标签,choose标签,when标签,otherwise标签

③循环标签:forEach标签,forTokens标签

④URL操作标签:import标签,url标签,redirect标签,param标签

在jsp页面中引入核心标签库的代码为:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

3.1 <c:out>标签使用总结

3.1.1 <c:out>标签主要用来显示数据的内容,就像是<%= scripting-language %>一样,和EL表达式的区别在于使用<c:out>标签可以对敏感的字符自动进行转换。

如以下代码:

  1. <body>
  2. <h4>c:out</h4>
  3. <%
  4. request.setAttribute("book","<<java>>");
  5. %>
  6. book:${requestScope.book}
  7. <br><br>
  8. book:<c:out value="${requestScope.book}"></c:out>
    </body>

 运行后显示:

查看网页的源代码:

  1. <body data-genuitec-lp-enabled="false" data-genuitec-file-id="wc1-13" data-genuitec-path="/MyWebProject/WebRoot/tag/jstl.jsp">
  2. <h4 data-genuitec-lp-enabled="false" data-genuitec-file-id="wc1-13" data-genuitec-path="/MyWebProject/WebRoot/tag/jstl.jsp">c:out</h4>
  3. book:<<java>>
  4. <br><br>
  5. book:<<java>>
  6. </body>

可以看到使用<c:out>时进行了特殊字符的转换。

3.1.2 <c:out>标签的属性

3.2 <c:set>标签可以为域对象赋值

  1. <c:set var="name" value="koala" scope="page"></c:set>
  2. <br><br>
  3. name:${pageScope.name}

相当于

  1. <%=pageContext.setAttribute("name","koala") %>

 value可以使用EL表达式:

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

3.3 <c:remove>标签可以移除指定域对象的指定属性值

<c:remove>标签可以将<c:set>标签设置的值移除,使用时需要指定变量名和属性范围。例如,移除上面设置的name变量的属性值。

  1. <c:remove var="name" scope="page"></c:remove>

3.4 <c:if>标签

<c:if>标签必须要有test属性,当test中的表达式结果为true时,执行标签体内容。<c:if>标签没有else,但可以把判断的结果储存起来,以备之后使用。像下面这样:

  1. <c:if test="${requestScope.age>18}">成年!</c:if>
  2. <br><br>
  3. <c:if test="${requestScope.age>18}" var="isAdult" scope="request"></c:if>
  4. isAdult:<c:out value="${requestScope.isAdult}"></c:out>
  5. <br><br>

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

  1. <c:choose>
  2. <c:when test="${param.age>60}">老年</c:when>
  3. <c:when test="${param.age>35}">中年</c:when>
  4. <c:when test="${param.age>18}">青年</c:when>
  5. <c:otherwise>未成年</c:otherwise>
  6. </c:choose>

c:choose,c:when,c:otherwise可以实现if...else if...else if...else的效果,但较为麻烦,其中c:choose以c:when,c:otherwise的父标签出现,并且c:when,c:otherwise不能脱离c:choose单独使用,c:otherwise必须在c:when之后使用。

3.6 迭代操作标签

<c:forEach>:可以对数组,Collection,Map进行遍历,可以指定起始位置begin(对于集合begin从0开始算),结束位置end,以及步长step。例如:

  1. <c:forEach begin="1" end="10" step="2" var="i">
  2. ${i}
  3. </c:forEach>

3.7 URL操作

JSTL包含三个与URL操作有关的标签,分别为:<c:import>,<c:redirect>和<c:url>。它们主要的功能是用来将其他文件的内容包含起来,网页的导向,还有url的产生。

<c:import>可以包含任何页面到当前页面。

<c:redirect>可以使当前jsp页面重定向到任何指定页面。

<c:url>产生一个url地址,可以根据Cookie是否可用来智能进行URL重写,对GET请求的参数进行编码,可以把产生的URL存储在域对象中的属性中,还可以使用c:param为URL添加参数(c:url会对参数进行自动的转码)。

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号