读书人

JSP标签编程札记

发布时间: 2013-03-12 11:19:35 作者: rapoo

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”
求指教!!!


读书人网 >编程

热点推荐