Jsp简单标签库开发

来源:互联网 发布:微信三级分销系统 源码 编辑:程序博客网 时间:2024/06/05 14:17

Jsp简单标签库开发,是指从Jsp2.0开始,使用SimpleTag接口所开发的标签。大大简化了标签开发的工作。

1、Jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%--引用标签库 --%><%@taglib uri="http://localhost:8080/st" prefix="st" %>//2、控制Jsp页面是否执行<br />//写demo时,共用一个标签类冲突,注释了<br /><%--<st:ctPage/>--%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>JSP简单标签开发</title></head><body><br /><br /><br />//1、控制标签内包含的内容是否执行[start]<br />//写demo时,共用一个标签类冲突,注释了<br /><%--<st:viewContent>看我有没有显示<br /></st:viewContent>--%>//1、控制标签内包含的内容是否执行[end]<br /><br /><br /><br />//3、循环输出标签内容[start]<br />//写demo时,共用一个标签类冲突,注释了<br /><%--<st:forContent>重复输出5次<br /></st:forContent>--%>//3、循环输出标签内容[end]<br /><br /><br /><br />//4、操作标签内容[start]<br /><st:opContent>Hello World!</st:opContent><br />//3、操作标签内容[end]<br /><br /><br /><br /></body></html>

2、标签实现类

import java.io.IOException;import java.io.StringWriter;import javax.servlet.jsp.JspException;import javax.servlet.jsp.SkipPageException;import javax.servlet.jsp.tagext.JspFragment;import javax.servlet.jsp.tagext.SimpleTagSupport;public class MySimpleTag extends SimpleTagSupport{    @Override    public void doTag() throws JspException, IOException    {        //doTag1();        //doTag2();        //doTag3();                //1、获取Jsp标签内容所对应的JspFragment对象        JspFragment jf= this.getJspBody();        //2、实例化一个StringWriter对象,并将标签内容写入到此对象中        StringWriter sw = new StringWriter();        jf.invoke(sw);        //3、将获取的标签内容 编辑后输出到Jsp页面        String content = sw.toString();        this.getJspContext().getOut().write(content + "@Yes!");            }    private void doTag1() throws JspException, IOException    {        /*         * 1、是否执行标签体内容         * 如果不执行标签内容 则将jf.invoke(null)注释即可         */        JspFragment jf = this.getJspBody();        jf.invoke(null); //null默认写到Jsp页面,也可以写成jf.invoke(this.getJspContext().getOut());    }        private void doTag2() throws SkipPageException    {        /*         * 2、是否执行Jsp页面内容         * 如果不执行Jsp页面 则抛出SkipPageException异常         * 如果不抛出异常则执行Jsp页面内容         */        //throw new SkipPageException();    }        private void doTag3() throws JspException, IOException    {        /*         * 3、循环输出标签内容         */        JspFragment jf = this.getJspBody();        for(int i = 0; i < 5; i++)        {            jf.invoke(null);        }    }}

3、tld文件

<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE taglib        PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"        "http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd"><taglib>  <tlib-version>1.0</tlib-version>  <jsp-version>1.2</jsp-version>  <short-name>st</short-name>  <uri>http://localhost:8080/st</uri>  <tag>    <name>viewContent</name>    <tag-class>com.xuhu.web.tag.MySimpleTag</tag-class>    <description>控制标签体是否执行</description>    <!-- 注意此处和传统标签的JSP不同,简单标签需要写成scriptless -->    <body-content>scriptless</body-content>  </tag>    <tag>    <name>ctPage</name>    <tag-class>com.xuhu.web.tag.MySimpleTag</tag-class>    <description>控制Jsp页面是否执行</description>    <!-- 注意此处无标签体 -->    <body-content>empty</body-content>  </tag>    <tag>    <name>forContent</name>    <tag-class>com.xuhu.web.tag.MySimpleTag</tag-class>    <description>循环输出标签内容</description>    <!-- 注意此处和传统标签的JSP不同,简单标签需要写成scriptless -->    <body-content>scriptless</body-content>  </tag>    <tag>    <name>opContent</name>    <tag-class>com.xuhu.web.tag.MySimpleTag</tag-class>    <description>操作标签内容</description>    <!-- 注意此处和传统标签的JSP不同,简单标签需要写成scriptless -->    <body-content>scriptless</body-content>  </tag>    </taglib>

0 0
原创粉丝点击