开发自制jsp标记(tag)(入门)
来源:互联网 发布:c语言线程创建 编辑:程序博客网 时间:2024/05/10 05:08
今天学习了一下jsp的tag的自制方面的内容,现分享给大家,希望对大家有帮助
jsp提供自制标记(custon tag)的功能,使用自定义标签可以降低jsp的编写难度,让不懂技术的人更好的使用。关于tab,我也是刚刚开始学习,可能部分理解不见得是正确的,请各位老大批评指正。
jsp中为了实现自定义tag,包括3部分
1。web程序中有一个标记库描述文件(tld)定义。(一般把此类文件放在应用的/WEB-INF目录下)
2。对应的java类文件
3。在jsp中使用对应的标记
一、定义对应的tld文件
编辑文件hello.tld文件,内容如下,并将该文件放在对应应用的/WEB-INF目录下
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>hello</shortname>
<tag>
<name>hello</name>
<tagclass>mytab.hello</tagclass>
<bodycontent>empty</bodycontent>
</tag>
</taglib>
注意:在myeclipse5.1版本下没有直接编辑tld文件的专用编辑脚本,可以在myeclise下使用File->new->file的方式新增对应的文件。
在本例中的hello.tld中的
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>hello</shortname>
对于任何自定义tag都一样。
但对于tag段对于每个标签都不同,name是指在jsp中使用的name,本例中的名称为hello,tagclass是指对应的class文件,在本例中是mytab.hello,bodycontent是比较高级的属性,在本例中不使用,可以用empty值
二、编辑对应的java类
在myeclipse环境下,可以在file->new->class下定义,在定义页,如下属性需要填写:
package:mytab;name:hello;在interface的add中写入tag,并选择对应的“tag-javax.servlet.jsp.tagext”,其它的选择缺省。
注:对应的mytab,hello,是与对应的hello的对应mytab.hello是对应的,如果你想增加其它的类。
然后单击finish。
产生的内容如下
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;
public class hello implements Tag {
public int doEndTag() throws JspException {
// TODO Auto-generated method stub
return 0;
}
public int doStartTag() throws JspException {
// TODO Auto-generated method stub
return 0;
}
public Tag getParent() {
// TODO Auto-generated method stub
return null;
}
public void release() {
// TODO Auto-generated method stub
}
public void setPageContext(PageContext arg0) {
// TODO Auto-generated method stub
}
public void setParent(Tag arg0) {
// TODO Auto-generated method stub
}
}
本例的目的比较简单就是一个打印一个hello,world。
处理方式如下,首先定义一个私有的PageContext变量,在hello这个类中的setPageContext中将页面的PageContext变量赋值到类中,并在doStartTag中实现打印一个“hello,world”(注:在doStartTag中需要抛出IOException异常,否则报错,并需要import个 java.io.IOException),
修改后的hello.java如下
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;
import java.io.IOException;//需要自己添加,在doStartTag需要抛出对应的异常,必须定义
public class hello implements Tag {
private PageContext pageContext;//定义一个私有的PageContext
public int doEndTag() throws JspException {
// TODO Auto-generated method stub
return 0;
}
public int doStartTag() throws JspException {
// TODO Auto-generated method stub
//需要新增的内容
//begin
try{
pageContext.getOut().print("hello,world");
}
catch(IOException e)
{
throw new JspException("TimeTag Error:" + e.getMessage());
}
//end
return 0;
}
public Tag getParent() {
// TODO Auto-generated method stub
return null;
}
public void release() {
// TODO Auto-generated method stub
}
public void setPageContext(PageContext arg0) {
// TODO Auto-generated method stub
this.pageContext=arg0;//新增内容,将对应的页面的Pagecontext传进来
}
public void setParent(Tag arg0) {
// TODO Auto-generated method stub
}
}
三、在新增的jsp中使用tag
通过file->new->folder来定义一个目录test,然后定义个jsp,名称叫helloTag.jsp。
将文件中的pageEncoding修改为gbk,并删除无用信息,将head修改为helloTag,修改后的jsp如下
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
HelloTag
</head>
<body>
This is my JSP page. <br>
</body>
</html>
展示一下,看是否有问题(有问题,可不是tag的问题哦)
并在头部定义一个
在body中内容修改为 “在tag中定义的内容为<mytab:hello/>”
修改后的Hellotag.jsp如下
<%@ taglib uri ="/WEB-INF/hello.tld" prefix="mytab" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
HelloTag
</head>
<body>
在tag中定义的内容为<mytab:hello/> <br>
</body>
</html>
看看,是不是出来了,呵呵,搞定耶。
当然,这是初步,建议大家在此基础上修改一下打印的东西像什么当前时间之类的,应该还是挺简单的,这里就不说了。
- 开发自制jsp标记(tag)(入门)
- JSP标准标记库(JSP Standard Tag Library,JSTL)使用入门
- Jsp之Tag文件和Tag标记
- JSP中Tag文件与Tag标记
- JSP技术之三 JSP标记(tag)
- jsp自定义标记入门
- jsp程序设计-Tag文件与Tag标记用法详解
- JSP网站开发之HTML入门知识及常用标记符 (一)
- 标记(tag)的概念
- jsp2.0标记文件(tag)详解
- Shader山下(十九)标记Tag
- jsp进阶: 开发jsp自定义标记- -
- Servlet & JSP 基础5(定制标记开发)
- 开发第一个JSP自定义标签(Tag)
- JSP自定义标签(tag)
- JSP 自定义标签(Tag)
- JSP自定义标签开发(一)—— HelloWorld 采用Tag接口实现开发
- JSP Tag
- 20071024听力原文
- EclipseRCP开发之如何让表格中的各列随表格的变化始终充满整个表格
- 20071025听力原文
- JAVA之道
- 工商银行销售基金一览表
- 开发自制jsp标记(tag)(入门)
- 浅析Java多线程程序设计机制
- SQL注入详解及示例
- Flash页面过渡效果之百叶窗
- javascript 获取url传送的值
- DALFactory出现"未能加载文件或程序集“Flashlm.SQLServerDAL”或它的某一个依赖项。系统找不到指定的文件”的解决方案
- 使用 LVM2 工具执行逻辑卷管理
- ORA-00927: 缺少等号
- Java 语言编码规范