JSP自定义标签

简介: JSP自定义标签

一,JSP自定义标签

1.1是什么?

  是一种在JSP页面中定义的扩展标签,它由开发人员自行编写,以便将某些功能封装在标签中,并在JSP页面中如同普通标签一样使用。JSP容器在解析JSP页面时,遇到自定义标签会把它转换成相应的Java代码,并最终生成HTML页面。

1.2.与原生态JSP标签的区别

    自定义标签具有较高的可重用性和灵活性。开发人员可以根据实际需要编写自定义标签,在JSP页面中复用这些标签以实现代码逻辑复用和逻辑分离。自定义标签可以在创建时使用Java类扩展TagSupport或 SimpleTagSupport类,以实现标签中的逻辑代码。标签属性可以使用JavaBean、XML文档等方式定义,从而使标签可以灵活适应各种实现场景。

1.3JSP自定义标签使用大致流程

   通常需要对标签进行声明和引用。这通过在web.xml文件或TLD文件中对标签进行定义,并在JSP页面中引用其名称空间实现。在JSP页面中,可以像使用常规标签一样使用自定义标签。

自定义标签代码:

<%@taglib prefix="mytags" uri="/WEB-INF/mytags.tld" %>
<mytags:customtag message="Hello World!"/>

  在上面上自定义标签例子中,自定义标签的名称是customtag,它的属性是message。在使用中,开发人员可以根据自己的实际需要添加或修改标签的属性,以实现所需的逻辑。它为JSP开发人员提供了更为灵活的编程方式,同时也方便了代码复用和维护。

二,自定义标签使用流程

2.1 定义类一继承标签助手类

先继承BodyTagSupport类, 提供get set方法,重写doStartTag(需要手动重写)再获取

pageContext获得上下文信息,最后在进行一个属性值val判断

package com.LiuBing.text;
import java.io.IOException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;
      //继承BodyTagSupport助手类
public class OutTag extends BodyTagSupport{
    //定义标签中的属性  并提供get set方法
  private String val;
  private String defaultVal;
  public String getVal() {
    return val;
  }
  public void setVal(String val) {
    this.val = val;
  }
  public String getDefaultVal() {
    return defaultVal;
  }
  public void setDefaultVal(String defaultVal) {
    this.defaultVal = defaultVal;
  }
  //重写标签助手类的方法  需要手动重写
  @Override
  public int doStartTag() {
       //获取out对象 在JSP页面输出内容
    JspWriter out = this.pageContext.getOut();
     //判断在JSP页面val值是否为空
    try {
      if(this.val==null || "".equals(this.val)) {//如果在jsp页面val值是null并没有填写内容时
        out.println(this.defaultVal);//输出默认值defaultVal 
      }else {//否则
        out.println(this.val);//输出填写的val值
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
    return SKIP_BODY;
  }
}

2.2 编写标签库tld,对标签及属性进行约束

2.2.1概述:

        是描述文件,在TLD文件中定义了自定义标签的名称、属性、使用说明等信息。TLD文件遵循XML格式,通常位于Web应用程序的WEB-INF文件夹下,使用.tld文件扩展名。

<!DOCTYPE taglib
  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
   "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<!-- 标签库描述符 -->
<taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor">
  <tlib-version>1.0</tlib-version>
  <jsp-version>1.2</jsp-version>
  <short-name>Simple Tags</short-name>
    <!--在jsp页面导入此标签库 -->
  <uri>/out</uri>
  <tag>
      <!-- 标签名 -->
    <name>out</name>
    <!-- 引入标签助手类 -->
    <tag-class>com.LiuBing.text.OutTag</tag-class>
    <!--标签的内容类型:empty表示空标签,jsp表示可以为任何合法的JSP元素 -->
    <body-content>empty</body-content>
        <!--定义属性-->
         <attribute>
      <!-- 属性名, OutTag类中的val属性相匹配 -->
      <name>val</name>
      <!-- 表示该属性为必要的属性 -->
      <required>true</required>
      <!-- 该属性可以接受EL表示式的值 -->
      <rtexprvalue>true</rtexprvalue>
      <!-- 标签描述,用于说明标签的作用 -->
      <description>out标签val属性,用于输出val的值</description>
    </attribute>
       <!--定义属性-->
    <attribute>
      <!-- 属性名, OutTag类中的val属性相匹配 -->
      <name>defaultVal</name>
      <!-- 表示该属性为必要的属性 -->
      <required>false</required>
      <!-- 该属性可以接受EL表示式的值 -->
      <rtexprvalue>true</rtexprvalue>
      <!-- 标签描述,用于说明标签的作用 -->
      <description>out标签val属性,用于输出val的值</description>
    </attribute>
  </tag>
  </taglib>

2.2.2 JSP页面引入标签及输出

导入标签库:

用taglib引入标签库,也就是url引入刚所写的标签库中url

输出内容:

 

上述情况是val中有定义321的情况下输出321,没有定义值的话,将输出默认值defaultVal中的值

 

目录
相关文章
|
Java
JSP自定义标签【下】
JSP自定义标签【下】
66 0
|
Java
jsp自定义标签
jsp自定义标签
79 1
|
6月前
|
Java 容器
JSP 教程 之 JSP 自定义标签 3
JSP自定义标签允许开发人员创建可重用的组件,简化页面逻辑。在JSP 2.0及以上版本,可通过继承`SimpleTagSupport`并覆写`doTag()`方法来创建自定义标签,如`HelloTag`,它有一个`message`属性。属性值通过setter方法`setMessage()`设置。在TLD文件中定义该属性后,可在JSP页面使用`&lt;ex:Hello message=&quot;This is custom tag&quot;/&gt;`来调用,输出定制的文本。
29 0
|
6月前
|
Java 容器
JSP 教程 之 JSP 自定义标签 4
**JSP自定义标签允许创建用户定义的语言元素。它们转换为Servlet中的tag handler,在执行时由Web容器调用。使用SimpleTagSupport继承并重写doTag()方法可创建简单标签。标签可设置属性,如message,通过setter方法访问。TLD文件定义属性元数据,JSP页面则通过prefix和uri引用。例如,&lt;ex:Hello message=&quot;...&quot;/&gt; 显示定制消息。属性可配置为必需、类型、描述及是否为JspFragment。**
31 0
|
6月前
|
搜索推荐 Java 容器
JSP 教程 之 JSP 自定义标签 2
**JSP自定义标签允许用户创建个性化标签,简化页面逻辑。在JSP 2.0中,通过继承`SimpleTagSupport`并重写`doTag()`可创建简单标签处理器。示例展示了一个名为`Hello`的自定义标签,它接收并显示标签体内容。TLD文件配置了标签元数据,JSP页面引用该标签并展示“这是消息主体”。**
29 0
|
6月前
|
Java 容器
JSP 教程 之 JSP 自定义标签 1
**JSP自定义标签简介**:扩展JSP功能,创建用户定义标签,通过Servlet容器调用Tag Handler。在JSP 2.0中,使用SimpleTagHandlers简化定制。以&quot;Hello&quot;标签为例,创建`HelloTag`类继承`SimpleTagSupport`,重写`doTag()`打印消息。编译后,在`custom.tld`定义标签库,JSP页面引用后即可使用。例如 `&lt;ex:Hello/&gt;` 显示 &quot;Hello Custom Tag!&quot;。
33 0
|
前端开发 Java
通用分页进阶之jsp之自定义标签
通用分页进阶之jsp之自定义标签
39 1
|
7月前
|
Java 数据安全/隐私保护
Jsp自定义标签(foreach,dept,select)
Jsp自定义标签(foreach,dept,select)
49 0
|
7月前
|
XML Java 数据格式
JSP自定义标签
JSP自定义标签
70 0
|
XML Java 计算机视觉
JSP实现自定义标签【上】
-- 标签库名 -->-- 对应的助手类 -->-- 代表JSP标签 -->自定义JSP标签的属性名称该属性是否必填该属性值是否支持表达式