今天写了个简单的基于jsp2.0的自定义Taglib标签,JSP2规范简化了标签库的开发,在JSP2中开发标签库只需如下几个步骤:
1).开发自定义标签处理类;
2).建立一个*.tld文件,每个*.tld文件对应一个标签库,每个标签库对应多个标签;
3).在JSP文件中使用自定义标签。
1 开发自定义标签类
当我们在JSP页面使用一个简单的标签时,底层实际上由标签处理类提供支持,从而可以使用简单的标签来封装复杂的功能,从而使团队更好地协作开发(能让美工人员更好地参与JSP页面的开发)。
自定义标签类都必须继承一个父类:javax.servlet.jsp.tagext.SimpleTagSupport,或者TagSupport除此之外,JSP自定义标签类还有如下要求。
1).如果标签类包含属性,每个属性都有对应的getter和setter方法。
2).重写doTag()或者doStartTag()或doEndTag()方法方法,这个方法负责生成页面内容。
首先介绍是不带属性的标签以HelloWorld为例:
Java代码如下:
public class HelloWorldTag extends TagSupport {
private static final long serialVersionUID = -3382691015235241708L;
@Override
public int doEndTag() throws JspException {
try {
pageContext.getOut().write("Hello World !");
return super.doEndTag();
} catch (JspException e) {
e.printStackTrace();
return 0;
} catch (IOException e) {
e.printStackTrace();
return 0;
}
}
@Override
public int doStartTag() {
try {
pageContext.getOut().write("Hello World");
return super.doStartTag();
} catch (JspException e) {
e.printStackTrace();
return 0;
} catch (IOException e) {
e.printStackTrace();
return 0;
}
}
}
注意:
问题1:tagsupport中的dostartTag和doEndTag这两个方法有什么区别
doStartTag是在扫描到起始标签时调用,doEndTag是在扫描到结束标签是调用。
例如:<helloWorld> helloWorld</helloWorld>
则jsp引擎分析到<helloWorld> 时调用doStratTag, 分析到</helloWorld>时调用doEndTag
2 建立TLD文件
TLD是Tag Library Definition的缩写,即标签库定义,文件的后缀是tld,每个TLD文件对应一个标签库,一个标签库中可包含多个标签,TLD文件也称为标签库定义文件。
标签库定义文件的根元素是taglib,它可以包含多个tag子元素,每个tag子元素都定义一个标签。通常我们可以到Web容器下复制一个标签库定义文件,并在此基础上进行修改即可。例如Tomcat6.0,在webapps\examples\WEB-INF\jsp2路径下包含了一个jsp2-example-taglib.tld文件,这就是示范用的标签库定义文件。
将该文件复制到Web应用的WEB-INF/路径,或WEB-INF的任意子路径下,并对该文件进行简单修改,修改后的helloworld.tld文件代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>myhelloworld</short-name>
<!-- 定义该标签库的URI 必须添加但可以空-->
<uri></uri>
<!-- 定义第一个标签 -->
<tag>
<!-- 定义标签名 -->
<name>helloWorld</name>
<!-- 定义标签处理类 -->
<tag-class>org.lxh.taglib.HelloWorldTag</tag-class>
<!-- 定义标签体为空 -->
<body-content>empty</body-content>
</tag>
</taglib>
分享到:
相关推荐
本篇文档旨在为初学者提供一个全面的JSP入门指南。** **1. JSP简介** JSP是由Sun Microsystems公司推出的用于构建动态网站的技术,它是Java EE(企业版)的一部分。JSP将静态内容(HTML、CSS、JavaScript)和动态...
这篇教程将引导初学者入门Servlet和JSP,通过源码学习,加深理解。 Servlet是Java编程语言的一个接口,由Sun Microsystems(现Oracle)定义,用于扩展Web服务器的功能。Servlet主要负责处理客户端的请求并生成响应...
- **taglib指令**:引入自定义标签库。 ### JSP脚本元素 1. **声明(declarations)**:用于定义变量和方法,这些变量和方法可以被整个页面访问。 2. **脚本let(scriptlets)**:包含Java代码块,通常用于业务...
本文作为一篇JSP入门级文章,主要介绍了如何在JSP页面中引用资源文件和组件,以及如何设置页面的基本属性。 首先,文章介绍了JSP页面中对各种标签库(Tag Library)的引用。标签库是一种让开发者能够在JSP页面中...
- **taglib指令**:引入自定义标签库的定义,通常在使用自定义JSP标签时使用。 ### 2. 声明 声明以`!`开始,`%>`结束,用于在JSP页面级别定义变量和方法,类似于Java类中的成员变量和方法。声明的变量在整个JSP...
【教学 - 入门篇】WebWork 2 是一篇针对初学者介绍WebWork框架的教程。WebWork是一个基于Java的Model-View-Controller (MVC) 框架,它提供了一系列强大的特性来帮助开发者构建高效、可维护的Web应用程序。 ### 主要...
- 在JSP页面中引入Spring Security的标签库。 - **示例代码**: JSP页面中的taglib指令。 - **15.2 authentication** - 使用`<sec:authentication>`标签展示当前用户信息。 - **示例代码**: 在JSP页面中使用标签...
- **配置taglib:** 配置Spring Security的标签库以方便在JSP页面中使用安全相关的标签。 - **标签介绍:** - **authentication:** 显示当前用户的认证信息。 - **authorize:** 控制页面元素的可见性,根据...
第一篇 入门篇 第2章 Hello Grails 6 2.1 Grails的安装 6 2.1.1 JDK的安装与配置 6 2.1.2 Grails的安装 7 2.2 创建Grails工程 8 2.3 Grails的MVC架构 11 2.4 Scaffold应用程序 14 2.5 开发工具的使用 17 2.6 本章小...
第1篇Java基础知识入门. 第1章Java的开发运行环境2 1.1Java的运行环境与虚拟机2 1.2Java的开发环境4 1.2.1JDK的安装4 1.2.2如何设置系统环境变量6 1.2.3编译命令的使用8 1.2.4解释执行命令的使用10 1.2.5...