Java基础之《Servlet+JSP(JavaEE开发进阶Ⅰ)》--JSP(四)JSTL标签库

四、JSTL标签库
1、JSTL简介
  JSTL(Java Server Pages Standard Tag Library)
    JSTL标准当初由Sun指定,由Apache的Jakarta小组负责实现
    当前JSTL版本是1.2
    JSTL是为了简化JSP页面设计
    JSTL将一些常用的功能使用Java类来实现,通过标签在JSP页面使用。这个类的实现,要提供tld的描述文件
    使用taglib指令
      格式:<%@ taglib prefix="prefix_name" uri="uri_path" | tagdir="tag_dir" %>
  JSTL组成

功能范围URI前缀(习惯)
corehttp://java.sun.com/jsp/jstl/corec
I18Nhttp://java.sun.com/jsp/jstl/fmtfmt
SQLhttp://java.sun.com/jsp/jstl/sqlsql
XMLhttp://java.sun.com/jsp/jstl/xmlx
Functionshttp://java.sun.com/jsp/jstl/functionsfn

    Core、I18N是最常用的一组标签。SQL标签在使用MVC模式开发时不再使用,XML、Functions使用不多。下面主要学习Core和I18N

2、JSTL常用标签
  Core标签库
    通用标签
      1)out标签(用来将值输出到页面)
        格式1:<c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"]/>
        格式2:<c:out value="value" [escapeXml="{true|false}"]>default value</c:out>
        escapeXml:是否需要对xml中特殊符号进行转义
      2)set标签(设置保存值)
        格式1:<c:set value="value" var="varName" [scope="{page|request|session|application}"]/>
        格式2:<c:set var="varName" [scope="{page|request|session|application}"]>body content</c:set>
        格式3:<c:set value="value" target="targetObj" property="propertyName"/>
        格式4:<c:set target="targetObj" property="propertyName">body content</c:set>
        var:变量名
        value:变量值
        可以将值保存到哪个目标对象的属性里
      3)remove标签(移除变量,所有作用域对象)
        格式:<c:remove var="varName" [scope="{page|request|session|application}"]/>
      4)catch标签(没有var只是简单的处理而不保存)
        格式:<c:catch [var="varName"]>处理代码</c:catch>
      例子:建立动态网站项目JSTL
      新建index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL标签库</title>
</head>
<body>
	<c:set value="${'<strong>test</strong>'}" var="test"/>
	pageScope.test:<c:out value="${pageScope.test }"/><br/>
	pageScope.test:<c:out value="${pageScope.test }" escapeXml="false"/><br/>
	requestScope.test:<c:out value="${requestScope.test }"/><br/>
</body>
</html>

      执行结果:


    条件标签
      1)if标签
        格式1:<c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]/>
        格式2:<c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]>body content</c:if>
        test:里面写条件
      2)choose标签
        格式:<c:choose>
              {
                <c:when test="testCondition">
                  body content
                </c:when>
              }+
              {
                <c:otherwise>
                  block
                </c:otherwise>
               }?
               </c:choose>
        说明:相当于switch case语句
    迭代标签
      1)forEach(items:Collection、Iterator、Enumeration、Map)
        格式:<c:forEach [var="varName"] items="collection"
                [varStatus="varStatusName"] [begin="begin"] [end="end"]
                [step="step"]>
                body content
              </c:forEach>
        items:指定迭代的内容
        varStatus:这个循环的循环状态
        step:步长
      2)forTokens:标签通过指定分隔符将字符串分隔为一个数组然后迭代它们
        格式:<c:forTokens items="stringOfTokens" delims="delimiters"
              [var="varName"] [varStatus="varStatusName"]
              [begin="begin"] [end="end"] [step="step"]>
              body content
              </c:forTokens>
        items:指定的一个字符串
        delims:切分的字符,得到一个字符串数据,进行循环
    导入及重定向标签
      1)import(作用类似include动作,但可导入其它web内容)
        格式:<c:import url="url" [context="context"] [var="varName"]
              [scope="{page|request|session|application}"]
              [charEncoding="charEncoding"]
              {<c:param name="name" value="value"/>}*
              </c:import>
        url:链接地址,完整的url
        context:上下文的名字
        var:导入内容的名字
        c:param:给页面传递的参数,可以有,可以没有,可以有一条,可以有多条
      2)url(使用URL重写规则构建一个新的URL)
        格式:<c:url value="value" [context="context"] [var="varName"]
              [scope="{page|request|session|application}"]/>
        value:新的url
      3)redirect(重定向)
        格式:<c:redirect url="value" [context="context"]>
              {<c:param name="name" value="value"/>}*
              </c:redirect>
        url:指定重定向的页面
3、I18N标签库(国际化)
  1)setLocale标签(设置区域)
    格式:<fmt:setLocale value="locale" [variant="{WIN|MAX|POSIX}"]
          [scope="{page|request|session|application}"]/>
    value:zh_CN、zh_TW
    variant:指定操作系统
  2)setBundle(指定国际化对应的properties文件)
    格式:<fmt:setBundle basename="basename" [var="varName"]
          [scope="{page|request|session|application}"]/>
  3)message(用来输出信息)
    格式:<fmt:message key="msgKey" [bundle="resourceBundle"]
          [var="varName"] [scope="{page|requeat|session|application}"]>
          {<fmt:param>body context</fmt:param>}?
          </fmt:message>
  4)formatNumber标签
    格式:<fmt:formatNumber value="numericValue"
    [type=="{number|currency|percent}] [pattern="customPattern"]
    [currencyCode="currencyCode"] [currencySymbol="currencySymbol"]
    [groupingUsed="true|false"] [maxIntegerDigits="maxIntegerDigits"]
    [minIntegerDigits="minIntegerDigits"]
    [maxFractionDigits="maxFractionDigits"]
    [minFractionDigits="minFractionDigits"]
    [scope="{page|request|session|application}"]/>
    type:类型,可以是数字、货币、百分比
    pattern:指定具体的格式
    currencyCode:货币代码
    currencySymbol:货币符号
    maxIntegerDigits、minIntegerDigits:整型的大小限制
    maxFractionDigits、minFractionDigits:分数的大小限制
  5)formatDate标签
    格式:<fmt:formatDate value="date" [type="{time|date|both}"]
          [dateStyle="{default|short|medium|long|full}"]
          [timeStyle="{defualt|short|medium|long|full}"]
          [pattern="customPattern"] [var="varName"]
          [scope="{page|request|session|application}"]/>
    value:要格式化的日期的对象
    type:类型
    dateStyle:对于日期的格式
    timeStyle:对于时间的格式
    var:格式化之后对象属性的名称
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值