美文网首页
JSP6 - EL函数 & 自定义标签

JSP6 - EL函数 & 自定义标签

作者: 老茂在北京 | 来源:发表于2017-04-14 16:53 被阅读30次
    EL函数

    自定义EL函数

    自定义EL函数
    自定义EL函数的注意事项

    ElDemo1.java文件

    public class ElDemo1 {
        public static String sayHello(String name){
            return "Hello" + name;
        }
    }
    

    myfn.dtl文件

    <?xml version="1.0" encoding="UTF-8"?>
    <taglib version="2.0" 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">
     <tlib-version>1.0</tlib-version>
     <short-name>myfn</short-name>
     <uri>http://www.limaoquan.com/1020/myfn</uri>
     
     <!-- 配置自定义EL函数 -->
     <function>
        <!-- 配置方法名称 -->
        <name>sayHi</name>
        <!-- 配置方法所在的类 -->
        <function-class>cn.el.ElDemo1</function-class>
        <!-- 配置方法的签名 -->
        <function-signature>java.lang.String sayHello(java.lang.String)</function-signature>
     </function>
     
    </taglib>
    

    自定义标签

    自定义标签 现在用右边的过程自定义标签

    简单标签

    重写5个方法:

    • void setJspContext(JspContext pc)
    • void setParent(JspTag parent)
    • void setJspBody(JspFragment jspBody)
    • void doTag()
    • JspTag getParent()
    执行顺序 自定义标签简介和快速入门

    自定义标签的快速入门

    图片.png

    demo1.java

    public class demo1 extends SimpleTagSupport{
        private PageContext pc;
    
        @Override
        public void doTag() throws JspException, IOException {
            pc.getOut().write("hello");
        }
    
        /**
         * 服务器默认先执行该方法
         */
        @Override
        public void setJspContext(JspContext pc) {
            this.pc = (PageContext)pc;
        }
    }
    

    配置 mycc.tld

    <?xml version="1.0" encoding="UTF-8"?>
    <taglib version="2.0" 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">
     <tlib-version>1.0</tlib-version>
     <short-name>mycc</short-name>
     <uri>http://www.limaoquan.com/1020/mycc</uri>
     
     <!-- 配置自定义标签 -->
     <tag>
        <!-- 配置自定义标签的名称 -->
        <name>print</name>
        <!-- 配置类的全路径 -->
        <tag-class>cn.tag.demo1</tag-class>
        <!-- 配置标签主体 -->
        <body-content>empty</body-content>
     </tag>
     
    </taglib>
    

    引用标签 tag.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@taglib uri="http://www.limaoquan.com/1020/mycc" prefix="mycc"%>
    <!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>Insert title here</title>
    </head>
    <body>
    
    <mycc:print/>
    
    </body>
    </html>
    

    带有标签主体的自定义标签

    带有标签主体的自定义标签 Body-content的配置

    tagDemo2.java

    public class TagDemo2 extends SimpleTagSupport{
        PageContext pc;
        @Override
        public void doTag() throws JspException, IOException {
            JspFragment jf = getJspBody();
            jf.invoke(pc.getOut());
        }
    
        @Override
        public void setJspContext(JspContext pc) {
            this.pc = (PageContext)pc;
        }
        
    }
    
    <?xml version="1.0" encoding="UTF-8"?>
    <taglib version="2.0" 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">
     <tlib-version>1.0</tlib-version>
     <short-name>mycc</short-name>
     <uri>http://www.limaoquan.com/1020/mycc</uri>
     
     <!-- 配置自定义标签 -->
     <tag>
        <!-- 配置自定义标签的名称 -->
        <name>print</name>
        <!-- 配置类的全路径 -->
        <tag-class>cn.tag.demo1</tag-class>
        <!-- 配置标签主体 -->
        <body-content>empty</body-content>
     </tag>
     
     <tag>
        <name>out</name>
        <tag-class>cn.tag.TagDemo2</tag-class>
        <body-content>scriptless</body-content>
     </tag>
    </taglib>
    
    <mycc:out>
        妹妹
    </mycc:out>
    

    还需要仔细看《自定义标签.ppt》in day13

    相关文章

      网友评论

          本文标题:JSP6 - EL函数 & 自定义标签

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