日期:2014-05-16  浏览次数:20307 次

Jsp/Servlet复习笔记-----第9章 自定义标签和JSP标准标签库
标签库:
原因:在JSP的开发中,在标准的MVC设计模式里,希望尽可能的不要出现Scriplet(<
%....%>),在JSP中提供了一种叫做标签库的程序代码,此代码可以解决JSP中出现Scriplet代码的情况,但是此种开发比较困难,而且标签库的功能类似于JavaBean。
标签库程序应该有以下几部分组成:
? 标签的具体实现文件(*.java):javax.servlet.jsp.tagext.TagSupport
? 标签的表述文件(*.tld)
? 如果需要可以在web.xml中进行配置
? 在JSP中通过标签进行自定义标签的调用

9.1 自定义标签   
9.1.1自定义标签简介   
9.1.2 标签库描述符
9.1.3 标签开发实例
开发一个简单的能够打印一个”Welcome to www.darkness.org”的程序
Java代码
1.<%@ page pageEncoding="gb2312"%>  
2.<%@ taglib uri="WEB-INF/darkness.tld" prefix="sky"%>  
3.<html>  
4.<head>  
5.<title>Dark_Sky</title>  
6.</head>  
7.<body>  
8.<sky:darkness/>  
9.</body>  
10.</html>  
11.</body>  
12.</html>  
13.<?xml version="1.0" encoding="ISO-8859-1"?>  
14.<!DOCTYPE taglib PUBLIC "-//Sun Microsystems,Inc.//DTD JSP Tag Library 1.2//EN" 
15.    "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">  
16.<!--a tag library descriptor-->  
17.<taglib>  
18.    <tlib-version>1.0</tlib-version>  
19.    <jsp-version>1.2</jsp-version>  
20.    <short-name>first</short-name>  
21.    <uri></uri>  
22.    <info>A simple tab library for the examples</info>  
23.    <tag>  
24.        <name>darkness</name>  
25.        <tag-class>darksky.Welcome</tag-class>  
26.        <body-content>JSP</body-content>  
27.    </tag>  
28.</taglib> 
<%@ page pageEncoding="gb2312"%>
<%@ taglib uri="WEB-INF/darkness.tld" prefix="sky"%>
<html>
<head>
<title>Dark_Sky</title>
</head>
<body>
<sky:darkness/>
</body>
</html>
</body>
</html>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems,Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<!--a tag library descriptor-->
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>first</short-name>
<uri></uri>
<info>A simple tab library for the examples</info>
<tag>
<name>darkness</name>
<tag-class>darksky.Welcome</tag-class>
<body-content>JSP</body-content>
</tag>
</taglib>Java代码
1.package darksky;  
2. 
3.import java.io.*;  
4.import javax.servlet.jsp.*;  
5.import javax.servlet.jsp.tagext.*;  
6. 
7.public class Welcome extends TagSupport {  
8.    public int doStartTag() {  
9.        try {  
10.            JspWrite out = pageContext.getOut();  
11.            out.println("Welcome to www.darkn