一,JSP2的自定义标签
2016-12-07 11:42
218 查看
使用自定义标签的原因
JSP脚本非常丑陋,难以阅读JSP脚本和HTML代码混杂,维护成本高
HTML页面中嵌入JSP脚本,导致美工人员难以参与开发
出于以上的原因,Web开发需要一种可在页面中使用的标签,这种标签具有和HTML标签类似的语法,但又可以完成JSP脚本的功能,这就是我们需要的自定义标签
开发自定义标签的步骤
开发自定义标签处理类建立一个*.tld文件,每个*.tld文件对应一个标签库,每个标签库可以包含多个标签
在JSP文件中使用自定义标签
开发自定义标签处理类
自定义标签处理类应该继承一个父类,javax.servlet.jsp.tagext.SimpleTagSupport,除此之外,JSP处理类还要有以下的要求如果标签类包含属性,每个属性都有对应的getter和setter方法
重写doTag()方法,这个方法负责生产页面的内容
简单的自定义标签,该标签负责在页面上输出HelloWorld
package com.servlet.customerTag; import java.io.IOException; import java.util.Date; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.SimpleTagSupport; public class HelloWorldTag extends SimpleTagSupport{ @Override public void doTag() throws JspException, IOException { // TODO Auto-generated method stub super.doTag(); getJspContext().getOut().write("HelloWorld"+new Date()); } }
建立TLD文件
TLD是Tag Library Definition的缩写,即标签库定义,文件的后缀是tld,每个TLD文件对应一个标签库,一个标签库中可以包含多个标签。TLD文件称为标签库定义文件。可以在Tomcat的安装目录中寻找到TLD文件的模板,将该文件复制到Web应用的WEB-INF/路径,或者是WEB-INF的任意子路径下,并对该文件进行修改。
<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 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <description>My customer simple taglib</description> <tlib-version>1.0</tlib-version> <short-name>CustomerSimpleTag</short-name> <!-- 定义该标签库的URI,此处的jsp2-example-taglib跟tld文件名称相同 --> <uri>http://tomcat.apache.org/jsp2-example-taglib</uri> <!-- 定义第一个标签 --> <tag> <!-- 定义标签的描述信息 --> <description>HelloWorld</description> <!-- 定义标签的名称,重要的元素 --> <name>helloWorld</name> <!-- 定义标签的处理类 --> <tag-class>com.servlet.tag.HelloWorldTag</tag-class> <!-- 定义标签体为空 --> <body-content>empty</body-content> </tag> </taglib>
taglib下有三个子元素
tlib-version:指定该标签库实现的版本,作为表示的内部版本号,对程序没有太大的影响。
short-name:标签库的默认短名。
uri:指定该标签库的URI,相当于指定该标签库的唯一标识。JSP页面中就是根据标签库中的uri来定位标签库。
除此之外,taglib元素下可以包含多个tag元素,每个tag元素定义一个标签,tag元素下允许出现以下的子元素。
name:该标签的名称,这个子元素很重要,JSP页面中就是根据该名称来使用此标签的。
tag-class:标签的处理类。
body-content:指定标签体的内容,该元素的值可以有以下的几种
tagdependent:指定标签处理类自己负责处理标签体。
empty:只能作为空标签使用。
scriptless:指定该标签的标签体可以是静态HTML元素、表达式语言,但是不允许出现JSP脚本。
JSP:指定该标签的标签体可以使用JSP脚本。
dynamic-attributes:指定该标签是否支持动态属性,只有当定义动态属性标签时才会使用该子元素。
使用标签库
在JSP页面中确定指定的标签需要两点
标签库URI:确定使用哪个标签库标签名:确定使用哪个标签
使用标签库分成以下两个步骤
导入标签库:使用taglib编译指令导入标签库,就是将标签库和指定前缀关联起来。使用标签:在JSP页面中使用自定义标签。
在页面中使用,文件index.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib uri="http://tomcat.apache.org/jsp2-example-taglib" prefix="mytag"%> <!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 </head> <body> <mytag:helloWorld/> </body> </html>
运行结果
相关文章推荐
- JSP标签自定义(2)---getProperty
- JAVA WEB学习笔记(五)-自定义JSP标签
- jsp 自定义分页标签
- 创建你的第一个自定义jsp tag(jsp标签)2
- Web小结---Servlet,JSP,过滤器和监听器,四个作用域和九个内置对象,EL表达式语言,自定义标签,JSTL,国际化与汉字的编码
- JSP中的自定义标签(摘录)
- JSP2.0 tags自定义标签学习笔记
- Web小结---Servlet,JSP,过滤器和监听器,四个作用域和九个内置对象,EL表达式语言,自定义标签,JSTL,国际化与汉字的编码
- 创建你的第一个自定义jsp tag(jsp标签)2
- JSP页面中的自定义标签
- Jsp自定义标签使用笔记
- 使用JSTL开发jsp自定义标签开发---迭代标签
- 自定义JSP标签
- Web小结---Servlet,JSP,过滤器和监听器,四个作用域和九个内置对象,EL表达式语言,自定义标签,JSTL,国际化与汉字的编码
- 关于自定义标签 jsp
- 创建你的第一个自定义jsp tag(jsp标签)
- JSP标签自定义(3)---setProperty
- 创建JSP自定义标签
- 通过JSP自定义标签创建丰富多彩的超链接(Creating Richer Hyperlinks with JSP Custom Tags)
- JSP标签自定义