多语言展示
当前在线:1489今日阅读:27今日分享:41

如何实现自定义标签

一般我们说自定义标签是指JSP自定义标签。自定义标签在功能上逻辑上与javaBean 类似,都封装Java 代码。自定义标签是可重用的组件代码,并且允许开发人员为复杂的操作提供逻辑名称。JSP开发人员使用标签库创建标签.标签库是按照功能或实现进行分组的自定义标签的集合。目前网络上常见的CMS内容管理系统都是采用模板的形式来实现,基本上所有的CMS系统都有一套自己的模板标签书写方法,简称自定义标签。
工具/原料

开发工具 eclipse jdk tomcat

方法/步骤
1

自定义一个用表格显示用户信息的简单标签简单标签的开发我们只要实现Tag接口即可,为了简单起见可以直接继承实现了此接口的TagSupport类

2

创建自定义标签类public class UserInfoTag extends TagSupport {       private UserInfo user;     @Override    public int doStartTag() throws JspException {        try {            JspWriter out = this.pageContext.getOut();            if(user == null) {                out.println('No UserInfo Found...');                return SKIP_BODY;            }            out.println('

');            out.println('');            out.println('');            out.println('');            out.println('');            out.println('');            out.println('');            out.println('');            out.println('');            out.println('');            out.println('');            out.println('');            out.println('');            out.println('
Username:' + user.getUserName() + '
Age:' + user.getAge() + '
Email:' + user.getEmail() + '
');        } catch(Exception e) {            throw new JspException(e.getMessage());        }        return SKIP_BODY;    }       @Override    public int doEndTag() throws JspException {        return EVAL_PAGE;    }     @Override    public void release() {        super.release();        this.user = null;    }       //getter and setters    public UserInfo getUser() {        return user;    }    public void setUser(UserInfo user) {        this.user = user;    }}

3

在Web-Inf创建标签库描述文件.tdl(Tag Library Description)1.02.0cc/mytaglib    showUserInfo    com.mytags.UserInfoTag    empty            user         false         true     

4

配置web.xml            /mytaglib        /WEB-INF/mytaglib.tld     

5

在需要使用此标签的jsp页面头部引入<%@ taglib uri='/mytaglib' prefix='cc'%>

6

使用(参照上面的使用步骤)此致,一个简单的JSP标签开发完成

注意事项

在tomcat4.1之后的版本中默认开启了标签缓冲池(websphere和weblogic并不会这么做),所以执行完标签后并不会执行release()方法(_jspDestroy()时才释放),也就是说同一个jsp页面自定义标签不管使用多少次只会存在一个实例,但也并不是每一个标签都会为其创建一个缓冲池,要根据参数来判断,例如:

推荐信息