JSP6 - EL函数 & 自定义标签

2017-04-14  本文已影响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个方法:

执行顺序 自定义标签简介和快速入门

自定义标签的快速入门

图片.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

上一篇下一篇

猜你喜欢

热点阅读