您的位置:首页 > Web前端 > JavaScript

一,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 自定义标签