JSP标签编程笔记

   对于jsp标签的编程,经历算是坎坷,昨天晚上开始着手编写第一个标签,算是漏洞百出,当时也心不在焉,
就没有关注具体的错误,就撒手不管了。今天索性又重新编写了一个更复杂些的标签。刚开始运行也是看到了类似昨天的错误,
静下心来,修改好了,颇有感觉就记下来吧!

   定义标签步骤如下:
        首先要定义标签操作类,这个类似于servlet编程!但要引入jsp-api包,直接继承javax.servlet.jsp.tagext.TagSupport类
   并且复写doStartTag方法。
第二就是编写标签描述文件,主要作用就是描述标签的名称、简介、处理类、和标签使用到的属性等!  
        第三就是编写jsp页面,并且通过<%taglib/>定义标签,并在jsp页面中直接使用标签!
       
   标签库的的使用流程:
        首先判断是否是第一次执行,若不是则直接执行标签操作,否则,则根据uri加载*.tld,之后再执行标签操作!
   标签的执行过程及组成部分:
        hellotag.jsp->web.xml->hellotag.tld->helloTag.java

示例代码:
代码一:DateTag.java
package hellow;

import java.io.IOException;
import java.sql.Date;
import java.text.SimpleDateFormat;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

public class DateTag extends TagSupport{
private String format;
public int doStartTag()throws JspException{
SimpleDateFormat sdf=new SimpleDateFormat(this.format);
try {
super.pageContext.getOut().write(sdf.format(new Date(2003,11,9)));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return TagSupport.SKIP_PAGE;
}
public void setFormat(String format){
this.format=format;
}

}


代码二:datetag.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
http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_1.xsd"
version="2.1">
<tlib-version>1.0</tlib-version>
<short-name>datetag</short-name>
<tag>
    <name>date</name>
    <tag-class>
          hellow.DateTag
    </tag-class>
    <body-content>empty</body-content>
    <attribute>
          <name>format</name>
          <required>true</required>
          <rtexprvalue>true</rtexprvalue>
    </attribute>
</tag>
</taglib>

代码三:datetag.jsp
<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ taglib prefix="mytag" uri="/WEB-INF/datetag.tld"%>
<html>
   <head>
      <title>tagTest</title>
   </head>
   <body background="cyf.jpg">
<br><br><br><br><br><br><br><br>
     <center>
      <font size=6>
        <mytag:date format="yyyy-MM-dd HH:mm:ss.SSS"/>
      </font>
     </center>
   </body>
</html>


唯一不明白的是,已经在web.xml中写好了映射如下:
    <taglib>
       <taglib-uri>cyf_date</taglib-uri>
       <taglib-location>/WEB-INF/datetag.tld</taglib-location>
     </taglib>
但是在datetag.jsp中的uri写成
<%@ taglib prefix="mytag" uri="cyf_date"%>
之后会出现如下错误:
“HTTP Status 500 - /datetag.jsp(2,40) File "/cyf_date" not found”
求指教!!!


你可能感兴趣的:(jsp)