自定义jsp标签2

简介: 自定义jsp标签2

三.自定义标签的处理流程

1.自定义标签步骤

1.1 编写助手类

package com.YU.tag;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class OutTag extends BodyTagSupport{
  private String val;
  private String defaultval;
  public void setVal(String val) {
    this.val = val;
  }
  public void setDefaultval(String defaultval) {
    this.defaultval = defaultval;
  }
  @Override
  public int doStartTag() {
    JspWriter out = this.pageContext.getOut();
    try {
      if(this.val==null) {
        out.print(this.defaultval);
      }else {
        out.print(this.val);
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
    return SKIP_BODY;
  }
}

这里需要注意的是要继承BodySupport类,重写doStartTag方法,由代码中可得知,创建一个out标签,需先创建一个out对象,定义一个接受的值和一个默认值,返回时需要返回一个值

1.2 编写标签库描述文件(tld)

(1)首先新建一个xml文件在其中编写dtd约束

<!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>
  <uri>YU</uri>
  <tag>
    <!--标签名  -->
    <name>out</name>
    <!--标签助手类 -->
    <tag-class>com.YU.tag.OutTag</tag-class>
    <!--标签内容类型  -->
    <body-content>empty</body-content>
    <!--属性  -->
    <attribute>
      <!-- 属性名, OutTag类中的val属性相匹配 -->
      <name>val</name>
      <!-- 表示该属性为必要的属性 -->
      <required>true</required>
      <!-- 该属性可以接受EL表示式的值 -->
      <rtexprvalue>true</rtexprvalue>
      <!-- 标签描述,用于说明标签的作用 -->
      <description>定义默认值</description>
    </attribute>
  </tag>
</taglib>

注:标签内容类型中的empty表示为空标签,jsp则表示不为空标签

(2).依次写入标签名,标签助手类和标签所需要的一些属性

1.3 在页面上引入标签使用

<%@taglib prefix="z" uri="YU"%>

需要在jsp页面顶部第二行引入

注:uri的值为我们编写dtl文件中的uri的值,

例如这里是:

2.开发实例演示-if标签

2.1 首先编写助手类

package com.YU.tag;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class ifTag extends BodyTagSupport{
  private boolean test;
  public boolean isTest() {
    return test;
  }
  public void setTest(boolean test) {
    this.test = test;
  }
  @Override
  public int doStartTag() {
    if(this.test) {//说明该结果成立
      return SKIP_BODY;
    }
    return SKIP_BODY;
  }
}

2.2 编写标签库描述文件(dtl)

<!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>
  <uri>YU</uri>
  <tag>
    <!--标签名  -->
    <name>if</name>
    <!--标签助手类 -->
    <tag-class>com.YU.tag.ifTag</tag-class>
    <!--标签内容类型  -->
    <body-content>jsp</body-content>
    <!--属性  -->
    <attribute>
      <!-- 属性名, OutTag类中的val属性相匹配 -->
      <name>val</name>
      <!-- 表示该属性为必要的属性 -->
      <required>true</required>
      <!-- 该属性可以接受EL表示式的值 -->
      <rtexprvalue>true</rtexprvalue>
    </attribute>
  </tag>
</taglib>

2.3 测试使用

(1).先引入标签库使用

<%@taglib prefix="z" uri="YU"%>

(2).进行测试

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="z" uri="YU"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
  <!-- if -->
  <z:if test="${100 == 100}">
    测试if(100 == 100)
  </z:if>
  <z:if test="${100 == 1}">
          测试if(100 == 1)
  </z:if>
</body>
</html>

运行结果:

测试if(100 == 100)

说明上面的if标签结果成立并打印

目录
相关文章
|
14天前
|
SQL XML Java
JSP 教程 之 JSP 标准标签库(JSTL) 4
**JSP的JSTL是用于简化Web开发的标签库,包括核心、格式化、SQL、XML和函数5个部分。SQL标签库允许与数据库交互,如设定数据源、执行查询和更新,以及处理参数。例如, `&lt;sql:setDataSource&gt;` 定义数据源, `&lt;sql:query&gt;` 执行查询。通过使用JSTL,开发者能更整洁地处理JSP页面。**
22 8
|
14天前
|
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页面的清洁和结构化。
19 5
|
12天前
|
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()`用于去除字符串两端空白。
14 5
|
28天前
|
Java 应用服务中间件 Android开发
完成你的自定义JSP Tag标签-Basic Coustom Tag
完成你的自定义JSP Tag标签-Basic Coustom Tag
13 0
|
2月前
|
Java
jsp页面中使用jstl标签报错:javax.servlet.jsp.JspTagException
jsp页面中使用jstl标签报错:javax.servlet.jsp.JspTagException
36 0
|
7月前
|
Java
jsp标签下
jsp标签下
31 0
|
7月前
|
XML Java 数据格式
jsp标签上
jsp标签上
34 0
|
7月前
|
Java
JSP标签(2) -----自定义foreach ,select标签,全网最详细,最完整易懂
JSP标签(2) -----自定义foreach ,select标签,全网最详细,最完整易懂
|
11天前
|
自然语言处理 前端开发 Java
Servlet与JSP:Java Web开发的基石技术详解
【6月更文挑战第23天】Java Web的Servlet与JSP是动态网页的核心。Servlet是服务器端的Java应用,处理HTTP请求并响应;JSP则是结合HTML与Java代码的页面,用于动态内容生成。Servlet通过生命周期方法如`init()`、`service()`和`destroy()`工作,而JSP在执行时编译成Servlet。两者在MVC架构中分工,Servlet处理逻辑,JSP展示数据。尽管有Spring MVC等框架,Servlet和JSP仍是理解Web开发基础的关键。
|
11天前
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
【6月更文挑战第23天】构建Java Web应用,Servlet与JSP携手打造在线图书管理系统,涵盖需求分析、设计、编码到测试。通过实例展示了Servlet如何处理用户登录(如`LoginServlet`),JSP负责页面展示(如`login.jsp`和`bookList.jsp`)。应用基于MySQL数据库,包含用户和图书表。登录失败显示错误信息,成功后展示图书列表。部署到Tomcat服务器测试功能。此基础教程为深入Java Web开发奠定了基础。