博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SimpleTag——认识自定义标签
阅读量:4654 次
发布时间:2019-06-09

本文共 3551 字,大约阅读时间需要 11 分钟。

自定义标签

自定义标签的开发与应用步骤

  • 编写完成标签功能的 Java 类(标签处理器)
  • 编写标签库描述(tld)文件,在tld文件中对自定义中进行描述
  • 在 JSP 页面中导入和使用自定义标签

①. 创建一个标签处理器类: 实现javax.servlet.jsp.tagext.SimpleTag接口. 

 

package yang.mybatis.tag;import javax.servlet.jsp.JspContext;import javax.servlet.jsp.JspException;import javax.servlet.jsp.tagext.JspFragment;import javax.servlet.jsp.tagext.JspTag;import java.io.IOException;/** * Created by yangshijing on 2017/11/24 0024. */public class HelloSimpleTag implements javax.servlet.jsp.tagext.SimpleTag{    @Override    public void doTag() throws JspException, IOException {        System.out.println("doTag");    }    @Override    public void setParent(JspTag jspTag) {        System.out.println("setParent");    }    @Override    public JspTag getParent() {        System.out.println("getParent");        return null;    }    @Override    public void setJspContext(JspContext jspContext) {        System.out.println("setJspContext");    }    @Override    public void setJspBody(JspFragment jspFragment) {        System.out.println("setJspBody");    }} 

②. 在 WEB-INF 文件夹下新建一个 .tld(标签库描述文件) 为扩展名的 xml 文件. 

 

MyTag 1.0 core library
MyTag core
1.0
myshortname
http://mycompany.com
hello
yang.mybatis.tag.HelloSimpleTag
empty

③. 在 tld 文件中描述自定义的标签:

hello
yang.mybatis.tag.HelloSimpleTag
empty

④. 在 JSP 页面上使用自定义标签:

  • 使用 taglib 指令导入标签库描述文件: 
<%@taglib uri="http://mycompany.com" prefix="nchu" %>
  • 使用自定义的标签: 
<%@ page contentType="text/html;charset=UTF-8" language="java" %><%--导入标签库描述文件--%><%@taglib uri="http://mycompany.com" prefix="nchu" %><%@ taglib prefix="nchu" uri="http://mycompany.com" %>    Title    

 

⑤.从结果可以看出,使用自定义标签时,首先调用自定义SimpleTag实现类的SetJspContext()方法,然后调用doTag()方法

@Override    public void setJspContext(JspContext jspContext) {     System.out.println("setJspContext");   }

JspContext 是PageContext的父类,通过该方法传入的参数既是PageContext对象;可以通过PageContext对象获取jsp的隐含对象,进而在doTag()方法中对自定义标签实现功能。

在浏览器上输出Hello World

package yang.mybatis.tag;import javax.servlet.jsp.JspContext;import javax.servlet.jsp.JspException;import javax.servlet.jsp.PageContext;import javax.servlet.jsp.tagext.JspFragment;import javax.servlet.jsp.tagext.JspTag;import java.io.IOException;/** * Created by yangshijing on 2017/11/24 0024. */public class HelloSimpleTag implements javax.servlet.jsp.tagext.SimpleTag{    private  PageContext pageContext;    @Override    public void doTag() throws JspException, IOException {        pageContext.getOut().print("Hello world!");        System.out.println("doTag");    }    @Override    public void setParent(JspTag jspTag) {        System.out.println("setParent");    }    @Override    public JspTag getParent() {        System.out.println("getParent");        return null;    }    @Override    public void setJspContext(JspContext jspContext) {        pageContext = (PageContext) jspContext;        boolean b = jspContext instanceof PageContext;        System.out.println("setJspContext "+b);    }    @Override    public void setJspBody(JspFragment jspFragment) {        System.out.println("setJspBody");    }}

 

转载于:https://www.cnblogs.com/realshijing/p/7890155.html

你可能感兴趣的文章
easyUI添加修改tab页(toolbar)
查看>>
JavaScript笔试题
查看>>
Leetcode 969. Pancake Sorting
查看>>
set()集合的概念与一般操作
查看>>
winform - ComboBox_ListView2
查看>>
react中递归生成列表
查看>>
内置函数filter
查看>>
FIREDAC TFDCONNECTION连接ORACLE
查看>>
【LeetCode从零单排】No 114 Flatten Binary Tree to Linked List
查看>>
Effective Go(官方文档)笔记
查看>>
Spring表达式语言SpEL简单介绍
查看>>
富文本编辑期Quill
查看>>
62.COUNT(递归算法)--数的划分变式题型
查看>>
Android系统中自定义按键的短按、双击、长按事件
查看>>
移动开发网站导航
查看>>
NancyFX 第八章 内容协商
查看>>
第三次作业
查看>>
Java实现Restful框架Jersey学习
查看>>
IP地址分类
查看>>
如何比较两个时间字符串的大小
查看>>