jstl_jstl标签库 - CSDN
jstl 订阅
JSTL(Java server pages standarded tag library,即JSP标准标签库)是由JCP(Java community Proces)所制定的标准规范,它主要提供给Java Web开发人员一个标准通用的标签库,并由Apache的Jakarta小组来维护。开发人员可以利用这些标签取代JSP页面上的Java代码,从而提高程序的可读性,降低程序的维护难度。 展开全文
JSTL(Java server pages standarded tag library,即JSP标准标签库)是由JCP(Java community Proces)所制定的标准规范,它主要提供给Java Web开发人员一个标准通用的标签库,并由Apache的Jakarta小组来维护。开发人员可以利用这些标签取代JSP页面上的Java代码,从而提高程序的可读性,降低程序的维护难度。
信息
功    能
为JSP Web开发人员提供一个标准通用的标签库
外文名
JSP Standard Tag Library
简    称
JSTL
所属领域
计算机科学技术
中文名
JSP标准标签库
制定者
JCP
JSTL简介
JSTL的英文全称是JavaServer Pages Standard Tag Library,中文全称是JSP标准标识库。JSTL技术标准是由JCP(lava Community Process)组织的JSR052专家组发布,Apache组织将其列入Jakarta项目,Sun公司将JSTL的程序包加入互联网服务开发工具包内(Web Services Developer Pack(WSDP)),作为JSP技术应用的一个标准。JSTL标签是基于JSP页面的,这些标签可以插入在JSP代码中,本质上JSTL也是提前定义好的一组标签,这些标签封装了不同的功能,在页面上调用标签时,就等于调用了封装起来的功能。JSTL的目标是简化JSP页面的设计。对于页面设计人员来说,使用脚本语言操作动态数据是比较困难的,而采用标签和表达式语言则相对容易,JSTL的使用为页面设计人员和程序开发人员的分工协作提供了便利。JSTL标识库的作用是减少JSP文件的Java代码,使Java代码与HTML代码分离,所以JSTL标识库符合MVC设计理念。MVC设计理念的优势是将动作控制、数据处理、结果显示三者分离。
收起全文
精华内容
参与话题
  • JSTL

    2019-09-11 22:00:43
    Java Server Pages Standard Tag Libray(JSTL):JSP 标准标签库,是一个定制标签类库的集合,用 于解决一些常见的问题,例如迭代一个映射或者集合、条件测试、XML 处理,甚至数据库和访问数据库 操作等。 我们现在只...

    Java Server Pages Standard Tag Libray(JSTL):JSP 标准标签库,是一个定制标签类库的集合,用 于解决一些常见的问题,例如迭代一个映射或者集合、条件测试、XML 处理,甚至数据库和访问数据库 操作等。

    我们现在只讨论 JSTL 中最重要的标签,条件动作、迭代集合以及格式化数字和日期几个标签。

    核心标签库:http://java.sun.com/jsp/jstl/core 包含 Web 应用的常见工作,比如:循环、表达式 值、基本输入输出等。

    格式化标签库:http://java.sun.com/jsp/jstl/fmt 用来格式化显示数据的工作,比如:对不同区域 的日期格式化等。
    为了在 JSP 页面使用 JSTL 类库,必须以下列格式使用 taglib 指令:

    ​ <%@taglib uri=”” prefix=””%>
      例如:<%@taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c”%>

    前缀可以是任意内容,遵循规范可以使团队中由不同人员编写的代码更加相似;所以,建议使用事 先设计好的前缀。此时需要导入两个 jar 包:

    [外链图片转存失败(img-zEhQlLln-1568210417564)(C:\Users\22507\OneDrive\计算机\Java\MdJava笔记\images\jstl.png)]

    jstl核心标签

    导入:<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>

    if标签

    if 标签先对某个条件进行测试,如果该条件运算结果为 true,则处理它的主体内容,测试结果保存 在一个 Boolean 对象中,并创建一个限域变量来引用 Boolean 对象。可以利用 var 属性设置限域变量 名,利用 scope 属性来指定其作用范围。

    if 的语法有两种形式:没有主体内容、有主体内容

    <%
    		//定义一个变量
    		int a = 66;
    		//存入request作用域
    		request.setAttribute("a",a);
    	%>
    	<!--if标签  -->
    	<c:if test="${a>50}" var= "flag" scope="session" >
    	<!--test="",一个表达式,结果为Boolean值,如果是true则执行标签中的代码,var定义一个键名,
    	存储test的Boolean值,scope表示的是flag存储的作用域是哪个  -->
    		<h2>a比较大</h2>
    	</c:if>
    	<c:if test="${empty a} }">
    		<!--empty判断a是否存在  -->
    		<h2>a是存在的</h2>
    	</c:if>
    	<!--结果:页面只显示a比较大  -->
    

    choose、when 和 otherwise 标签

    choose 和 when 标签的作用与 Java 中的 switch 和 case 关键字相似。

    <!--choose,when和otherwise标签 ,
    	起作用类似于java中的switch表达式 -->
    	<!--注意
    	1,choose标签中只能有when和otherwise标签,when和otherwise标签中可有其他标签
    	2,choose标签中至少有一个when标签
    	3,choose标签和otherwise标签中没有属性,when标签必须有test属性
    	4,otherwise标签必须放在最后一个when标签之后
    	5,当所有的when标签的条件都不成立时,才执行otherwise标签中的语句
    	6,when标签不存在穿透 -->
    	<%
    		request.setAttribute("a", 4);
    	%>
    	<c:choose>
    		<c:when test="${a>=3&&a<=5} ">
    			<h2>现在是春天</h2>
    		</c:when>
    		<c:when test="${a>=6&&a<=8} ">
    			<h2>现在是夏天</h2>
    		</c:when>
    		<c:when test="${a>=9&&a<=11} ">
    			<h2>现在是秋天</h2>
    		</c:when>
    		<c:when test="${a==4 }">
    			<h2>现在是初春</h2>
    		</c:when>
    		<c:otherwise>
    			<h2>现在是冬天</h2>
    		</c:otherwise>
    	</c:choose>
    	<!--结果显示为初春  -->
    

    forEach 标签

    forEach 是将一个主体内容迭代多次,或者迭代一个对象集合。可以迭代的对象包括所有的 java.util.Collection 和 java.util.Map 接口的实现,以及对象或者基本类型的数组。

    <!--forEach标签;
    	两种作用,1,将主体内容循环多次
    			2,迭代集合  -->
    	<!--将主体内容循环多次  -->
    	<c:forEach var="i" begin="1" end="7">
    	<!--var:用来存放现在被指到的对象,begin开始的位置,end结束的位置  -->
    		主体内容:${i }
    	</c:forEach>
    	<!--结果为:主体内容:1 主体内容:2 主体内容:3 主体内容:4 主体内容:5 主体内容:6 主体内容:7 主体内容  -->
    	
    	<!-- 迭代集合 -->
    	<!-- list -->
    	<%
    		List<String> list = new ArrayList<String>();
    		list.add("xiaoyan");
    		list.add("lingdong");
    		list.add("yefan");
    		request.setAttribute("list", list);
    	%>>
    	<c:forEach items="${list}" var="str" varStatus="status" >
    		${str }:${status.index }:${status.count }:${status.first }:${status.last }
    		<!--index表示索引,count表示出现的位数,first表示是否是第一个,last表示是否是最后一个  -->
    		
    	</c:forEach>
    	<!--map  -->
    	<%
    		Map<String,Object> map = new HashMap<String,Object>(); 
    		map.put("user1",new User("zs","123"));
    		map.put("user2", new User("ls","1234"));
    		request.setAttribute("map",map);
    	%>
    	<c:forEach items="${map}" var="user">
    	 	${user.key }:${user.value }
    	 	${user.value.uname }
    	 	${user.value.upwd }
    	</c:forEach>
    

    jstl格式化标签

    导入:<%@ taglib uri=“http://java.sun.com/jsp/jstl/fmt” prefix=“fmt” %>

    JSTL 提供了格式化和解析数字和日期的标签,我们讨论的有:formatNumber、formatDate、 parseNumber 及 parseDate。

    formatNumber 标签

    <!-- number格式化 -->
    	<!--type:按照什么类型进行格式化数据
    			number:数字
    			currency:货币
    			percent:百分比 
    		value:指定要格式化的数值,可以写字面值,还可以从域对象中获取
    		var:指定格式化红的结果存储到域对象中的键名
    		scope:指定存储的域范围,page,request,session,application
    		
    		-->
    		<!-- 没有主体内容,通过value指定要格式化的数值 -->
    		<%
    			request.setAttribute("num1",1000);
    			request.setAttribute("num2", 88888.6666);
    		%>
    		<fmt:formatNumber value="0.49" type="percent" ></fmt:formatNumber>
    		<fmt:formatNumber value="${num1 }" type="currency"></fmt:formatNumber>
    		<fmt:formatNumber value="${num1}" type="currency" currencySymbol="$"></fmt:formatNumber>
    		<fmt:formatNumber value="${num2 }" maxIntegerDigits="3" minFractionDigits="7"></fmt:formatNumber>
    		
    		<!-- 有主体内容,把要格式化的数据放到两个标签内部 -->
    		<fmt:formatNumber type="percent">
    			12
    		</fmt:formatNumber>
    		<fmt:formatNumber type="percent" var = "num" scope="request">
    			12
    		</fmt:formatNumber>
    		<!--12存入request后,内容不会显示,,需再次写${num} 才会显示-->
    		${num }
    

    formatDate 标签

    pattern 属性指定更精确的处理日期:
    [外链图片转存失败(img-gehbEqKT-1568210417566)(C:\Users\22507\OneDrive\计算机\Java\MdJava笔记\images\pattern.png)]

    dy>
    	<%
    		request.setAttribute("date", new Date());
    	%>
    	<!-- 
    		value:指定要格式化的时间
    		type:
    			time:时::秒
    			date:年--日
    			both:--日 时::***pattern***:自定义格式化时间
    	 -->
    	 <fmt:formatDate value="${date }" type="both" /><br/>
    	 <!-- 2019-9-11 21:34:02 -->
    	 <fmt:formatDate value="${date }" type="time" /><br> 
    	 <!-- 21:34:02 -->
    	 <fmt:formatDate value="${date }" type="date" /><br>
    	 <!--2019-9-11  -->
    	  <!--自定义  --> 
    	 <fmt:formatDate value="${date}" pattern="yyyy年M月d日--H时:m分:s秒" ></fmt:formatDate>
    	 <!-- 2019911--21:34:2-->
    

    parseNumber 标签

    <!--利用 parseNumber 标签可以将数字、货币或百分比的字符串表示法解析成指定语言环境的数字。   -->
    	<fmt:parseNumber value="20%" type="percent"></fmt:parseNumber> 
    	<!--结果:0.2  -->
    	<fmt:parseNumber value="¥1000" type="currency"></fmt:parseNumber> 
    	<!--结果:1000 -->
    	<!--value要转化的内容,type按什么类型转换  -->
    	
    	<fmt:parseNumber type="percent">
    		36%
    	</fmt:parseNumber>
    

    parseDate 标签

    此标签为指定区域解析日期和时间的字符串表示法。即解析一个代表着日期或时间的字符串。

    <%
    		request.setAttribute("date", "13:34:56");
    		request.setAttribute("date2", "2019年09月06号23时56分59秒");
    	%>
    	<fmt:parseDate value="${date }" type="time"></fmt:parseDate>
    	<!-- Thu Jan 01 13:34:56 CST 1970 ,每规定年份就从头开始-->
    	<fmt:parseDate value="${date2 }" pattern="yyyy年M月d号HH时mm分ss秒"></fmt:parseDate>
    	<!-- Fri Sep 06 23:56:59 CST 2019,自定义解析格式 -->
    
    展开全文
  • JSTL标签用法,很重要!!!

    千次阅读 2017-09-10 10:46:58
    JSTL标签用法 关键字:JSTL标签、、、、、、、、、、、、、、 原来一直没有看过,我说过我是新手,但是好多资料上似乎也不重视 JSTL 。我看项目源代码发现其中使用到了这个标签库,感觉其还真是方便,页面看...

    JSTL标签用法

    关键字:JSTL标签、<c:choose>、<c:forEach>、<c:forTokens>、<c:if>、<c:import>、<c:otherwise>、<c:out>、<c:param>、<c:redirect>、<c:remove>、<c:url>、<c:when>、<c:set>、<c:catch>

    原来一直没有看过,我说过我是新手,但是好多资料上似乎也不重视 JSTL 。我看项目源代码发现其中使用到了这个标签库,感觉其还真是方便,页面看起来更加清爽。减少了 JAVA 程序员亲自写的代码量,还真验证了,不懒不做程序员,程序员如果写代码不想着偷懒,那么生活是很无趣的。

    下面总结总结,学习学习。:)

    JSP 标准标记库( Standard Tag Library , JSTL) 是一组以标准化格式实现许多通用的 Web 站点功能的定制标记。

    JSP 技术的优势之一在于其定制标记库工具。除了核心 JSP 标记,如 jsp:include 之外,定制标记库工具使您能够创建唯一的标记来描述以站点或应用程序为导向的操作。一旦您创建了定制标记库 ( 简称 taglib) ,当您扩展项目或转向另一个项目时您可以重复使用这些标记。您还可以将 taglib 传递给其它开发人员,从而他们可以在自己的网站上使用,或者在您 Web 应用程序的其它部分使用。

          

           JSTL 的目标是为了简化 JSP 页面的设计。对于页面设计人员来说,使用脚本语言(默认值是 JAVA 语言)操作动态数据是比较困难的,而采用标签和表达式语言相对容易一些, JSTL 的使用为页面设计人员和程序开发人员的分工协作提供了便利。

     

    一. 配置 JSTL

     

    包括两个 JAR 文件, jstl.jar 和 standard.jar 。是什么没有必要管,重在应用( 1+1 ? =2 ,我们没有必要深究,只需要知道这么用就行。)。

     

    原文引入:

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

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

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

                                                                    

    二. Core 标签库

     

    Core 标签库主要包括了一般用途的标签、条件标签、迭代标签和 URL 相关的标签。在 JSP 页面使用 Core 标签,要使用 taglig 指令,指定引用的标签库,如下:

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

     

    一般用途的标签有 <c:out> 、 <c:set> 、 <c:remove> 、 <c:cath>

    1.<c:out>

    用于计算一个表达式并将结果输出。类似于 JSP 中 <%=%> 表达式,或者是 EL 中 $ ${el-expression} 。

     

    2.<c:set>

    用于设置范围变量的值或者 javabean 对象的属性。

    看个实际例子:

    <c:set var=”username” value=”lisi” scope=”session”/>

    这样就相当于设置了 session 。

     

    3.<c:remove>

    相对 <c:set> 其作用是移除范围变量。比如: <c:remove var=”nusername” scope=”session”/>

     

    4.<c:catch>

     

    用于捕获在其中嵌套的操作所抛出的异常对象,并将异常信息保存到变量中。

    我们将有可能抛出异常的代码放置到开始标签 :<c:catch> 和结束标签 :</c:catch> 之间。如果其中代码出现异常,异常对象将被捕获,保存在 var 声明的变量中,该变量总是有 page 范围。如果没有发生异常,而 var 所标识的范围变量将被移除。

    如果没有指定 var 属性,异常只是简单的被捕获,异常信息并不会被保存。

    Eg :

    <c:catch var=”exception”>

    <%

           int i = 5;

           int j = 0;

           int k=i/j;

    %>

    </c:catch>

    <c:out value=”${exception}” /><br>

    <c:out value=”${exception.massage}”/>

    后一句相当于: exception.getMessage()

     

    条件标签包括 <c:if><c:choose><c:when><c:otherwise>

    1.<c:if>

    用于实现 java 中的 if 语句功能。

     

    <c:if test=”${user.visitCount==1}”>

           This is your first visit .

    </c:if>

     

    若为 true ,会打印中间部分。也可以声明 var ,方便下一步判断。

    <c:if test=”${param.name==’admin’}” value=”result”/>

    <c:out value=”${result}” />

     

    2.<c:choose>

    <c:choose> 和 <c:when> 、 <c:otherwise> 一起实现互斥条件执行,类似于 java 中的 if else.

    <c:choose> 一般作为 <c:when> 、 <c:otherwise> 的父标签。

    eg :

    <c:choose>

           <c:when test="${row.v_money<10000}">

                  初学下海

           </c:when>

           <c:when test="${row.v_money>=10000&&row.v_money<20000}">

                  身手小试

           </c:when>

           <c:otherwise>

                  商业能手

           </c:otherwise>

    </c:choose>

     

    迭代标签

    迭代标签有 <c:forEach> 和 </c:forEach>

     

    // 遍历记录集

    <c:forEach items="${finalResult.rows}" var="row">       

    <tr class="<%=tdClass[(rank+1)%2]%>">

    <td align="center"><span><%=rank%> </span></td>

    <td align="center"><span ><c:out value="${row.player_name}"/></span> </td>

    <td align="center"><span > ¥ <c:out value="${row.money}"/></span></td>

    </tr>

    <%rank++;%>     

    </c:forEach>

     

    也可以设定固定次数。

    <c:forEach var =”i” begin=”100 “ end= “110”>

           ${i}

    </c:forEach>

    如果再加个 step= “ 2 ”那么每次增长为 2 。

     

    展开全文
  • EL表达式与JSTL简单入门

    万次阅读 多人点赞 2018-07-26 13:07:45
    EL概述  EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL出现的目的是要替代jsp页面中脚本的编写。  简单来说EL表达式就是让程序员,简化了代码的书写量。在学EL表达式之前我们必须...

    EL概述

           EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL出现的目的是要替代jsp页面中脚本的编写。

           简单来说EL表达式就是让程序员,简化了代码的书写量。在学EL表达式之前我们必须通过<%=      %>来取出域中的数据,但这种方式        过于繁琐,所以就诞生了EL表达式。

    EL取出JSP四大域对象中保存的数据

     

    • pageContext域:${pageScope.key};
    • request域:${requestScope.key};
    • session域:${sessionScope.key};
    • application域:${applicationScope.key};

    EL从四个域中获得某个值

        写法:${key};

        例:如果在request域中存储了一个名为"productList"的对象,我们不需要通过${requestScope.productList}取出相应的对象,只需要${productList}即可取出相应的对象。

       相当于pageContext.findAttribute()从pageContext域,request域,session域,application域中获取属性,在某个域中获取后将不在向后寻找.

     

    JSTL概述

         JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能。jstl出现的目的同el一样也是要代替jsp页面中的脚本代码。JSTL标准标签库有5个子库,但随着发展,目前常使用的是他的核心库。

     

    JSTL五大子库

        Core (核心库)  标签库的URI:http://java.sun.com/jsp/jstl/core  常用前缀:c

        I18N(国际化)   标签库的URI:http://java.sun.com/jsp/jstl/fmt 常用前缀:fmt

        SQL                     标签库的URI:http://java.sun.com/jsp/jstl/sql  常用前缀:sql

        XML                    标签库的URI:http://java.sun.com/jsp/jstl/xml 常用前缀:x

        Functions            标签库的URI:http://java.sun.com/jsp/jstl/functions  常用前缀:fn 

    下载与导入

        下载:Apache的网站下载JSTL的JAR包。进入“http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/”网址下载 JSTL的压缩包。jakarta-taglibs-standard-1.1.2.zip

        导入:解压后在lib目录下可以看到两个JAR文件,分别为jstl.jar和standard.jar。其中,jstl.jar文件包含JSTL规范中定义的接口和相关类,standard.jar文件包含用于实现JSTL的.class文件以及JSTL中5个标签库描述符文件(TLD),将两个文件导入项目中。

     

    JSTL核心库的使用

    • <c:if>标签

              1. 语法格式:

                           <c:if  test="xxx"   [var="xxx"]   [scope="{page|request|session|application}"]  >

                                            执行体

                           </c:if>

               2. 标签属性讲解:

                          test属性:用于设置逻辑表达式,当逻辑表达式为true时执行执行体

                          var属性:用于指定逻辑表达式中变量的名字

                           scope属性:用于指定var变量的作用范围,默认值是page。

               3.用法案例: 

    • <c:forEach>标签  

         两种语法格式:

                    1.迭代集合对象:

                                    <c:forEach items="xxx"   [var="xxx"]   [varStatus="xxx"]   [begin="xxx"]   [end="xxx"]   [step="xxx"]>
                                                 循环体.....
                                    </c:forEach>

                     2.迭代数组:

                                     <c:forEach   begin="xxx"  end="xxx"   [var="xxx"]   [varStatus="xxx"]   [step="xxx"]>
                                                  循环体....
                                     </c:forEach>

        标签属性讲解:

                    1.items属性用于指定将要迭代的对象

                    2.var属性用于指  将当前迭代到的元素保存到page域中的名称(可以通过${xxx}获得对象)

                    3.varStatus属性用于指定当前迭代状态信息的对象保存到page域中的名称

                             varStatus属性可以获取以下信息:

                                           count:表示元素在集合中的序号,从1开始

                                           index:表示当前元素在集合中的索引,从0开始

                                           first:表示当前是否为集合中的第一个元素

                                           last:表示当前元素是否为集合中最后一个元素         

                     4.begin属性用于指定从集合中的第几个元素开始迭代,begin的索引值从0开始              

                     5.step属性用于指定迭代的步长,即迭代的增长因子

       用法案例:

                 迭代集合对象:

                  迭代数组元素:

                                                        

     

    总结

           在前端JSP页面中会经常用到EL表达式,和JSTL标签库,EL表达式使得取出request域和其它域中数据变得极其方便,JSTL免去了<%=    %>的繁琐操作。我介绍的JSTL的两个标签是核心库中最常用的两个,它们两个标签可以解决大多数问题。当然JSTL标签库中的标签远不止这些,有兴趣的小伙伴可以深入了解。

     

    下面是博主的其他文章,喜欢的博友们点个关注,谢谢您的支持。

    Java8 Lambda表达式入门

    Validate插件的自定义验证方法入门(结合Ajax实现用户名的数据库查重)

    JSON转换工具的使用

    展开全文
  • JSTL详解

    千次阅读 2016-12-18 19:20:44
    JSTL概述  (1)什么是JSTL  JSTL是Java中的一个定制标记库集。JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功 能。JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档...

     一JSTL概述

           (1)什么是JSTL

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

    能。JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它

    还提供了一个框架来使用集成JSTL的自定义标签。

           (2)为什么要使用JSTL

           1)实现了JSP页面的代码复用。基于标签库原理,重复率较高的代码块支持复用,提高效率。

           2)书写JSP页面时可读性更强。长得像XML,方便前端查看和参与开发。

           3)在应用程序服务器之间提供了一致的接口,最大程度地提高了WEB应用在各应用服务器之间的移植。

           4)简化了JSP和WEB应用程序的开发。

           (3)简单实例演示

           假如我们要做一个这样的效果:

           用户在页面的文本框中输入自己的角色(user or admin),然后点击登录按钮,如果输入的是user,那么结果是:

           

           如果输入的是admin,那么显示的结果是:

           

           同样的我们再来看它们两者的代码:

           JSP代码的效果是这样的:

           

           JSTL标签的效果是这样的:

           

           二搭建JSTL开发环境

           由于JSTL标签和Servlet及JSP页面有着比较严格的版本对应关系,版本对应不正确很容易抛出异常,所以在这里

    我采用的是Tomcat 8.0+JSTL 1.1.2的组合开发环境。

           具体步骤:

           1)从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip)。下载地址:

    http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/

          

           2)下载jakarta-taglibs-standard-1.1.2.zip 包并解压,将jakarta-taglibs-standard-1.1.2/lib/下的两个jar文

    件:standard.jar和jstl.jar文件拷贝到/WEB-INF/lib/下。

           

           

           3)选中这两个jar包,右键选择Build Path中的Add to Build Path,就会在Java源代码中的类库中出现这两个jar

    包。

           

           测试代码:

       

           运行结果:

           

           三JSTL标签分类

           根据JSTL标签所提供的功能,可以将其分为5个类别:

           1)核心标签(最常用、最重要,也是最基本的标签)

           2)格式化标签

           3)SQL标签

           4)XML标签

           5)JSTL函数(很常用)

           要使用JSTL库,要在每一个JSP的顶部,使用该库必须包括一个<taglib>指令。

           (1)核心标签

           核心组的标签是最常用的JSTL标签。以下是在JSP的语法包含JSTL核心库:

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
           有以下核心JSTL标签:

           

           (2)格式化标签

           使用JSTL格式标签来格式化和显示文本,日期,时间和数字的,国际化的网站。以下是在您的JSP的语法,包括

    格式化库:

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

           以下是格式化JSTL标签列表:

            

           (3)SQL标签

           JSTL的SQL标签库标签可以交互关系型数据库(如OracleMySQL或Microsoft SQL Server的关系数据库管理系

    统)。以下是在您的JSP语法包括JSTL SQL库:

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

           以下是SQL JSTL标签的列表:

           

           (4)XML标签

           JSTL XML标记提供了一种创建和操作XML文档的JSP为中心的方式。以下是在您的JSP的语法包括JSTL XML库。

    JSTL XML标记库具有自定义标签与XML数据交互。这包括XML解析,转换XML数据,流控制,基于XPath表达式。

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

           在继续之前的例子中,将需要复制下面的两个XML和XPath相关的库到<Tomcat安装目录> 的\lib目录:

           XercesImpl.jar: 下载地址 http://www.apache.org/dist/xerces/j/

           xalan.jar: 下载地址 http://xml.apache.org/xalan-j/index.html

           以下是XML JSTL标签列表:

           

           (5)JSTL函数

           JSTL包括一些标准功能,其中大部分是常见的字符串操作函数。以下是在JSP的语法包函JSTL函数库:

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

           以下是JSTL函数列表:

           

           后面就是详细介绍EL表达式和一些重要的标签的用法。


        在进行深入JSTL的学习之前,有必要先来学习一下EL表达式。

           一EL表达式

           EL表达式的全名为Expression language,经常与JSTL配合使用,使得JSP页面更直观,写法更简单。

           在EL表达式出现之前,开发Java Web应用程序时,经常需要将大量的Java代码片段嵌入JSP页面中,这会使得页

    面看起来很乱,而使用EL表达式则比较简洁。

           示例:

           在页面中显示保存在session中的变量username,并将其输出到页面中,代码如下:

    <%
    if(session.getAttribute("username") != null){
    out.println(session.getAttribute("username").toString());
    }
    %>

           如果使用EL,则只需一句代码即可实现:

    ${sessionScope.username}

            因此,EL在Web开发中比较常用,通常与JSTL一起使用。

            EL表达式除了具有语法简单、使用方便的特点,还有以下特点:

           1)EL表达式可以与JSTL结合使用,也可以也JavaScript语句结合使用;

           2)EL表达式L中会自动进行类型转换,如果想通过EL输入两个字符串数值(如n1和n2)的和,可以直接通过"+"进

    行连接(如${n1+n2});

           3)EL表达式不仅可以访问一般变量,还可以访问JavaBean中的属性及嵌套属性和集合对象;

           4)EL表达式中可以执行算术运算、逻辑运算、关系运算和条件运算等操作;

           5)EL表达式中可以获取命名空间(PageContext对象,他是页面中所有其他内置对象的最大范围的继承对象,通过

    他可以访问其他内置对象);

           6)在EL表达式中可以访问JSP的作用域(request、session、application、page);

           7)在使用EL表达式进行除法运算的时候,如果0作为除数,则返回无穷大Infinity,而不是返回错误;

           8)扩展函数可以与Java类的静态方法进行映射;

            二EL表达式用法

            (1)语法结构

            EL表达式的语法格式用美元符号$定界,内容包括在花括号{}中。以${开头,以}结束,中间为合法的表达式,具

    体语法格式如下:

    ${expression}

           参数说明:

           expression:指定要输出的内容,可以是字符串,也可以是由EL运算符组成的表达式。

           需要注意的是:

           由于EL表达式的语法是以${开头,所以如果在JSP页面中要显示字符串S{,则必须在前面加上"${"或者写

    成"${'${'}"。

           示例:

           在页面中输出字符串“JSP学习”,代码如下:

     ${'JSP学习'}

           (2)保留的关键字

           同Java一样,EL也有自己的保留关键字,在变量命名时,应避免这些关键字,包括使用EL输出已经保存在作用域

    范围内的变量,也不能使用关键字,如果已经定义了,那么需要修改为其他的变量名。EL表达式中的保留关键字如

    下:

          
           如果EL中使用了保留的关键字,那么在Eclipse中,将给出错误提示。如果忽略该提示,直接运行程序,将会出

    错。

           (3)EL变量

           EL表达式存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变

    量。

           因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查

    找。

           假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。

           属性范围在EL表达式中的名称:

           

           (4)[ ]与.操作符

           EL表达式提供"."和"[]"两种操作符来存取数据。两者通常情况是通用的:${user.sex}或者${user["sex"]}都是允许

    的。此外,"[]"还可以用来进行集合元素中的定位:${booklist[0].price}。

           以下两种情况是不可以通用的:

           1)包含特殊字符

           当要存取的属性名称中包含一些特殊字符,如 . 或 - 等并非字母或数字的符号,就一定要使用"[ ]"。例如:

    ${ user. My-Name}应当改为${user["My-Name"]}

           2)通过变量动态取值:

           如果要动态取值时,就可以用"[ ]"来做,而"."无法做到动态取值。例如:

    ${sessionScope.user[data]}中data 是一个变量。

           (5)EL表达式自动类型转换

           要取得文本框中的输入,我们需要做类型转换:

     String str_count = request.getParameter("count");
     int count = Integer.parseInt(str_count);
     count = count + 20;

           EL表达式会进行自动类型转换,只需要这样写:

    ${param.count + 20}

           (6)EL运算符

           运算符允许对数据和文字进行组合以及比较。

           EL运算符列表:

           

           1)算术运算符有五个:+、-、*或$、/或div、%或mod

           2)关系运算符有六个:==或eq、!=或ne、<或lt、>或gt、<=或le、>=或ge

           3)逻辑运算符有三个:&&或and、||或or、!或not

           4)其它运算符有三个:empty运算符、条件运算符、()运算符

           最常用的表达式:

           为空判断:${empty param.name}

           三元运算:${A?B:C}

           算数运算:${A*(B+C)} 

           简单实例:

       

           结果:

           

           三EL隐含对象 

           隐含对象列表:

           

           JSP表达式语言定义了一组隐式对象,pageContext取得其他有关用户要求或页面的详细信息。其中许多对象在

     JSP scriplet和表达式中可用:

           

           

           此外,还提供几个隐式对象,允许对以下对象进行简易访问:

           

           与输入有关的隐含对象有两个:param和paramValues,它们是EL表达式中比较特别的隐含对象。

           例如我们要取得用户的请求参数时,可以利用下列方法:

    request.getParameter(String name)
    request.getParameterValues(String name)

          在EL表达式中则可以使用param和paramValues两者来取得数据。

    ${param.name}

    ${paramValues.name}

           其他隐含对象的具体用法可以参考手册。

           除了上述两种类型的隐式对象之外,还有些对象允许访问多种范围的变量,如 Web 上下文、会话、请求、页

    面:

           

           在EL表达式中,这四个隐含对象只能用来取得范围属性值,即getAttribute(String name),却不能取得其他相

    关信息。

           例如:我们要取得session中储存一个属性username的值,可以利用下列方法:

    session.getAttribute("username") 
           在EL表达式中则使用下列方法:

    ${sessionScope.username}

            四EL函数

            EL函数的语法如下:ns:function( arg1, arg2, arg3 …. argN)

            其中ns为前置名称(prefix),它必须和taglib指令的前置名称一样。前置名称都为my,至于function为EL函数的

    名称,而arg1、arg2等等,都是function的传入值。

           EL函数主要分为四个部分

          1)web.xml配置文件:设定taglib的TLD文件位置

          2)JSP页面:使用EL函数的JSP页面

          3)tld文档:EL函数、标签库的设定文件

          4)Java源文件:EL函数主要程序逻辑处理部分

          这四个部分环环相扣,都互有关系。我们将在范例中详细描述这四个部分的制作过程。

          由于目前还没有使用到过,就不再进行举例说明了。

         

         常用核心标签介绍

           JSTL的核心标签共13个,从功能上可以分为4类:

           1)表达式控制标签

    <c:out>、<c:set>、<c:remove>、<c:catch>

           2)流程控制标签

    <c:if>、<c:choose>、<c:when>、<c:otherwise>  

           3)循环标签

    <c:forEach>、<c:forTokens>

           4)URL操作标签

    <c:import>、<c:url>、<c:redirect>

           <c:out>标

           <c:out>标签是显示表达式的结果,类似的方式<%=%>效果,与其不同的是<c:out>标签可以使用简单的"."操

    作符来访问属性。例如,要访问customer.address.street,使用的标签是:

    <c:out value="customer.address.street"/>

           <c:out>标签可自动转义XML标签,以便他们都不会计算为实际的标签。

           <c:out>标签具有以下属性:

           

           <c:out>标签的用法:

           1)输出常量:可在属性value中直接赋值

           2)输出变量:变量不存在时可配合defalut属性输出默认值,还可以通过属性escapeXml控制转义字符的输出方

    式。

           实例:

       

           结果:

           

           <c:set>标签

           <c:set>标签是JSTL的setProperty动作的友好版本。标签是有用的,因为它的表达式求值,并使用结果的

    JavaBean或Java.util.Map对象设置一个值。

           <c:set>标签具有以下属性:

           

           如果指定目标,属性也必须指定。

           <c:set>标签的用法:

           1)存值到scope中:可将值以变量形式存放在指定的范围中(2种方式)

           2)存值到JavaBean的属性中

           实例:

           实例类Person的代码:

    package com.entity;
    
    
    /**
     * 实体类Person
     * @author Administrator
     * @date 2016年7月27日
     */
    public class Person {
    	private String name;
    	private int age;
    	private String hobby;
    
    
    	public String getName() {
    		return name;
    	}
    
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    
    	public int getAge() {
    		return age;
    	}
    
    
    	public void setAge(int age) {
    		this.age = age;
    	}
    
    
    	public String getHobby() {
    		return hobby;
    	}
    
    
    	public void setHobby(String hobby) {
    		this.hobby = hobby;
    	}
    
    
    }

           NewFile.jsp页面:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!-- 导入JSTL标签库 -->
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!-- 导入实例类Person -->
    <jsp:useBean id="person" class="com.entity.Person" />
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSTL使用</title>
    </head>
    <body>
         <h1>JSTL标签的使用</h1>
         <hr>
         <!-- 存值到scope中 -->
         <!-- 方式一 -->
         <c:set value="today" var="day" scope="session" />
         <c:out value="${day}" /><br/>  
         <!-- 方式二 -->
         <c:set var="love" scope="application" >football</c:set>
         <c:out value="${love}" /><br/> 
         <!-- 通过set标签向person中赋值 -->
         <c:set target="${person}" property="name" value="Jack"/>
         <c:out value="${person.name}" /><br/>  
         <c:set target="${person}" property="age" >22</c:set>
         <c:out value="${person.age}" /><br/>       
    </body>
    </html>

           结果:

           

           <c:remove>标签

           <c:remove>标签是删除变量,无论是从指定的范围内或范围内的变量(如果没有指定范围)。这个动作通常是不

    特别有帮助,但它可以帮助确保一个JSP范围内的资源,它负责清理。

           <c:remove>标签具有以下属性:

           

           <c:remove>标签的用法:

           移除掉某个变量,var属性是必选的;scope属性是可选的。

           实例:

           

           结果:

           

           <c:catch>标签

           <c:catch>标签捕获任何异常信息,发生在它的身上,有选择地公开。简单地用于错误处理,更优雅地处理这

    个问题。

           <c:catch>标签具有以下属性:

           

           <c:catch>标签的用法:

           可以包含那些容易出错的JSTL标签(逻辑)。

           实例:

           

           结果:

           

           <c:if>标签

           <c:if>标签计算表达式,只有当表达式的值为true,则显示其主体内容。

           <c:if>标签具有以下属性:

           

           <c:if>标签的用法:

           同程序中的if作用相同,用来实现分支条件控制。

           text属性用于存放判断的条件,一般使用EL表达式来编写;

           var属性是指定名称用来存放判断的结果类型为true或false;

           scope属性是用来存放var属性存放的范围。

           实例:

           根据用户输入的成绩进行等级判断

           

           结果:

             

           这个例子没有做完,使用<c:if>标签实现比较繁琐,我们后面可以使用<c:choose>标签以及<c:when>标签来实

    现。



       <c:choose>标签、<c:when>标签和<c:otherwise>标签

           <c:choose>就像Java switch语句,它可以让你选择一些替代方案品。正如switch语句case语句,<c:choose>标

    签有<c:when>的标签。一个switch语句中有default子句来指定一个默认的行动同样的方式<c:choose>有

    <c:otherwise>作为默认子句。

           通常这三个标签被放在一起使用。<c:choose>标签嵌套在<c:when>标签和<c:otherwise>标签的外面作为他们

    的父标签来使用;其中<c:choose>标签和<c:when>标签也可以一起组合使用。

           <c:choose>标签没有任何属性。<c:when>标记有一个属性,下面列出了。<c:otherwise>标签没有任何属性。

           <c:when>标记具有以下属性:

           

            语法结构一:同时使用<c:choose>标签、<c:when>标签和<c:otherwise>标签

            结构:

    <c:choose>

         <c:when test="判断条件1" >

             //业务逻辑

         </c:when>

         <c:when tes="判断条件2" >

             //业务逻辑

         </c:when>

         ...

         <c:otherwise>

             //业务逻辑

          </c:otherwise>

    </c:choose>
            实例代码:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!-- 导入JSTL标签库 -->
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSTL使用</title>
    </head>
    <body>
         <h1>JSTL标签的使用</h1>
         <hr>
         <!-- 标签的用法 -->
         <form action="NewFile.jsp" method="post">
               <input type="text" name="score" value="${param.score}" />
               <input type="submit" />
         </form>
         <c:choose>
               <c:when test="${param.score>=90&&param.score<=100}">
                      <c:out value="优秀" />
               </c:when>
               <c:when test="${param.score>=80&&param.score<90}">
                      <c:out value="良好" />
               </c:when>
               <c:when test="${param.score>=70&&param.score<80}">
                      <c:out value="中等" />
               </c:when>
               <c:when test="${param.score>=60&&param.score<70}">
                      <c:out value="及格" />
               </c:when>
               <c:when test="${param.score>=0&&param.score<60}">
                      <c:out value="不及格" />
               </c:when>
               <c:otherwise>
                      <c:out value="你的输入有问题!" />
               </c:otherwise>
         </c:choose>
    </body>
    </html>

            结果:

            

            

            语法结构二:只使用<c:choose>标签和<c:when>标签

            结构:

    <c:choose>
         <c:when test="条件" />
             表达式
         </c:when>
    </c:choose>

            实例:

            在上面的代码中加上以下代码:

            

            结果:

            

            <c:forEach>标签

            存在这些标签嵌入Java的一个很好的选择,让while或do-while循环通过脚本。<c:forEach>标签是常用的标

    签,因为它遍历对象的集合。

           <c:forEach>标记有以下属性:

           

           <c:forEach>标签的用法:

           根据循环条件遍历集合(Collection)中的元素。

           var属性是设定变量名用于存储从集合中取出元素(必须无默认值);

           items属性是指定要遍历的几个(必须无默认值);

           begin属性和end属性是用于指定遍历的起始位置和终止位置(有默认);

           step属性指定循环的步长(有默认);

           varStatus属性通过index、count、first和last几个状态值,描述begin和end子集中的元素的状态。

           常用用法一:全部遍历

    <c:forEach var="存储当前遍历元素的变量" items="待遍历集合" >
         操作var变量表示的元素<br/>
    </c:forEach>
           实例代码:

    <%@page import="java.util.ArrayList"%>
    <%@page import="java.util.List"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!-- 导入JSTL标签库 -->
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSTL使用</title>
    </head>
    <body>
         <h1>JSTL标签的使用</h1>
         <hr>
         <%
               List<String> fruits = new ArrayList<String>();
               fruits.add("apple");
               fruits.add("orange");
               fruits.add("pear");
               fruits.add("watermelon");
               fruits.add("banana");
               fruits.add("grape");
               request.setAttribute("fruits",fruits);
         %>
         <!--用法一:全部遍历 -->
         <c:forEach var="fruit" items="${fruits}" >
                <c:out value="${fruit}" /><br/>
         </c:forEach>
         <c:out value="==========================" />
    </body>
    </html>

           结果:

           

           常用用法二:部分遍历

    <c:forEach var="存储当前遍历元素的变量" items="待遍历集合" begin="开始遍历元素的index值" end="结束遍历的元素的index值" >
          操作var变量表示的元素<br/>
    </c:forEach>
          上面实例加上以下代码:

          

          结果:

          

          常用用法三:部分遍历并且指定步长

    <c:forEach var="存储当前遍历元素的变量" items="待遍历集合" begin="开始遍历元素的index值" end="结束遍历的元素的index值" step="部分遍历中每次遍历的间隔元素个数" >
          操作var变量表示的元素<br/>
    </c:forEach>
           上面实例加上以下代码:

            

            结果:

            

            常用用法四:部分遍历时输出元素的状态

    <c:forEach var="存储当前遍历元素的变量" items="待遍历集合" begin="开始遍历元素的index值" end="结束遍历的元素的index值" step="部分遍历中每次遍历的间隔元素个数" varStatus="指定一个变量用来存储当前元素的状态值" >
           操作var变量表示的元素<br/>
    </c:forEach>

           上面实例加上以下代码:

           

            结果:

            

           <c:foTokens>标签

           <c:forTokens>标签是用来打破的字符串令牌和遍历每个标记。<c:forTokens>标签有类似<c:forEach>的属性,

    除了一个额外的属性delims指定要使用的字符作为分隔符。

            

           <c:forTokens>标签的用法:

           用于浏览字符串,并根据指定的字符将字符串截取。

           items属性用于指定迭代的字符串;

           delims属性指定使用的分隔符;

           var属性用来指定存放遍历到的成员;

           begin属性指定遍历的开始位置(int型从取值0开始);

           end属性是指定遍历的结束位置(int型,默认集合中最后一个元素);

           step属性指定循环的步长(大于0的整型);

           varStatus属性通过index、count、first和last几个状态值,描述begin和end子集中的元素的状态。

           实例:

           

           结果:

           

           对于其他的属性可以自行进行设置与验证。

           


    <c:import>标签

           <c:import>标签提供<jsp:include>动作标签的所有的功能动作,但也可以包含绝对URL。例如,允许使用导入

    标签包含的内容从一个不同的Web站点或FTP服务器。

           同<jsp:include>标签的区别:只能包含同一个Web应用中的文件,而<c:import>标签可以包含其他Web应用中

    的文件,甚至是网络上的资源。

           <c:import>标签具有以下属性:

           

           <c:import>标签的用法:

           可以把其他静态或动态文件包含到本JSP页面。

           url属性指的是被导入资源的URL路径;

           context属性指的是相同服务器下其他Web工程,必须以"/"开头;

           var属性指的是以String类型存入被包含文件的内容;

           scope属性指的是var变量的JSP范围;

           charEncoding属性指的是被导入文件的编码格式 ;

           varReade属性指的是以Reader类型存储被包含文件内容;

           context属性引入的内容是webapps下的其他的Web project。

           实例代码:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!-- 导入JSTL标签库 -->
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSTL使用</title>
    </head>
    <body>
         <h1>JSTL标签的使用</h1>
         <hr>
         <!-- import标签的用法 -->
         <!-- 导入网络上的绝对路径 -->
         <c:catch var="error09">
                <c:import url="https://www.baidu.com" charEncoding="UTF-8"  />
         </c:catch>
         <c:out value="${error09}" /><br/>
         <!-- 导入相对路径文件 -->
         <c:catch var="error08">
                <c:import url="test.txt" charEncoding="UTF-8" />
         </c:catch>
         <c:out value="${error08}" /><br/>
         <!-- var和scope属性的用法 -->
         <c:catch var="error07">
                <c:import url="test.txt" var="test" scope="session" charEncoding="UTF-8" />
         </c:catch>
         <c:out value="${error07}" />
         <c:out value="import标签存储的test字符串变量值为:${sessionScope.test}" /><br/>
         <!-- content属性的用法 -->
         <c:catch var="error06">
                <c:import url="/date.jsp" context="/FirstWebApp" charEncoding="UTF-8" />
         </c:catch>
         <c:out value="${error06}" />   
    </body>
    </html>

           结果:

           

            

           <c:redirect>标签和<c:param>标签

            <c:redirect>标签将浏览器重定向到一个备用URL提供自动URL重写,它支持上下文相关的URL和支持

    <c:param>标签。

           <c:redirect>标签具有以下属性:

           

           <c:param>标签允许适当的URL请求参数到指定的URL和任何必要的URL编码。在一个<c:param>标签的name

    属性表示参数的名称,value属性表示的参数值。

           <c:param>标签具有以下属性:

           

           <c:redirect>标签的用法:

            该标签用来实现请求的重定向,同事可以在url中加入指定的参数;

           url属性用于指定重定向页面的地址,可以是一个String类型的绝对路径或相对地址;

           context属性用于导入其他Web应用中的页面。

           实例:

           

           test.jsp页面代码:

           

           结果:

           

           <c:url>标签

           <c:url>标签格式化成一个字符串格式的URL,并将其存储到变量中。这个标签会在必要时自动执行URL重写。

     var属性指定的变量将包含格式化的URL。JSTL url标签只是response.encodeURL()方法的调用一个替代方法。URL

    标记提供的唯一的真正的优势是正确的URL编码,包括子<c:param>标签指定的任何参数。

           <c:url>标记具有以下属性:

           

           <c:url>标签的用法:

           该标签用于动态生成一个String类型的URL,可以同<c:param>标签共同使用,也可以使用HTML中的<a>标签

    实现超链接。

           var属性是将url路径存储在的变量中;

           value属性表示url路径值;

           scope属性是var变量的范围。

           实例:

           

           结果:

           

           JSTL函数

           需要在页面添加:

    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
           先来介绍几个简单常用的JSTL函数:

           1)使用fn:contains()函数判断输入的字符串是否包含指定的子串。

           使用fn:contains()函数的语法如下:

    boolean contains(java.lang.String, java.lang.String) 

           2)fn:containsIgnoreCase()函数判断输入的字符串是否包含指定的子串,搜索时忽略大小写。

           使用fn:containsIgnoreCase()函数的语法如下:

     boolean containsIgnoreCase(java.lang.String, java.lang.String)

           3)fn:endsWith()函数判断输入的字符串是否与指定的后缀结束。

           使用fn:endsWith()函数的语法如下所示:

    boolean endsWith(java.lang.String, java.lang.String)

           4)fn:startsWith() 函数判断输入的字符串是否为指定的子串开始。

           使用fn:startsWith() 函数有以下语法:

     boolean startsWith(java.lang.String, java.lang.String)

           5)fn:indexOf()函数返回在字符串中指定的子串的索引。

           使用fn:indexOf() 函数的语法如下:

    int indexOf(java.lang.String, java.lang.String)

           6)fn:escapeXml()函数转义字符,可以解释为XML标记。

           使用fn:escapeXml() 函数的语法如下:

    java.lang.String escapeXml(java.lang.String))
           实例代码:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!-- 导入JSTL标签库 -->
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!-- 导入JSTL函数库 -->
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSTL使用</title>
    </head>
    <body>
        <h1>JSTL函数的使用</h1>
        <hr>
        <!-- contains函数使用 -->
        <c:out value=" Hello Word字符串是否包含Hello:${fn:contains('Hello World','Hello')}" /><br>
        <c:out value=" Hello Word字符串是否包含test:${fn:contains('Hello World','test')}" /><br>
        <!-- containsIgnoreCase函数使用 -->
        <c:out value=" Hello Word字符串是否包含hello(忽略大小写):${fn:containsIgnoreCase('Hello World','hello')}" /><br>
        <c:out value=" Hello Word字符串是否包含WORLD(忽略大小写):${fn:containsIgnoreCase('Hello World','WORLD')}" /><br>
        <!-- endsWith和startsWith函数使用 -->
        <c:out value=" Hello Word字符串是否以World结尾:${fn:endsWith('Hello World','World')}" /><br>
        <c:out value=" Hello Word字符串是否以Hello开头:${fn:startsWith('Hello World','Hello')}" /><br>
        <!-- escapeXml函数使用 -->
        <c:out value="${fn:escapeXml('<book>谁的青春不迷茫</book>')}"  /><br>
        <c:out value="<book>谁的青春不迷茫</book>"  /><br>
        <!-- indexOf函数使用 -->
        <c:out value=" Hello Word字符串中Hello出现的index值:${fn:indexOf('Hello World','Hello')}" /><br>
    </body>
    </html>

           结果:

           

           其他的JSTL函数:

           

           对于其他的JSTL函数具体用法可以参考:http://www.yiibai.com/jstl

           关于JSTL的学习就告一段落,对于其他的XML标签、SQL标签和格式化标签我们使用到的时候再进行介绍,学习

    的过程是无止境的。



    展开全文
  • JSTL 标签大全详解

    万次阅读 多人点赞 2019-09-09 20:57:33
    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53311722 ...一、JSTL标签介绍 1、什么是JSTL? 2、JSTL标签库: 3、使用taglib指令导入标签库: 4、core标签库常用标签:...
  • jstl

    千次阅读 2018-09-12 16:19:05
    JSTL 简介 JSTL(Java Standard Tag Library) –Java标准标签库。 SUN公司制定的一套标准标签库的规范。JSTL标签库,是由一些Java类组成的。   JSTL组成: JSTL –Core 核心标签库。 - 这是本部分的重点 JSTL...
  • JSTL标签库

    千次阅读 2019-03-01 12:15:08
    在之前我们学过在JSP页面上为了不使用脚本,所以我们有了JSP内置的行为、行为只能提供一小部分的功能,大多数的时候还是会用java脚本,接着就使用了EL表达式,基本上EL表达式看似能满足我们的要求,它能够获取各种...
  • JSTLjstl.jar和standard.jar的下载地址与使用

    万次阅读 多人点赞 2018-05-07 12:56:46
    jstl.jar下载地址: http://repo2.maven.org/maven2/javax/servlet/jstl/standard.jar下载地址: http://repo2.maven.org/maven2/taglibs/standard/JSTL 1.0 的声明是: &lt;%@ taglib prefix="c" ...
  • jstl的jar包的下载

    万次阅读 多人点赞 2019-04-04 11:37:32
    1. 我们在使用spring框架的时候导入jstl标签库需要使用到jstl的jar包,假如没有加入到eclipse的lib目录下,使用alt + /的时候不会有提示,所以我们需要把这个jar包加进来 首先登陆网址:...
  • jstl-1.2.jar下载

    千次阅读 2018-12-20 11:22:03
    下载链接https://www.lanzous.com/i2nk30d
  • JSTL使用需加入两个jar包:jstl与taglibs

    万次阅读 2012-11-22 18:17:27
    JSTL使用需加入两个jar包:jstl与taglibs   jstl jstl 1.1.2 taglibs standard 1.1.2   其次
  • 官网下载jstl所用到的jar包

    千次阅读 2018-02-26 11:51:58
    进入官网http://www.apache.org/dist/看图说话:下载解压:
  • JSTL数字相除取整数

    万次阅读 2012-12-26 15:51:38
    //1.5 //1
  • JS中使用JSTL标签

    万次阅读 2013-05-30 15:59:20
    JS中使用JSTL标签 只要把jstl标签放到内就可以使用,解析过程是jsp先去服务器端取数据(解析jstl),然后返回生成js文件. 具体没研究,有空再研究吧,有点忙!!!    jifens[${jfgz.gzId}] = ...
  • JSTL实现for(int i)循环

    万次阅读 2012-10-29 10:01:20
    只要不填写items就行了
  • jstl.jar 导入eclipse中的方法

    千次阅读 2015-04-16 21:25:52
    jstl.jar  应该保存在 WEB-INF 下的 lib 文件夹内才能正常使用,而不是作为jar包导入。。。。。。。。。。
  • maven工程中如何引入jstl标签库的支持
  • jstl转义显示html标签

    千次阅读 2011-07-01 16:05:00
    escapeXml这个属性决定是否转义。从数据库里取出来,直接用这个标签显示就行了!
  • JSTL C标签 判断参数是否为空

    万次阅读 多人点赞 2014-10-13 14:59:23
    str为空    str不为空
  • IDEA中导入JSTL的包文件方法

    千次阅读 2019-04-08 11:51:51
    解决方法:手动导入JSTL的包文件 先从http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/下载JSTL包的ZIP文件,下载最新的jakarta-taglibs-standard-1.1.2.zip那一个即可。 然后打开IDEA的...
1 2 3 4 5 ... 20
收藏数 100,281
精华内容 40,112
关键字:

jstl