美文网首页
标签学习01

标签学习01

作者: iOSjiang | 来源:发表于2016-06-27 22:37 被阅读5次

    1、标签的作用

    自定义标签是属于JSP规范的。

    开发原则:JSP中不要使用<%%>(标签替换)和<%=%>(EL表达式)

    自定义标签的作用:替换掉JSP中的JSP脚本(<%%>),实现一些简单的逻辑运算。

    2、标签的开发步骤

    a、编写一个类,实现一个接口javax.servlet.jsp.tagext.SimpleTag.或者继承javax.servlet.jsp.tagext.SimpleTagSupport。

    import java.io.IOException;

    import javax.servlet.jsp.JspException;

    import javax.servlet.jsp.PageContext;

    import javax.servlet.jsp.tagext.SimpleTagSupport;

    import java.text.DateFormat;

    import java.text.SimpleDateFormat;

    import java.util.Date;

    //继承  SimpleTagSupport

    public class GetCurrentTime extends SimpleTagSupport {

    @Override

    //实现  dotag方法

    public void doTag() throws JspException, IOException {

    // TODO Auto-generated method stub

    super.doTag();

    Date now = new Date();

    DateFormat formate = new SimpleDateFormat();

    String str = formate.format(now);

    //获取content

    PageContext content  = (PageContext)getJspContext();

    //输出

    content.getOut().write(str);

    }

    }

    b、在WEB-INF目录下,建立一个扩展名为tld(Tag Libary

    Definition)的xml文件。

    注:tld如果在WEB-INF或者在jar包的META-INF目录下,都能自动找到。

    <?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_0.xsd"    version="2.0">

    <description> A tag library exercising SimpleTag handlers.</description>

    <tlib-version>1.0</tlib-version>

    <short-name>名字</short-name>

    <uri>http://www.jiangjianli.com/Demo1</uri>

    <tag>

    //description否用于指定属性的描述信息。

    <description>demo1</description>

    //name 必须有  用于指定属性的名称。属性名称是大小写敏感的,并且不能以jsp、_jsp、java和sun开头。

    <name></name>

    //完整类名

    <tag-class></tag-class>

    //•empty:没有标签体

    //scriptless:标签体可以包含el表达式和JSP动作元素,但不能包含JSP的脚本元素  <前缀名:tagname></前缀名:tagname>                这种方式调用

    //如果是empty 在JSP可<前缀名:tagname/>调用

    <body-content>scriptless</body-content>

    <attribute>//标签中有参数是需配置参数名

    <name></name>

    <required>true</required>

    //是否支持el表达式

    <rtexprvalue>true</rtexprvalue>

    </attribtue>

    </tag>

    在标签调用时传递了内容如<demo:demo1>abcdef</demo:demo1>将会调用setJspBody方法

    /*. 若存在标签体, JSP 引擎将把标签体封装成一个 JspFragment

    对象,调用setJspBody方法将JspFragment对象传递给标

    签处理器对象。若标签体为空,这setJspBody将不会被

    JSP引擎调用

    */

    可以通过在dotag方法中通过下面代码获取到内容

    StringWriter sw = new StringWriter();

    //将内容写到SW中

    getJspBody().invoke(sw);

    //转换为字符串

    String str = sw.getBuffer().toString();

    //输出到浏览器

    PageContext page = (PageContext)getJspContext();

    page.getOut().write(str);

    相关文章

      网友评论

          本文标题:标签学习01

          本文链接:https://www.haomeiwen.com/subject/rerodttx.html