• JavaWeb-JSTL标签库


    1. JSTL标签库的含义?

    • Java Standard Tag Lib(Java标准的标签库)
    • JSTL标签库通常结合EL表达式一起使用。目的是让JSP中的java代码消失。
    • 标签是写在JSP当中的,但实际上最终还是要执行对应的java程序。(java程序在jar包当中。)

    2. 使用JSTL标签库的步骤

    • 第一步:引入JSTL标签库对应的jar包。
      在这里插入图片描述
    • 第二步:在JSP中引入要使用标签库。(使用taglib指令引入标签库。)
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    这个就是核心标签库。
    prefix="这里随便起一个名字就行了,核心标签库,大家默认的叫做c,你随意。"
    
    • 1
    • 2
    • 3
    • 第三步:在需要使用标签的位置使用即可。表面使用的是标签,底层实际上还是java程序

      • 使用样例
    <c:forEach items="${stuList}" var="s">
        id:${s.id} name:${s.name}<br>
    </c:forEach>
    
    • 1
    • 2
    • 3

    3. JSTL标签库的原理

    • <%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
      以上uri后面的路径实际上指向了一个xxx.tld文件
      在这里插入图片描述
      tld文件实际上是一个xml配置文件。
      在tld文件中描述了“标签”和“java类”之间的关系。
      以上核心标签库对应的tld文件是:c.tld文件。它在哪里。
      在jakarta.servlet.jsp.jstl-2.0.0.jar里面META-INF目录下,有一个c.tld文件。

    • 源码解析:配置文件tld解析

    <tag>
        <description>对该标签的描述</description>
        <name>catch</name> 标签的名字
        <tag-class>org.apache.taglibs.standard.tag.common.core.CatchTag</tag-class> 标签对应的java类。
        <body-content>JSP</body-content> 标签体当中可以出现的内容,如果是JSP,就表示标签体中可以出现符合JSP所有语法的代码。例如EL表达式。
        <attribute>
            <description>
            	对这个属性的描述
            </description>
            <name>var</name> 属性名
            <required>false</required> false表示该属性不是必须的。true表示该属性是必须的。
            <rtexprvalue>false</rtexprvalue> 这个描述说明了该属性是否支持EL表达式。false表示不支持。true表示支持EL表达式。
        </attribute>
      </tag>
    
    <c:catch var="">
    	JSP....
    </c:catch>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    4. jstl中的核心标签库core中常用的标签

    • c:if

    <c:if test="${not empty param.username}">
        <h1>欢迎您,${param.username}</h1>
    </c:if>
    
    • 1
    • 2
    • 3
    • c:forEach

      • ${元素状态对象.count}
      • ${i}
    <%
    
        //创建List集合
        List<Student> studentList = new ArrayList<>();
    
        //创建学生,将学生加入到集合中
        Student s1 = new Student("123","Jack");
        Student s2 = new Student("456","Merry");
        Student s3 = new Student("789","Quick");
    
        studentList.add(s1);
        studentList.add(s2);
        studentList.add(s3);
    
        //将集合放入请求域
        request.setAttribute("stuList",studentList);
    %>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    <c:forEach items="${stuList}" var="s">
        id:${s.id} name:${s.name}<br>
    </c:forEach>
    
    • 1
    • 2
    • 3
    • c:choose c:when c:otherwise
    
      <c:choose>
          <c:when test="${param.age < 18}">
              青少年
          </c:when>
          <c:when test="${param.age < 35}">
              青年
          </c:when>
          <c:when test="${param.age < 55}">
              中年
          </c:when>
          <c:otherwise>
              老年
          </c:otherwise>
      </c:choose>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    远程办公或常态化,“小城房”or“大城床”你会怎么选?
    【已解决】Unity 使用NPOI 写word文档报错:System.TypeLoadException:……0.86.0.518
    vulhub中GitLab 远程命令执行漏洞复现(CVE-2021-22205)
    【程序员必看】计算机网络,快速了解网络层次、常用协议和物理设备!
    url找不到404的问题,url被拼接
    23、线程
    RK3568笔记一:RKNN开发环境搭建
    Python实现微信自动化发送信息
    强化学习-学习笔记2 | 价值学习
    抖音无需API开发连接Stable Diffusion,实现自动根据评论区的指令生成图像并返回
  • 原文地址:https://blog.csdn.net/weixin_44606952/article/details/126215234