jsp自定义标签库

作者: _借东西的小人 | 来源:发表于2017-05-07 21:15 被阅读34次

    自定义标签

    引入:向浏览器输出当前客户的ip地址(不能使用脚本),原先的jsp脚本已经无法满足我们的需求了,这时候需要使用jsp的自定义标签库了。

    <%@taglib uri="http://gz.itcast.cn" prefix="itcast"%>
    <%--使用标签库中的标签--%>
    <itcast:showIp></itcast:showIp>//标签库中的标签```
    
    - 新建一个类继承SimpleTagsupport类(标签处理器类)
    - 覆盖doTag方法
    
    

    public class ShowIpTag extends SimpleTagsupport{
    private JspContext context;

    @override
    

    public void setJspContext(JspContext pc){
    this.context = pc;
    }

    public void doTag() throws JspException,IOExcept{

    //向浏览器输出当前客户的ip地址
    PageContext pagecontext = (PageContext)context;
    HttpServletResquest request = (HttpServletRequest)pageContext.getRequest();
    String ip = request.getRemoteHost();
    JspWriter out = pageContext.getOut();
    out.write("使用自定义的标签输出客户的IP地址"+ip);
    }
    }```

    • 绑定jsp页面与java类的关系
      在WEB-INF里写一个.tld文件
    <!--标签库的版本 -->
    <tlib-version>1.1</tlib-version>
    <!--标签库的前缀 -->
    <short-name>itcast</short-name>
    <!--tld文件的唯一标识 -->
    <uri>http://gz.itcast.cn</uri>
    <!--一个标签的声明 -->
    <tag>
    <!--标签名称 -->
    <name>showIp</name>
    <!--标签处理类的全名 -->
    <tag-class>包名+类名</tag-class>
    <!--输出标签内容格式 -->
    <body-context>scriptless</body-context>
    </tag>```
     ###jsp标签执行过程
    - 访问jspzi资源(localhost:8080......)
    - tomcat服务器把jsp文件翻译成java源文件,编译成class字节码,然后构造类对象 ,调用jspService()方法
    - 检查jsp文件的taglib指令,是否存在名为http://gz.itcast.cn的tld文件
    - 找到对应的<tag>标签,读取内容
    ###自定义标签处理器类的生命周期
    **SimpleTag接口: **
    

    void setJspContext(JspContext pc) --设置pageContext对象,传入pageContext(一
    定调用)通过getJspCotext()方法得到pageContext对象
    void setParent(JspTag parent) --设置父标签对象,传入父标签对象,如果没有父标签,
    则不调用此方法。通过getParent()方法得到父标签对象。
    void setXXX(值) --设置属性值。
    void setJspBody(JspFragment jspBody) --设置标签体内容。
    标签体内容封装到JspFragment对象中,然后传入
    JspFragment对象。通过getJspBody()方法得到标签体内容。
    如果没有标签体内容,则不会调用此方法
    void doTag() --执行标签时调用的方法。(一定调用)```

    自定义标签的作用

    1. 控制标签体内容是否输出
    2. 控制标签余下内容是否输出
    3. 控制重复输出标签体内容
    4. 改变标签体内容
    5. 带属性的标签

    相关文章

      网友评论

        本文标题:jsp自定义标签库

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