【Java Web】Java Server Page总结(JSTL及自定义标签)

JSP标准标签库(JSTL)是一个JSP标签集合,它封装了许多常用的函数,并且用xml标签的方式来调用。

它主要分为5类标签:

  1. 核心标签;
  2. 格式化标签;
  3. SQL 标签;
  4. XML 操作标签;
  5. 字符串操作标签。

MAVEN方式安装


pom.xml中加入以下内容:

<!-- jstl start -->
<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>
<!-- jstl end -->

JSTL主要标签


核心标签

核心标签库中主要包含了进行基本操作方式的标签。

它的引用方式如下:

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

它包括了以下标签:

标签描述
<c:out>用于在JSP中显示数据,就像<%= … >
<c:set>用于保存数据
<c:remove>用于删除数据
<c:catch>用来处理产生错误的异常状况,并且将错误信息储存起来
<c:if>与我们在一般程序中用的if一样
<c:choose>本身只当做<c:when><c:otherwise>的父标签
<c:when><c:choose>的子标签,用来判断条件是否成立
<c:otherwise><c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行
<c:import>检索一个绝对或相对 URL,然后将其内容暴露给页面
<c:forEach>基础迭代标签,接受多种集合类型
<c:forTokens>根据指定的分隔符来分隔内容并迭代输出
<c:param>用来给包含或重定向的页面传递参数
<c:redirect>重定向至一个新的URL
<c:url>使用可选的查询参数来创造一个URL

格式化标签

格式化标签库主要包含了对数据进行格式化操作的标签。

它的引用方式如下:

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

它包括了以下标签:

标签描述
<fmt:formatNumber>使用指定的格式或精度格式化数字
<fmt:parseNumber>解析一个代表着数字,货币或百分比的字符串
<fmt:formatDate>使用指定的风格或模式格式化日期和时间
<fmt:parseDate>解析一个代表着日期或时间的字符串
<fmt:bundle>绑定资源
<fmt:setLocale>指定地区
<fmt:setBundle>绑定资源
<fmt:timeZone>指定时区
<fmt:setTimeZone>指定时区
<fmt:message>显示资源配置文件信息
<fmt:requestEncoding>设置request的字符编码

SQL标签

SQL标签库主要包含了与数据库交互的标签。

它的引用方式如下:

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

它包括了以下标签:

标签描述
<sql:setDataSource>指定数据源
<sql:query>运行SQL查询语句
<sql:update>运行SQL更新语句
<sql:param>SQL语句中的参数设为指定值
<sql:dateParam>SQL语句中的日期参数设为指定的java.util.Date对象值
<sql:transaction>在共享数据库连接中提供嵌套的数据库行为元素,将所有语句以一个事务的形式来运行

XML 操作标签

XML 操作标签库主要包含了用于对.xml文件进行操作的标签。

它的引用方式如下:

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

它包括了以下标签:

标签描述
<x:out><%= ... >,类似,不过只用于XPath表达式
<x:parse>解析XML数据
<x:set>设置XPath表达式
<x:if>判断XPath表达式,若为真,则执行本体中的内容,否则跳过本体
<x:forEach>迭代XML文档中的节点
<x:choose><x:when><x:otherwise>的父标签
<x:when><x:choose>的子标签,用来进行条件判断
<x:otherwise><x:choose>的子标签,当<x:when>判断为false时被执行
<x:transform>XSL转换应用在XML文档中
<x:param><x:transform>共同使用,用于设置XSL样式表

格式化标签

字符串操作标签库主要包含了对字符串做一些常用操作的标签。

它的引用方式如下:

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

它包括了以下标签:

标签描述
fn:contains()测试输入的字符串是否包含指定的子串
fn:containsIgnoreCase()测试输入的字符串是否包含指定的子串,大小写不敏感
fn:endsWith()测试输入的字符串是否以指定的后缀结尾
fn:escapeXml()跳过可以作为XML标记的字符
fn:indexOf()返回指定字符串在输入字符串中出现的位置
fn:join()将数组中的元素合成一个字符串然后输出
fn:length()返回字符串长度
fn:replace()将输入字符串中指定的位置替换为指定的字符串然后返回
fn:split()将字符串用指定的分隔符分隔然后组成一个子字符串数组并返回
fn:startsWith()测试输入字符串是否以指定的前缀开始
fn:substring()返回字符串的子集
fn:substringAfter()返回字符串在指定子串之后的子集
fn:substringBefore()返回字符串在指定子串之前的子集
fn:toLowerCase()将字符串中的字符转为小写
fn:toUpperCase()将字符串中的字符转为大写
fn:trim()移除首位的空白符

自定义标签


创建一个标签类

自定义标签类需要继承SimpleTagSupport类并重写的doTag()方法:

package com.vingyun;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.SimpleTagSupport;

public class TagTest extends SimpleTagSupport {

    // 自定义标签属性
    private String custom;

    public String getCustom() {
        return custom;
    }

    public void setCustom(String custom) {
        this.custom = custom;
    }

    @Override
    public void doTag() throws JspException, IOException {
        // TODO 自动生成的方法存根
        JspWriter out = getJspContext().getOut();
        out.println("Hello " + custom + ", This is TagTest!!");
    }

}

创建.tld文件

.tld文件作为自定义标签的说明文件,我们需要在里面对标签进行配置:

<taglib>
  <tlib-version>1.0</tlib-version>
  <jsp-version>2.0</jsp-version>
  <short-name>Tag Test TLD</short-name>
  <tag>
    <!-- 调用时的名称 -->
    <name>tagTest</name>
    <!-- 标签类的完全限定名 -->
    <tag-class>com.vingyun.TagTest</tag-class>
    <!-- 标签体可接受文本、EL和JSP动作。 -->
    <body-content>scriptless</body-content>
    <attribute>
        <!-- 定义属性的名称,每个标签的是属性名称必须是唯一的 -->
       <name>custom</name>
       <!-- 指定属性是否是必须的或者可选的,如果设置为false为可选 -->
       <required>false</required>
       <!-- 声明在运行表达式时,标签属性是否有效  -->
       <rtexprvalue>true</rtexprvalue>
       <!-- 定义该属性的Java类类型 , 默认指定为 String -->
       <type>String</type>
       <!-- 描述信息 -->
       <description>名称输入</description>
       <!-- 该属性值是否需要被视为一个 JspFragment -->
       <fragment>false</fragment>  
    </attribute>
  </tag>
</taglib>

在这个例子中,我把它取名为tagTest.tld

自定义标签的使用

首先需要对自定义标签进行声明:

<%@ taglib prefix="t" uri="WEB-INF/tld/tagTest.tld"%>  

然后就可以调用了:

<t:tagTest custom="Ving"></t:tagTest>

输出结果:

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值