目录

一:深入解析JSTL标签库

1、什么是JSTL标签库

2、使用JSTL标签库的步骤

3、JSTL标签的原理

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


一:深入解析JSTL标签库

1、什么是JSTL标签库

①Java Standard Tag Lib(Java标准的标签库)。

②JSTL标签库通常结合EL表达式一起使用,目的是让JSP中的java代码消失。

③标签是写在JSP当中的,但实际上最终还是要执行对应的java程序(java程序在jar包当中)

2、使用JSTL标签库的步骤 

第一步:引入JSTL标签库对应的jar包

(1)tomcat9之前引入的jar包是:

①taglibs-standard-impl-1.2.5.jar

②taglibs-standard-spec-1.2.5.jar

(2)tomcat10之后引入的jar包是:

①jakarta.servlet.jsp.jstl-2.0.0.jar

②jakarta.servlet.jsp.jstl-api-2.0.0.jar

(3)在IDEA当中怎么引入?

①在WEB-INF下新建lib目录,然后将jar包拷贝到lib当中,选中两个jar包右击鼠标,点击“Add Lib...”进行添加。

②一定是要和mysql的数据库驱动一样,都是放在WEB-INF/lib目录下的。

③什么时候需要将jar包放到WEB-INF/lib目录下?如果这个jar是tomcat服务器没有的。

第二步:在JSP中引入要使用标签库

①使用taglib指令引入标签库

②JSTL提供了很多种标签,重点掌握核心标签库 :http://java.sun.com/jsp/jstl/core

③语法格式如下:

prefix="起的名字,核心标签库,一般默认叫做c,可随意。"

uri=http://java.sun.com/jsp/jstl/core 表示使用的是这个库

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

第三步: 在需要使用标签的位置使用即可

①表面使用的是标签,底层实际上还是java程序 。

②例如:<c:catch></c:catch> 实际上对应的就是一个java类。

3、JSTL标签的原理

①<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>以上uri后面的路径实际上指向了一个xxx.tld文件。鼠标停留在路径上,按ctr键就会自动显示对应的xxx.tld文件,例如:C:\Users\86177\IdeaProjects\JavaWeb\jsp\web\WEB-INF\lib\taglibs-standard-impl-1.2.5.jar!\META-INF\c.tld

②tld文件实际上是一个xml配置文件,在tld文件中描述了“标签”和“java类”之间的关系。
以上核心标签库对应的tld文件是:c.tld文件。它在taglibs-standard-impl-1.2.5.jar里面META-INF目录下,有一个c.tld文件。

③以里面的catch标签为例,进行源码分析

<tag><description>  对标签的描述Catches any Throwable that occurs in its body and optionallyexposes it.</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表达式(属于JSP的)。<attribute>  属性<description> 对这个属性的描述Name of the exported scoped variable for theexception thrown from a nested action. The type of thescoped variable is the type of the exception thrown.</description><name>var</name> 属性名<required>false</required> false表示该属性不是必须的。true表示该属性是必须的。<rtexprvalue>false</rtexprvalue> 这个描述说明了该属性是否支持EL表达式。false表示不支持。true表示支持EL表达式。</attribute></tag>

④所以对于catch标签的语法格式如下:

<c:catch var="">JSP....
</c:catch>

⑤以foreach标签进行举例说明,通过源码分析,发现foreach标签有一个items属性,这个属性是可以指向一个集合的,并且也支持EL表达式;还有一个var属性,var后面的名字是随意的,var属性代表的是集合中的每一个元素。

⑥所以现在就可以使用EL表达式来代替我们原来我们用java代码使用增强for循环取出数据的过程!

<%@ page import="com.bjpowernode.javaweb.jsp.Student" %>
<%@ page import="java.util.*" %>
<%@page contentType="text/html; charset=UTF-8" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%// 创建List集合List<Student> stuList = new ArrayList<>();// 创建Student对象Student s1 = new Student("110", "经常");Student s2 = new Student("120", "救护车");Student s3 = new Student("119", "消防车");// 添加到List集合中stuList.add(s1);stuList.add(s2);stuList.add(s3);// 将list集合存储到request域当中request.setAttribute("stuList", stuList);
%><%--第一种方式:使用Java代码,把for循环拆分了,看起来很诡异--%>
<%/// 从域中获取List集合List<Student> stus = (List<Student>)request.getAttribute("stuList");// 编写for循环遍历list集合for(Student stu: stus){
%>id:<%=stu.getId()%>,name:<%=stu.getName()%><br><%}
%><%--第二种方式:使用JSTL标签库中的forEach标签,非常简明、美观--%>
<c:forEach items="${stuList}" var="s">id:${s.id},name:${s.name}<br>
</c:forEach>

⑦进行测试访问:http://localhost:8080/jsp/17.jsp 发现这两种方式都能取出数据!

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

(1)if标签

①语法格式:<c:if test=" "></c: if> 。

②test属性是必须的,test属性支持EL表达式;test属性值只能是boolean类型。

③if标签还有var属性,不是必须的;v变量中存储的是test属性的值。

④还有scope属性,用来指定var的存储域,也不是必须的。scope有四个值可选:page(pageContext域)、request(request域)、session(session域)、application(application域)

<%@page contentType="text/html;charset=UTF-8" %><%--引入核心标签库--%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%--if标签,test属性是必须的--%>
<c:if test="${empty param.username}"><h1>用户名不能为空</h1>
</c:if><c:if test="${not empty param.username}" var="v" scope="request"><h1>欢迎${param.username}登录</h1>
</c:if><%--通过EL表达式将request域当中的v取出--%>
${v}

JSTL标签库 | 深入解析JSTL标签库相关推荐

  1. python词库_解析搜狗词库(python)

    #!/usr/bin/python # -*- coding: utf-8 -*- import struct import sys import binascii import pdb #搜狗的sc ...

  2. js解析一段html标签,js怎么解析html标签

    2 获取该 HTML 标签中的节点 获取 HTML 节点(标签) 的体例有三种 (按照 id, 按照标签名, 按照 class类名), 即 getElementById()--按照id getElem ...

  3. python解析html的库_python解析html开发库pyquery使用方法

    例如 代码如下: 导演: 汤姆·提克威 / 拉娜·沃卓斯基 / 安迪·沃卓斯基 编剧: 汤姆·提克威 / 安迪·沃卓斯基 / 拉娜·沃卓斯基 主演: 汤姆·汉克斯 / 哈莉·贝瑞 / 吉姆·布劳德本特 ...

  4. 深入浅出WMS之出库流程解析

    深入浅出WMS之出库流程解析 创建出库单 出库单管理 出库单管理-配货 出库单管理-关单 出库任务管理 出库任务管理-撤销 结尾 创建出库单 本来打算周末的时候写出库的流程,没想到今天开了一天会,作为 ...

  5. java标签库 taglib pdf格式_JSP系列教材 (十)- JSTL Java Standard Tag Library 标准标签库...

    JSTL JSP Standard Tag Library 标准标签库 JSTL允许开人员可以像使用HTML标签 那样在JSP中开发Java功能. JSTL库有core, i18n, fmt, sql ...

  6. JSP系列教材 (十)- JSTL Java Standard Tag Library 标准标签库

    JSTL JSP Standard Tag Library 标准标签库 JSTL允许开人员可以像使用HTML标签 那样在JSP中开发Java功能. JSTL库有core, i18n, fmt, sql ...

  7. Javaweb(JSTL)—— ——Sun公司指定标准标签库

    JSTL 提示:( JavaServer Pages Standard Tag Library),简称JSTL. 在JSP诞生之初,JSP提供了在HTML代码中嵌入Java代码的特性,这使得开发者可以 ...

  8. JSP页面中使用JSTL标签出现无法解析问题解决办法

    JSP页面中使用JSTL标签出现无法解析问题解决办法 参考文章: (1)JSP页面中使用JSTL标签出现无法解析问题解决办法 (2)https://www.cnblogs.com/xdp-gacl/p ...

  9. JSP标签:jsp内置标签、jstl标签、自定义标签

     一.jsp标签的分类: 1)内置标签(动作标签): 不需要在jsp页面导入标签 2)jstl标签: 需要在jsp页面中导入标签 3)自定义标签 : 开发者自行定义,需要在jsp页面导入标签    1 ...

最新文章

  1. 手把手实现YOLOv3(二)
  2. JAVA去掉HTMl以及CSS样式
  3. ASP.NET 安全认证(二)——灵活运用deny与allow 及保护.htm等文件
  4. 数据库和ORMS:使用SQLAlchemy与数据库通信
  5. Gitlab自动触发Jenkins构建项目
  6. Chrome开发者工具之JavaScript内存分析
  7. c语言输入成绩求不及格,输入一个学生信息,可以输出,不及格那个输出狗后会有程序停止运行...
  8. block,inline和inline-block
  9. python在知名公司的应用
  10. python + Eclipse + Pydev 安装
  11. 你应该掌握的产品研发管理流程及常见问题处理
  12. python的图导入origin_利用Origin软件做X射线倒易空间图(RSM)的办法
  13. go 学习笔记之无心插柳柳成荫的接口和无为而治的空接口
  14. redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required
  15. 运行ant-design-pro报错ERROR in ./node_modules/swagger-ui-react/swagger-ui.js 2:107055-107070Module not
  16. vue print 解决针式打印机打印失败不清晰的问题
  17. 【自适应引导滤波和梯度信息:PAN+MS:传统方法HIS】
  18. “大数据”爆发时代,国内存储产业加速发展
  19. win7系统无法更新计算机配置,win7提示无法更新启动配置怎么办
  20. Unity3D命令手册

热门文章

  1. pythonguess函数用法_Python guess
  2. 目标检测YOLO实战应用案例100讲-基于单目的自动驾驶三维目标检测系统研究
  3. Linux下查看隐藏文件命令
  4. 想要做”架构师“,一定要会画设计图
  5. 程序员用搞笑个性签名
  6. sql 删除最早的一条记录
  7. 拓嘉启远:拼多多价格体系有哪些需要了解的
  8. MSN aborted;0x80004004异常
  9. win10系统如何开启/安装ubuntu子系统
  10. 【2021.11综合方案】Ubuntu + 高通QCA6174无线网卡连接不上WIFI问题解决