JSTL--JSP标准标签库

JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。

JSTL标签是基于JSP页面的,这些标签可以插入在JSP代码中,这些标签封装了不同的功能,在页面上调用标签时,就等于调用了封装起来的功能。

 

核心标签core:

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

prefix="c":指定标签库的前缀,这个前缀可以随便给值。

uri="http://java.sun.com/jstl/core":指定标签库的uri,它不一定是真实存在的网址,但它可以让JSP找到标签库的描述文件;

1.<c:set>标签用于设置变量值和对象属性。

<c:set
   var="<string>"  //存储信息的变量
   value="<string>" //要存储的值
   target="<string>" //要修改的属性所属的对象
   property="<string>" //要修改的属性
   scope="<string>"/> //var作用域

2.<c:if>标签判断表达式的值,如果表达式的值为 true 则执行其主体内容。

<c:if test="<boolean>" var="<string>" scope="<string>">
   ...      //test是条件,var是存储条件结果的变量,scope是var作用域
</c:if>       

3.<c:forEach>标签它迭代一个集合中的对象。

<c:forEach
    items="<object>"  //要循环的信息
    begin="<int>"  //开始元素 0是第一个
    end="<int>"  //最后一个元素
    step="<int>" //每一次迭代的步长
    var="<string>"  //代表当前条目的变量名称
    varStatus="<string>">  //代表循环状态的变量名称

    ...

 

例如:<forEach varStatus=”vs” …/>,这时就可以使用vs这个变量来获取循环的状态了。

count:int类型,当前已遍历元素的个数;

index:int类型,当前元素的下标;

first:boolean类型,是否为第一个元素;

last:boolean类型,是否为最后一个元素;

current:Object类型,表示当前项目。

<c:forEach var="item" items="${ns}" varStatus="vs">
	<c:if test="${vs.first }">第一行:</c:if>
	<c:if test="${vs.last }">最后一行:</c:if>
	<c:out value="第${vs.count }行: "/>
	<c:out value="[${vs.index }]: "/>
	<c:out value="name: ${vs.current }"/><br/>
</c:forEach>

4.<c:forTokens>标签通过指定分隔符将字符串分隔为一个数组然后迭代它们。

<c:forTokens
    items="<string>"
    delims="<string>"  //分隔符
    begin="<int>"
    end="<int>"
    step="<int>"
    var="<string>"
    varStatus="<string>">

 

格式化标签

JSTL格式化标签用来格式化并输出文本、日期、时间、数字。

引用格式化标签库的语法如下:

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

1.<fmt:formatNumber>标签用于格式化数字,百分比,货币。

<fmt:formatNumber
  value="<string>"  //要显示的数字
  type="<string>"  //类型
  pattern="<string>"  //格式
  currencyCode="<string>" 
  currencySymbol="<string>"
  groupingUsed="<string>"
  maxIntegerDigits="<string>"
  minIntegerDigits="<string>"
  maxFractionDigits="<string>"
  minFractionDigits="<string>"
  var="<string>"
  scope="<string>"/>

 

2.<fmt:formatDate>标签用于使用不同的方式格式化日期。

<fmt:formatDate
  value="<string>"
  type="<string>"
  dateStyle="<string>"
  timeStyle="<string>"
  pattern="<string>"
  timeZone="<string>"
  var="<string>"
  scope="<string>"/>

 

测试:

<%@page import="cn.gakki.entity.Student"%>
<%@page import="java.sql.Date"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'jstlel.jsp' starting page</title>
    
   <meta http-equiv="pragma" content="no-cache">
   <meta http-equiv="cache-control" content="no-cache">
   <meta http-equiv="expires" content="0">    
   <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
   <meta http-equiv="description" content="This is my page">
   <!--
   <link rel="stylesheet" type="text/css" href="styles.css">
   -->

  </head>
  
  <body>
       <%
       //1.准备数据  
       int n=70;//基本类型
       double avgScore = 57.45678;//基本类型
       //Student stu = null;
       Student stu = new Student();//引用类型
       stu.setSno(1);
       stu.setSname("张晓红");
       stu.setBirth(Date.valueOf("1999-12-12"));
       
       String [] strs = {"Java","Oracle","JSP","HTML"};//数组
       String courses="Java,Oracle,JSP,HTML,Servlet";//特殊的字符串
       String courses2="Java#Oracle#JSP#HTML#Servlet";//特殊的字符串
       String str = null;
       String str3 = "";
       List list = new ArrayList();//分配空间,没有元素
       list.add(90);
       list.add(80);
       List list2 =null;//没有分配空间
       List list3 =new ArrayList();//分配空间,没有元素  size()==0
       Map<String,String> map = new HashMap<String,String>();//Map
       map.put("cn", "China");
       map.put("fr", "France");
      //setAttribute
      request.setAttribute("r1",n);
      request.setAttribute("avgScore",avgScore);
       request.setAttribute("stu",stu);
       request.setAttribute("strs",strs);
       request.setAttribute("courses",courses); 
       request.setAttribute("courses2",courses2);  
       request.setAttribute("now",new java.util.Date());      
       request.setAttribute("list", list);
       request.setAttribute("list2", list2);  
       request.setAttribute("list3", list3);    
        request.setAttribute("map", map);      
          
       request.setAttribute("str", str);
       request.setAttribute("str3", str3);
       //2.使用JSTL和EL输出        
        %>
      
      
      n:${r1}<br>
      n:${requestScope.r1}<br>
      avgScore:${avgScore}<br>
      avgScore:<fmt:formatNumber value="${avgScore}" maxFractionDigits="2"></fmt:formatNumber><br>
      姓名:${stu.sname}<br>
      日期:<fmt:formatDate value="${stu.birth}" pattern="yyyy年MM月dd日"></fmt:formatDate><br>
      <c:forEach items="${strs}" var="us">
         ${us}-->
      </c:forEach><br>
      <c:forEach items="${courses}" var="us">
         ${us}--
      </c:forEach><br>
      <c:forTokens items="${courses2}" delims="#" var="us">
         ${us}<---->
      </c:forTokens><br>
      <c:forEach items="${list}" var="li">
         ${li}-
      </c:forEach><br>
      <c:forEach items="${map}" var="m">
         ${m.key}-->${m.value}<br>
      </c:forEach><br>
      每一页显示:
      <select>
         <c:forEach begin="5" end="25" step="5" var="size">
            <option>${size}</option>
         </c:forEach>
      </select>条
      <br>
      ${empty list2}<br>
      ${not empty list3}

  </body>
</html>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值