JSTL标签库(JSP标准标签库)

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: JSTL(JSP Standard Tag Library,核心标签库)是 JSP 标签的集合,它封装了 JSP 应用的通用核心功能。JSP 标签是一组与 HTML 标签相似,但又比 HTML 标签强大的功能标签。JSTL 用来简化 JSP 开发,可以使我们不用嵌入 Java 代码就能够开发出复杂的 JSP 页面。JSTL 包含 5 类标签库:core 标签库、fmt 标签库、fn 标签库、XML 标签库和 SQL 标签库。这 5 类标签库基本覆盖了 Web 开发中的所涉及的技术展示。

JSTL标签库(JSP标准标签库)

JSTL(JSP Standard Tag Library,核心标签库)是 JSP 标签的集合,它封装了 JSP 应用的通用核心功能。

JSP 标签是一组与 HTML 标签相似,但又比 HTML 标签强大的功能标签。JSTL 用来简化 JSP 开发,可以使我们不用嵌入 Java 代码就能够开发出复杂的 JSP 页面。

JSTL 包含 5 类标签库:core 标签库、fmt 标签库、fn 标签库、XML 标签库和 SQL 标签库。这 5 类标签库基本覆盖了 Web 开发中的所涉及的技术展示。

JSTL的下载和使用

使用 JSTL 需要引入 JSTL 的 JAR 包和标签库描述符文件(扩展名为 .tld),标签库描述符文件内包含标签库中所有标签的定义、标签名、功能类及各种属性。

注意:本教程使用的 JSTL 1.2,如果你使用的是 JSTL 1.1 或之前的版本,需要导入 jstl.jar 和 standard.jar 两个包。可点击 http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/ 链接下载 JSTL 1.1 及之前的版本。

使用 taglib 指令导入标签库描述符文件,例如要使用 JSTL 核心标签库,需要在 JSP 页面的上方增加如下指令:

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

taglib 指令通过 uri 属性引入某个标签库的配置文件,JSP 页面中通过 prefix 属性指定的前缀即可访问该标签库中的某个标签功能,如 <c:out>

核心标签

JSTL 核心(core)标签是最常用的 JSTL 标签,导入核心标签库的语法如下:

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

JSTL 核心标签

标签 说明
<c:out> 将表达式的结果输出到页面中,类似于 <%= ...%>
<c:set> 在指定范围内设置变量或属性值
<c:if> 类似于 Java if 语句,用于条件判断
<c:choose> 类似于 Java switch 关键字,为 <c:when>和<c:otherwise> 的父标签
<c:when> <c:choose> 的子标签,用来判断条件是否成立
<c:otherwise> <c:choose> 的子标签,当所有的 <c:when> 标签判断为 false 时被执行
<c:forEach> 类似于 Java for,用于迭代集合中的信息
<c:forTokens> 类似于 Java split,用于分隔字符串
<c:remove> 用于删除数据
<c:catch> 用于捕获异常
<c:import> 用来导入静态或动态文件
c:param 用来传入参数
<c:redirect> 用于将当前页面重定向至另一个 URL
<c:url> 用于将 URL 格式化为一个字符串

格式化标签

JSTL 格式化(fmt)标签可以通过很简单的方式转换数字、日期,导入格式化标签库的语法如下。

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

JSTL格式化标签

标签 说明
<fmt:requestEncoding> 设置请求数据的字符编码
<fmt:setLocal> 用于设置用户本地化环境
<fmt:bundle> 绑定资源
<fmt:message> 用来从指定的资源文件中调用信息
<fmt:setBundle> 绑定资源
<fmt:formatNumber> 用于格式化数字、百分比和货币
<fmt:parseNumber> 用于解析数字、货币和百分比
<fmt:formatDate> 用于使用不同的方式格式化日期
<fmt:parseDate> 用于把字符串类型的日期转换成日期数据类型
<fmt:timeZone> 用于指定时区
<fmt:setTimeZone> 用于设定默认时区

SQL标签

JSTL SQL 标签提供了许多操作数据库(MySQL、Oracle、SQL Server 等)的标签。虽然在大型的网站中不建议使用这种标签库,但在小型网站中经常会用到。导入 SQL 标签库的语法如下。

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

JSTL SQL 标签

标签 说明
<sql:setDataSource> 用来在 JSP 页面中配置数据源
<sql:query> 查询数据库中的数据
<sql:update> 更新数据库中的数据
<sql:dateParam> 提供日期和时间的动态值
<sql:transaction> 事务管理
<sql:param> 设置 SQL 语句中的动态值

函数标签

JSTL 函数(fn)标签大部分是通用的字符串处理函数,导入函数标签库的语法如下:

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

JSTL函数标签

标签 说明
fn:contains() 用于判断一个字符串是否包含指定的字符串,区分大小写
fn:containsIgnoreCase() 用于判断一个字符串是否包含指定的字符串,不区分大小写
fn:endsWith() 用于判断一个字符串是否以指定的后缀结尾
fn:escapeXml() 用于转义 HTML/XML 中的字符
fn:indexOf() 用于返回字符串在指定字符串中的开始位置
fn:join() 用来将数组中的所有元素利用指定的分隔符来连接成一个字符串
fn:length() 用于返回指定字符串的长度
fn:split() 用于将字符串用指定的分隔符分隔为一个子串数组
fn:startsWith() 用于判断一个字符串是否以指定的前缀开头
fn:substring() 用来返回指定字符串的子字符串
fn:substringAfter() 用来返回字符串中指定子字符串后面的部分
fn:substringBefore() 用来返回字符串中指定子字符串前面的部分
fn:toLowerCase() 用来将指定字符串中的所有字符转为小写
fn:toUpperCase() 将指定字符串中的所有字符转为大写
fn:trim() 用来删除指定字符串两端的空格
这里的知识部分的一些标签知识,如果想要看详细的一些知识点,建议参考以下的一些文章!

EL表达式无效的问题

如果遇到el表达式不生效(原样输出问题不被解析)问题,比如${yanggb}被原样输出成字符串,通常的原因是servlet3.0默认关闭了el表达式的解析,因此jsp页面忽视了el标签,要加入不忽略el表达式的page指令才行。

IDEA使用的webapp骨架时候,自动生成的web.xml文件的web-app版本是2.3的,导致EL表达式混乱,因为EL表达式是2.4以上版本才支持的。

01、首先检查jstl的jar或者说依赖是否正确导入

      <!-- JSTL 表达式的依赖 -->
      <dependency>
          <groupId>javax.servlet.jsp.jstl</groupId>
          <artifactId>jstl-api</artifactId>
          <version>1.2</version>
      </dependency>

      <!-- standard 标签库 -->
      <dependency>
          <groupId>taglibs</groupId>
          <artifactId>standard</artifactId>
          <version>1.1.2</version>
      </dependency>

02、检查是否在jsp页面导入标签

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

03、添加如下配置在jsp页面中!

<%@ page isELIgnored="false" %>

注:EL表达式是不需要引入包的,tomcat自带servlet的包。

04、降低jsp-api版本到2.0

05、同样每次都要修改的话很麻烦,也可以直接修改创建项目时用到的模板,maven-archetype-webapp的jar包。

参考文章:IntelliJ IDEA 2019.1.1 maven框架web.xml中web-app版本过低导致不能正常使用EL表达式的解决方案 - Felix_9190 - 博客园 (cnblogs.com)

06、可以尝试修改web.xml的版本问题!

<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
                      https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
         version="5.0"
         metadata-complete="true">

07、如果直接创建maven工程不选骨架(webapp)进行创建的方式:

参考文章:https://blog.csdn.net/awt_fudonglai/article/details/120998037

拓展

  1. 如果JSP中无法自动提示EL表达式的解决方法,在maven的pom.xml中加入如下代码。
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.0</version>
    <scope>provided</scope>
</dependency>
  1. 如果JSP中EL表达式不起作用,原样输出,除了最上面的解决方案外,可以更改web.xml的web-app标签中的命名空间来解决。
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
    http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    version="3.1">
</web-app>
  1. 另外还需要在web.xml中配置jsp-config标签。
<jsp-config>
    <jsp-property-group> 
    <url-pattern>/jsp/* </url-pattern>
    <el-ignored>true</el-ignored>    
    </jsp-property-group>
</jsp-config>
参考文章:

JSTL标签库(JSP标准标签库) (biancheng.net)

JSP 教程 | Web 技术教程 (gechiui.com)

JSP 教程 | 菜鸟教程 (runoob.com)

el表达式不生效(原样输出问题不被解析)问题的解决办法 - yanggb - 博客园 (cnblogs.com)

JavaWeb - yykk丶 - 博客园 (cnblogs.com)

相关文章
|
8月前
|
XML SQL Java
JSP 教程 之 JSP 标准标签库(JSTL) 6
**JSP JSTL 摘要:** JSTL是JSP的标签库,包含核心、格式化、SQL、XML和函数5类标签。它用于执行常见任务,如迭代、条件判断和XML操作。JSTL函数库提供字符串处理函数,如`contains()`, `endsWith()`, `escapeXml()`等,方便XML和HTML处理。通过`&lt;%@ taglib %&gt;`导入,如`fn:trim()`用于去除字符串两端空白。
53 5
|
8月前
|
XML SQL Java
JSP 教程 之 JSP 标准标签库(JSTL) 5
JSP的JSTL是用于简化JSP开发的标签库,包括核心、格式化、SQL、XML和函数五大标签集。XML标签库处理XML文档,如`&lt;x:out&gt;`显示XML数据,`&lt;x:parse&gt;`解析XML,`&lt;x:forEach&gt;`遍历节点。使用前需添加XercesImpl.jar和xalan.jar到Tomcat的lib目录。
59 6
|
8月前
|
SQL XML Java
JSP 教程 之 JSP 标准标签库(JSTL) 4
**JSP的JSTL是用于简化Web开发的标签库,包括核心、格式化、SQL、XML和函数5个部分。SQL标签库允许与数据库交互,如设定数据源、执行查询和更新,以及处理参数。例如, `&lt;sql:setDataSource&gt;` 定义数据源, `&lt;sql:query&gt;` 执行查询。通过使用JSTL,开发者能更整洁地处理JSP页面。**
66 8
|
8月前
|
XML SQL Java
JSP 教程 之 JSP 标准标签库(JSTL) 1
JSP的JSTL是用于简化页面逻辑的标签库,涵盖核心、格式化、SQL、XML和函数五大类标签。要安装,下载Apache的JSTL包,将jar文件放入WEB-INF/lib,tld文件复制到WEB-INF,并在web.xml中配置相应的taglib信息。JSTL促进了JSP页面的清洁和结构化。
62 5
|
8月前
|
Java 应用服务中间件 Android开发
完成你的自定义JSP Tag标签-Basic Coustom Tag
完成你的自定义JSP Tag标签-Basic Coustom Tag
40 0
|
4月前
|
Java 容器
【学习笔记】Jsp与Servlet技术
【学习笔记】Jsp与Servlet技术
113 0
|
6月前
|
前端开发 安全 Java
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
41 0
|
6月前
|
供应链 前端开发 Java
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
这篇文章通过一个服装库存管理系统的实例,展示了在Spring Boot项目中使用Ajax、JSON、layui、MVC架构和iframe等技术,涵盖了注册登录、权限管理、用户管理、库存管理等功能,并提供了系统运行环境和技术要求的详细说明。
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
|
6月前
|
SQL Java 数据库
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
该博客文章介绍了在JSP应用中使用Servlet查询SQL Server数据库的表信息,并通过JavaBean封装图书信息,将查询结果展示在Web页面上的方法。
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
|
7月前
|
XML Java 数据格式
jsp和servlet有什么区别?
总的来说,JSP和Servlet都是创建动态Web应用程序的重要工具,但它们的使用依赖于特定的需求和上下文。
90 0