栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JSTL(JSP 标准标签库)教程:核心和自定义标签

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JSTL(JSP 标准标签库)教程:核心和自定义标签

在本 JSTL 教程中,我们将看到使用不同的 JSTL 标记如何使 JSP 编码变得更容易。

在本教程中,您将学习 -

什么是JSTL?JSTL 核心标签JSTL 自定义标记

什么是JSTL?

JSTL 代表 Java 服务器页面标准标记库,它是提供常见 Web 开发功能的定制 JSP 标记库的集合。JSTL 是 JSP 的标准标签库。

JSTL的优势

以下是JSTL的优点:

    标准标记:它提供了丰富的 JSP 页面的可移植功能层。开发人员很容易理解代码。代码整洁干净:由于 scriplet 让开发人员感到困惑,因此使用 JSTL 使代码整洁干净。自动 Javabeans 跨组织支持:与 JSP 脚本相比,它具有 JSTL 的优势。JSTL 表达式语言非常容易地处理 JavaBean 代码。我们不需要对对象进行下调,这些对象已作为作用域内属性检索。使用 JSP scriptlet 的代码会很复杂,而 JSTL 已经简化了这一目的。人类更容易阅读:JSTL基于XML,这与HTML非常相似。因此,开发人员很容易理解。计算机更容易理解:Dreamweaver和首页等工具正在生成越来越多的HTML代码。HTML工具在格式化HTML代码方面做得很好。HTML 代码与 scriplet 代码混合在一起。由于 JSTL 表示为 XML 兼容标记,因此 HTML 生成很容易解析文档中的 JSTL 代码。

JSTL 核心标签

核心标签是JSP中最常用的标签。他们为

迭 代条件逻辑捕获异常网址转发重定向等

要使用核心标签,我们需要首先定义标签库,下面是包含标签库的语法。

语法:

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

这里

前缀可用于定义所有核心标签和uri 是从中导入它的 taglib 库

让我们详细查看一些核心标签,

1. out:

表达式的结果显示在 out 标记中它可以直接转义 XML 标记。因此,它们不会作为实际标记进行评估

语法:

Here 值表示输出的信息,并且是必需的默认值为无法输出信息,它不是必需的转义 XML – 如果它转义 XML 字符,则为 true。

例:

Coretag_jsp1.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>




Core Tag JSP2


	

代码说明:

代码行 3:所有标签都需要此 taglib 前缀,添加的前缀为"c"。因此,它可以用作所有核心标记的前缀。

代码行 12:在这里,我们使用带有前缀"c"的coretag out,这个输出将打印表达式标签中的值。因此,输出将是名称

执行上述代码时,您将获得以下输出:

输出:

我们将值作为名称从核心标记"out"中获取,该标记将在输出流中打印。

2. catch 

它捕获正文中发生的任何可抛出异常,并显示为输出。它用于处理错误并捕获它们。

语法:

这里的 var 表示变量的名称,它将保存可抛出异常。

例:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>




Core Tag JSP2



   <% int num = 10/0; %>

The Exception is : ${guruException} 

代码说明:

代码行 3:所有标签都需要此 taglib 前缀,添加的前缀为"c",因此它可以用作所有 coretag 的前缀

代码行 11-13: Coretag catch 用于捕获异常并打印异常。此处,异常在 10/0 时引发,并且该异常的名称为"guruException"。

代码行 14:我们正在印刷"大师例外"。

执行代码时,您将获得以下输出:

输出:

我们将算术异常作为 /by 零,并使用变量 "guruException" 将其打印在输出中

3. import 

我们可以将另一个文件内容导入到 JSP 页面中,就像在 JSP 包含操作中所做的那样。在这里,我们还可以包括URL,内容将显示在该页面上。

语法:

这里的 var 是一个变量名称,它是一个标识符,它将保存文件名/uri。

uri 是相对文件名或 uriname。

coretag_jsp31.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>




Core Tag JSP 31






Coretag_jsp32.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>




Insert title here


The file is diplayed after importing

代码说明:

Coretag_jsp31.jsp

代码行 3:所有标签都需要此 taglib 前缀,添加的前缀为"c",因此它可以用作所有 coretag 的前缀

代码行 11-12:在这里,我们使用导入标记将coretag_jsp32.jsp文件导入到此文件中

代码行13:在这里,我们使用out标签打印文件coretag_jsp32.jsp。

执行上述代码时,您将获得以下输出。

输出:

Coretag_jsp32打印在输出中,因为此文件是在coretag_jsp31.jsp中导入的。

4. forEach 

它用于迭代一系列语句中的元素数。它与Java forloop相同。

语法:

这里的 var 表示变量名称,它将保存计数器名称Begin 表示计数器 begin 值End 将代表其最终值

例:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>




Core Tag JSP4



 


代码说明:

代码行 3:所有标签都需要此 taglib 前缀,添加的前缀为"c",因此它可以用作所有 coretag 的前缀

代码行 11-13: 在这里,我们使用"forEach"循环,其中变量名称为"gurucount",它已经开始计数为5,结束计数为10。我们正在打印变量gurucount,其数字从5到10。

执行代码时,您将获得以下输出

输出:

我们得到的输出从5到10开始。

5. if 

它用于测试条件。如果该标记用于基于此测试条件是否为真,则将执行代码块。

语法:


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




Core Tag JSP5




   


代码说明:

代码行 3:所有标签都需要此 taglib 前缀,添加的前缀为"c",因此它可以用作所有 coretag 的前缀

代码行 11:在这里,我们将名为 count 的变量设置为 100

代码行 12-14:在这里,我们使用"if条件",检查计数是否等于100。它等于 100,然后我们得到的输出为"计数为 100"。

执行上述代码时,您将获得以下输出

输出:

由于"if"条件为真,我们得到的输出为"计数为100"。

6. redirect :

它用于通过提供此标记的相对 URL 将当前页面重定向到另一个 URL。它支持上下文相对 URL

语法:

此处 url 是必须重定向到的相对 url 和本地 Web 应用程序的上下文名称。

例:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>




Core Tag JSP6




代码说明:

代码行 3:所有标签都需要此 taglib 前缀,添加的前缀为"c",因此它可以用作所有 coretag 的前缀

代码行 11:在这里,我们使用"重定向标签",其中我们指定urlname,当我们单击该页面时,它会重定向到已给出重定向的网站。

当您执行上述代码时,您将获得以下输出;

输出:

我们得到 guru99.com url的输出,该URL由coretag_jsp6.jsp重定向

JSTL 自定义标记

它是用户定义的 JSP 语言元素。当 JSP 转换为 servlet 时,自定义标记将转换为对对象执行操作并作为标记处理程序调用的类。执行 servlet 时的这些操作由 Web 容器调用。要创建用户定义的自定义标记,我们需要创建标记处理程序,该处理程序将扩展 SimpleTagSupport,并且必须覆盖 doTag() 方法。我们需要创建TLD,我们需要在TLD中映射类文件。

JSP 中自定义标记的优点:

以下是 JSP 中自定义标记的优点:

可移植 – 标签库中描述的操作必须在任何 JSP 容器中可用。简单 - 不成熟的用户必须能够理解和使用此机制。JSP 功能的供应商必须发现,要将其作为操作提供给用户,这很容易。富有表现力 – 该机制必须支持各种操作,包括嵌套操作、在操作主体内编写脚本元素、创建、使用和更新脚本变量。可从不同的脚本语言中使用 – 尽管 JSP 规范目前只定义了 Java 编程语言中脚本的语义,但我们希望保留其他脚本语言的可能性。建立在现有概念和机制的基础上 - 我们不想重塑其他地方存在的东西。此外,我们希望在将来发生冲突时避免冲突。

语法:

假设我们正在创建testGuru标签,我们可以使用taghandlertestTag类,它将覆盖doTag()方法。


Class testTag extends SimpleTagSupport{ public void doTag()}

此外,我们将不得不在TLD(标签库描述符)中映射此testTag类,因为JSP容器将自动在类文件和TLD文件中提到的uri之间创建映射。

JSP 标签接口

此类必须扩展 SimpleTagSupport 类。此类必须重写 doTag() 方法,该方法属于 SimpleTagSupport 类(重写是从父类继承的方法)。此接口是 JSPTag 接口的子接口。它提供了在标记的开头和结尾执行的方法。另外,我们需要在TLD中映射这个类,即标签库描述符

我们在下面的示例中考虑

标签接口的方法

doTag() 是我们需要覆盖的方法,它将具有标记的内容。它使用 getJSPContext() 获取当前的 JSP 上下文

例:

Customtag_jsp1.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="ex" uri="WEB-INF/custom.tld"%>




Custom Tag




Custom.tld


  1.0
  2.0
  Test TLD
  
    guruTag
    demotest.guruTag
    empty
  

guruTag.java(TagHandler)

package demotest;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import java.io.*;

public class guruTag extends SimpleTagSupport{
	public void doTag() throws JspException,IOException
	{
		JspWriter out = getJspContext().getOut();
		out.println("Guru Tag");
	}

}

代码说明:

guruTag.java(TagHandler)

代码行 6:guruTag 类正在扩展 Javax.servlet 中存在的 SimpleTagSupport 类.JSP jar

代码行 7:在这里,我们重写了 doTag() 方法,它抛出了 JspException 和 IOException。

代码行 9-10:在此方法中,代码将嵌入到将被调用的自定义标记中。我们正在获取JspWriter的对象,它将打印"Guru Tag"。

Custom.tld

代码行 6:此处自定义标记的名称是"guruTag"。

代码行 7:Tag class 是 taghandlerclass,即 guruTag.java。它采用处理程序文件的完整路径,其中包括文件位置的目录路径。

Customtag_jsp1.jsp

代码行3:所有标签都需要此taglib前缀,添加的前缀是"ex",因此它可以用作所有coretags的前缀,并且uri是custom.tld,它映射标签处理程序。

代码行 11:在这里,我们定义了自定义标记"guruTag",它将调用处理程序类doTag()方法,其中的代码将被执行。

执行上述代码时,您将获得以下输出

输出:

我们从guruTag获得输出为"GuruTag.java即TagHandler,它覆盖doTag()方法,并将"Guru Tag"打印为输出。

总结:

在本节中,我们了解了 JSP 标准标记库,在该库中我们执行了核心标记和自定义标记。核心标签包括if,重定向,导入,捕获标签,这些标签是用于JSP中基本目的的标签。另外,我们做了自定义标签,我们可以定义标签并在JSP中使用它。

您可能喜欢:

JSP 指令:Page, Include & Taglib TutorialJSP 表达式语言 (EL) 教程JSP 当前日期和时间

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/754654.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号