JSP 标准标签库(JSTL)[通俗易懂]

JSP 标准标签库(JSTL)[通俗易懂]JSP 标准标签库(JSTL)

大家好,又见面了,我是你们的朋友全栈君。

产生原因

在这里插入图片描述在这里插入图片描述

JSTL操作符

  • el表达式的取值默认顺序: pageScope requestScope sessionScope applicationScope
  • 结构:采用.导航,也称为存取器 ${
    user.name} ${
    user.class.name} 、输出map ${mapValue.key1} 、输出数组 ${strArray[1]} 、输出list ${list[1].name}
  • el表达式的运算
    ${1+2}= 3
    ${10/5}= 2.0
    ${10%3}= 1
    ${10 div 2}= 5.0
    ${10 mod 4}= 2
  • el表达式对应的运算符
    在这里插入图片描述
名称 符号 对应字段
等于 == eq
不等于 != ne
大于 > gt
小于 < lt
大于等于 >= ge
小于等于 <= le
&& or
II and
! not
+
*
除以 / div
求莫 % mod
  • el表达式判断是否为空
jsp JSTL
request.setAttribute(“value1”,null) ${empty requestScope.value1} = true
request.setAttribute(“value2”,””) ${empty requestScope.value1} = true
request.setAttribute(“value3”,new ArrayList()) ${empty requestScope.value1} = true
request.setAttribute(“value4”,“i love you”) ${empty requestScope.value1} = false
request.setAttribute(“value4”,“i love you”) ${!empty requestScope.value1} = true
  • jar及配置

web.xml

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
id="WebApp_ID" version="2.4"> 

大于等于2.4 方可支持jstl ,先引入 standard.jar 和 jstl.jar
jstl标签的用法 在页面引入 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
在这里插入图片描述
输出标签 ———–

 <c:out value="ppp" />                                              输出   ppp 
 <c:out value="null" default="ddd"/>                                输出   ddd   可以设置默认值 
 <c:out value="<font color="red">kkk</font>" escapeXml="false"/>    输出 红色的kkk    默认的escapeXml为true 

赋值标签 ———–

                <c:set value="123" var="jj" scope="session" />       此时有个名为jj,值为123的session ,默认的scope为page 
                   ${jj}                                             在页面打印出123 
                <c:remove var="jj" />                                将其删除,可以指定scope,默认为page     

逻辑标签 ———–

                 <c:if test="?" />                                   ?:代表条件 可以用el表达式      
                 
                 <c:choose> 
                     <c:when test="?"> 
                        ......                                         相当于 if...else...   c:when 可以有多个,相当于else if 
                     </c:when> 
                     <otherwise> 
                       ...... 
                     </otherwise> 
                 </choose> 

循环控制标签 ———–

                 <c:forEach items="${list}" var="u" >                   ${list}是一个集合 
                     ${u.name} 
                 </c:forEach> 
                 
                 
                 <c:forEach items="${list}" var="u" varStatu="ss">                  
                     <c:choose> 
                     <c:when test="u.age % 2 == 0"> 
                        <tr bgColor="red">                                  如果集合中的数字是偶数,则当行为红色 
                     </c:when> 
                     <otherwise> 
                        <tr>    
                     </otherwise> 
                     </choose> 
                 </c:forEach> 
                 
                 
                 <c:forEach items="${list}" var="u" begin="2" end="8" step="2">                 输出下表(从0开始)为2到8的元素,每次递增2 
                     ${u.name}                                                                  将输出u[2].name  u[4].name  u[6].name  u[8].name 
                 </c:forEach> 
                                   
                 Map m = new Map(); 
                 m.put("k1","v1");         
                 m.put("k2","v2");         
                 request.setAttribute("mapValue",m); 
                 
                 <c:forEach items="mapValue" var="ma"> 
                     ${ma.key} = ${ma.value}                                 输出:  k1=v1  k2=v2   
                 </c:forEach> 

间隔符控制标签————-

                request.setAttribute("str","1,2,3,4,5");      
                
                <c:forTokens items="str" delims="," var="de">             
                    ${de}                                                  输出 12345 
                </c:forTokens>     

捕获异常标签 ———-

               <c:catch var="info"> 
                   <% 
                     Integer.parseInt("sdfsdf");                 
                   %>        
               </c:catch> 
               
               ${info}                                             输出:异常信息 

导入页面标签 ———–

               <c:import url="http://www.baidu.com" />            相当于include 

链接标签 ————

               <c:url value="http://www.baidu.com" var="v"/> 
                   <c:param name="name" value="jack" /> 
                   <c:param name="age" value="20" /> 
               </url>     
               
               ${v}              输出        http://www.baidu.com?name=jack&age=20 

重定向标签 ————

               <c:redirect context="/company" url="/index.jsp">   定位到名叫company的项目下的index.jsp页面            

使用JSTL:

引入JSTL的相关的jar包.
在页面中引入标签库.<%@ taglib uri=”” prefix=””%>

在这里插入图片描述

jstl标签

 <body>
      <h1>jstl标签</h1>
      <c:set var="name" value="张三" scope="page"></c:set>
      ${name }

      <!-- 默认输出北京,但是如果有第一行则输出value中的上海 -->
      <c:set var="city" value="上海" scope="page"></c:set>
      <c:out value="${city }" default="北京"></c:out>
      <c:out value="<h1>标题一</h1>" escapeXml="false"></c:out>

      <c:set var="n1" value="10" scope="page"></c:set>
      <c:set var="n2" value="20" scope="page"></c:set>
      <c:if test="${n1<n2 }" var="flag" scope="page">
        n1小于n2!
      </c:if>
       <c:if test="${flag }">
        n1小于n2!
      </c:if>
      <br/>
       <c:set var="n1" value="30" scope="page"></c:set>
      <c:set var="n2" value="20" scope="page"></c:set>
      <c:if test="${n1>=n2 }" var="flag" scope="page">
        n1大于等于n2!
      </c:if>
      <c:if test="${flag }">
        n1大于等于n2!
      </c:if>
  </body>

JSTL常用标签:forEach

<body>
        <h1>JSTL常用标签:forEach</h1>
        <h3>遍历数组</h3>
        <%
            String[] arr = {"张三","李四","王五"};
            pageContext.setAttribute("Arr", arr);
         %>
         <c:forEach var="i" items="${Arr }">
            ${i } 
         </c:forEach>

         <h3>遍历List集合</h3>
         <%
            List<String> list = new ArrayList<String>();
            list.add("孙六");
            list.add("钱六");
            list.add("赵七");
            pageContext.setAttribute("List", list);
          %>
          <c:forEach var="i" items="${List }">
            ${i }
          </c:forEach>

          <h3>遍历Map集合</h3>
          <%
                Map<String,String> map = new HashMap<String,String>();
                map.put("a", "钱一");
                map.put("b", "刘二");
                map.put("c", "朱三");
                pageContext.setAttribute("Map", map);
           %>
           <c:forEach var="entry" items="${Map }">
            ${entry.key }-${entry.value }
           </c:forEach>

           <h3>遍历从1到10</h3>
           <c:forEach var="i" begin="1" end="10">
            ${ i }
           </c:forEach>

           <h3>遍历从100到300,step=5</h3>
           <!-- varStatus记录循环状态,这里隔三个标红一次 -->
           <c:forEach var="i" begin="100" end="300" step="5" varStatus="status">
                <c:if test="${status.count % 3 == 0 }">
                    <font color="red">${i }</font>
                </c:if>
                <c:if test="${status.count % 3 != 0 }">
                    ${i }
                </c:if>
           </c:forEach>
  </body>

JSTL提供的EL的函数库

(<%@ taglib uri=”http://java.sun.com/jsp/jstl/functions” prefix=”fn” %>)
<body>
 <h1>JSTL提供的EL的函数库</h1>
 <!-- 判断是否有Hello -->
 ${ fn:contains("Hello World","Hello") }
 ${ fn:length("Hello") }
 ${ fn:toLowerCase("ASDFG") }

 <!-- 引号要么外面单引里面双引,要么里面单引外面双引 -->
 <!-- c:forEach var="i" items="${ fn:split('a-c-b-d-r','-') }"-->
 <c:forEach var="i" items="${ fn:split('a-c-b-d-r','-') }">
   ${i }
 </c:forEach>
</body>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106675.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Jmeter 之正则表达式提取器应用「建议收藏」

    Jmeter 之正则表达式提取器应用「建议收藏」目录前言一、获取单个数据二、获取多个数据个人觉得非常非常细节的地方注意一下:前言说到Jmeter正则表达式提取器的应用,就不得不说到关联。所谓关联,就是把应用中动态变化返回的数据获取到,把它保存为一个参数,提供给后面需要用到的地方进行使用。Jmeter中关联可以通过“添加—后置处理器—正则表达式提取器”来获取数据,且注意正则表达式提取器附在需要获取数据的某个采样器之下,数据一般从“查看结果树“的响应数据获取。Jmeter中关联可以通过“添加—后置处理器—正则表达式提.

    2025年10月21日
    2
  • Java内存管理-一文掌握虚拟机创建对象的秘密(九)

    勿在流沙筑高台,出来混迟早要还的。做一个积极的人编码、改bug、提升自己我有一个乐园,面向编程,春暖花开!回顾一下:本文是接着上一篇内容:Java内存管理-愚人节new一个对象送给你(八),继续整理!主要内容讲解HotSpot虚拟机在Java堆中对象是如何创建、内存分配布局和访问方式。本文地图:一、给你创建一个对象如果你是一直从第一季看过来的,那一定知道前面有个地方讲过类的整…

    2022年2月28日
    32
  • IP地址分类以及子网划分「建议收藏」

    IP地址分类以及子网划分「建议收藏」IP地址:是网络层的概念,IP地址长度为32位,分为四个8位,用点分十进制来表示,每部分范围0~255(0~255.0~255.0~255.0~255)。一个可有2的32次方个IP地址。1、IP地址的分类最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。IP地址根据网络ID的不同分为5种类型,A类地址、B

    2022年5月7日
    52
  • 单片机控制步进电机

    单片机控制步进电机简介:用单片机控制步进电机正转反转加速减速;由LCD1602实时显示步进电机的状态;F-正转,B-反转;数字越大,转速越大;仿真原理图如下:MCU和LCD1602显示模块:ULN2803驱动和步进电机模块:C语言代码如下:/*—————————–FileName:StepperMotor.hFunction:函数头文件Autho…

    2022年6月1日
    39
  • java outputstream用法_Java OutputStream 类

    java outputstream用法_Java OutputStream 类JavaOutputSt 类在本教程中 我们将通过一个示例学习 JavaOutputSt 及其方法 java io 包的 OutputStream 类是一个抽象超类 它表示字节的输出流 因为 OutputStream 是一个抽象类 所以它本身并不有用 但是 它的子类可以用来写数据 OutputStream 的子类为了使用 OutputStream 的功能 我们可以使用其子类 他们之中有一些是 在下

    2025年7月2日
    6
  • 微信公众平台-微信服务号开发

    文章目录背景:一、微信各个平台介绍二、公众平台介绍三、开发前准备四、服务器配置五、服务器验证六、消息接收七、客服消息八、获取素材九、相关工具十、最终效果展示总结背景:近期接到了涉及微信开放平台和微信公众平台相关的开发需求,开发过程中踩了许多坑,把相关问题整理记录下来以便巩固记忆,并把总结的经验分享出来,本篇分享微信服务号开发,希望可以给大家提供帮助一、微信各个平台介绍1、微信开放平台:面向开发人员,为网站、App提供微信第三方登录功能,为App提供支付功能。2、微信公众平台:对应的是公众号,包括订

    2022年4月12日
    172

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号