17、JSTL标签库

一、JSTL 简介

 

  1. JSTL:JavaServer Pages Standard Tag Library
  2. 由JCP(Java Community Process)指定标准,提供给 Java Web 开发人员一个标准通用的标签函数库
  3. 和 EL 配合来取代传统直接在页面上嵌入 Java 程序(Scripting)的做法,以提高程序可读性、维护性和方便性

二、JSTL1.1安装

 

  1. JSTL 主要由Apache组织的Jakarta Project 实现
  2. 下载地址:http://tomcat.apache.org/taglibs/standard/
  3. 容器必须支持Servlet 2.4 且JSP 2.0 以上版本
  4. JavaEE1.4 
  5. 解压缩后将lib 中的jstl.jar、standard.jar 复制到WEB应用程序的WEB-INF\lib 下

三、JSTL标签库

 

  1. 核心标签库 (core)  --- c
  2. 国际化标签 fmt
  3. 数据库标签 sql --Servlet
  4. XML标签  xml
  5. JSTL函数(EL函数) el

四、核心标签库

 

  1. <c:out>标签:用于输出一段文本内容到pageContext对象当前保存的“out”对象中
    17、JSTL标签库_第1张图片
     
    c:out 输出内容到浏览器端
    	输出固定值
    	<c:out value="Hello c out~"/>
    
    	输出变量
    	<c:out value="${m}"/>
    
    	转义html,默认为转义,可以设置escapeXml属性为false,禁止转义
    	<c:out value="<a href='#'>link</a>" escapeXml="false"/>
    
    	允许输出默认值,如果给定值不存在,输出默认值
    	<c:out value="${city}" default="北京"/>
    
     
  2. <c:set>标签:用于把某一个对象存在指定的域范围内,或者设置Web域中的java.util.Map类型的属性对象或JavaBean类型的属性对象的属性。
    17、JSTL标签库_第2张图片
     
    c:set 设置值到四个域,设置四个范围中的java对象的属性、在指定域中增加、修改属性
    	<c:set var="name" value="value" scope="page"/>
    
    设置一个保存在四个范围的java对象的属性值,cset不能设置对象进域,但是可以更改域中对象的属性
    	<c:set targe="${person}" property="name" value="lisi"/>	
    
     
  3. <c:remove>标签:用于删除各种Web域中的属性
    其语法格式如下:
    
    <c:remove var="varName" 	
    	[scope="{page|request|session|application}"] /> 
     
    c:remove用来删除四个域中的值
    	<c:remove var="age" scope="page"/>
     
  4. <c:catch>标签:用于捕获嵌套在标签体中的内容抛出的异常
    语法格式如下:
          <c:catch [var="varName"]>nested actions</c:catch>
    
    var属性用于标识<c:catch>标签捕获的异常对象,它将保存在page这个Web域中。 
     
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ page contentType="text/html;charset=gb2312" %>
    <c:catch var="myex“ >
    	<%
    		10/0;
    	%>
    </c:catch>
    异常:<c:out value="${myex}" />  ${myex}<br />
    异常 myex.getMessage:<c:out value="${myex.message}" /><br />
    异常 myex.getCause:<c:out value="${myex.cause}" /><br />
    异常 myex.getStackTrace:<c:out value="${myex.stackTrace}" />
     
    <c:catch var="e">
    	<%
    		String s = null;
    		s.charAt(1);
    	%>
    </c:catch>
    ${e.message}
    
     
  5. <c:if>标签:可以构造简单的“if-then”结构的条件表达式
    17、JSTL标签库_第3张图片
    c:if 用来取代页面中if语句,请记住,没有c:else,想要写else,只能再写个c:if,然后条件是反的
    <c:if test="${n>5}"></c:if>
     
  6. <c:choose>标签:用于指定多个条件选择的组合边界,它必须与<c:when>和<c:otherwise>标签一起使用。使用<c:choose>,<c:when>和<c:otherwise>三个标签,可以构造类似 “if-else if-else” 的复杂条件判断结构
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ page contentType="text/html;charset=gb2312" %>
    <c:set value="${param.count}" var="count"  />
    <c:choose>
    	<c:when test="${count == 0}">
    		对不起,没有符合您要求的记录。
    	</c:when>
    	<c:otherwise>
    		符合您要求的记录共有${count}条.
    	</c:otherwise>
    </c:choose>
     
     
    c:choose c:when c:otherwise 一起使用,取代if elseif else 或 swich case
    		<c:choose>
    			<c:when test="${weekday==1}">
    				星期一
    			</c:when>
    			<c:when test="${weekday==1}">
    				星期二
    			</c:when>
    			<c:when test="${weekday==1}">
    				星期三
    			</c:when>
    			<c:otherwise>
    				输入无效
    			</c:otherwise>
    		</c:choose>
    
     
  7. <c:forEach>标签:用于对一个集合对象中的元素进行循环迭代操作,或者按指定的次数重复迭代执行标签体中的内容。
    17、JSTL标签库_第4张图片
    <%
    	int atts[] = {1,2,3,4,5,6,7,8,9,10};
    	request.setAttribute("atts", atts);
    %>
    
    <c:forEach items="${atts}" var="item" begin="0" end="9" step="1" >
    	${item}</br>
    </c:forEach>
     
  8. varStatus属性:用来存放现在指到之成员的相关信息
    17、JSTL标签库_第5张图片
    <c:forEach begin="10" end="100" step="2" var="i"varStatus="status">
    			<c:if test="${status.count}%3 == 0">
    				<font color="red">${i}</font>
    			</c:if>
    			<c:if test="${status.count}%3 != 0">
    				<font color="blue">${i}</font>
    			</c:if>
    		</c:forEach>
    -------------------------------------------------------------------------------------------------
    
    
    <c:forEach var="i" begin="100" end="200" step="5" varStatus="status"> 
    	<c:if test="${status.first}"> 
    		begin:<c:out value="${status.begin}">begin</c:out>     
    		end:<c:out value="${status.end}">end</c:out>     
    		step:<c:out value="${status.step}">step</c:out>
    		<br/> 
    		sequence: 
    	</c:if>
    	<c:out value="${i}"/> 
    	<c:if test="${status.last}"> 
    		<br/>There are 
    		<c:out value="${status.count}"/> numbers in the list. 
    	</c:if> 
    </c:forEach> 
    ----------------------------------------------------------------------------------------------
    <%
    Map<String,String> map = new HashMap<String,String>();
    map.put("001","aaa");
    map.put("002","bbb");
    map.put("003","ccc");
    request.setAttribute("map",map);
    %>
    <c:forEach var="m" items="${requestScope.map}">
    		${m.key } , ${m.value } <br/>
    </c:forEach>
    
     
  9. <c:forTokens>:用来浏览一字符串中所有的成员,其成员是由定义符号所分隔的
    17、JSTL标签库_第6张图片
    c:forTokens 切割字符串(复习 StiringTokenize类)
    		<c:forTokens items="${s}" delims="," var="e">
    			${e}
    		</c:forTokens>
    
     
  10. <c:param>标签 :在JSP页面进行URL的相关操作时,经常要在URL地址后面附加一些参数。<c:param>标签可以嵌套在<c:import>、<c:url>或<c:redirect>标签内,为这些标签所使用的URL地址附加参数
  11. <c:param>标签在为一个URL地址附加参数时,将自动对参数值进行URL编码,例如,如果传递的参数值为“中国”,则将其转换为“%d6%d0%b9%fa”后再附加到URL地址后面,这也就是使用<c:param>标签的最大好处
  12. 示例:<c:param name="name" value="value" />
  13. <c:import> 标签:
    17、JSTL标签库_第7张图片
    引入1.jsp的输出,拼接到当前jsp的输出中
    <c:import url="/1.jsp" context="/day08"/>
    
    引入1.jsp的输出,保存到scope域中以var指定名为名称的属性中
    <c:improt url="/1.jsp" context="/day08" var="content" scope="page"/>
    
     
  14. <c:url>标签:用于在JSP页面中构造一个URL地址,其主要目的是实现URL重写。URL重写就是将会话标识号以参数形式附加在URL地址后面 
    17、JSTL标签库_第8张图片
    <c:url value="/index.jsp"context="/day04" var="myurl2"scope="page">
    
    <c:param name="username" value="张三"></c:param>
    
    </c:url>
    
     
  15. <c:redirect>标签:用于实现请求重定向
    17、JSTL标签库_第9张图片
    <c:redirect url="/index.jsp" context="/day08"/>
     
     
     
     
     

你可能感兴趣的:(jstl标签)