Java自定义标签库

以下文章简化自文章:https://www.cnblogs.com/yangming1996/p/6679494.html
- Java提供两种实现,一种是实现Tag接口(麻烦);一种是实现SimpleTag,这种简单,我们仅需继承其实现类SimpleTagSupport来实现。下面就是采用第二种。
- 以下文章仅做提炼,无过多注释说明。
 
1 定义简单标签库:
项目结构如下:
 

Java自定义标签库_第1张图片

第一步:定义标签库对应的MyTag.java类如下:
public class MyTag extends SimpleTagSupport {
    @Override
    public void doTag() throws JspException, IOException {
        getJspContext().getOut().write("hello walker");
    }
}
 
第二步:定义tld标签文件(当前标签放在webapp/WEB-INF目录下的任一子目录即可):
xml version="1.0" encoding="UTF-8" ?>
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/j2eehttp://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    version="2.0">
    A tag library exercising SimpleTag handlers.
    1.0
    SimpleTagLibrary
    mytid
    
        Outputs a colored tile
        hello
        com.lisam.tag.MyTag
        empty
    
 
第三步:修改index.jsp并引用自定义的标签:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="mytid" prefix="mytags" %> 
 
    
     
 
 
    <mytags:hello/> 
 
启动效果如下:
 

Java自定义标签库_第2张图片

 

2 开发带属性标签库
实现步骤与"1"一致。
第一步:定义标签库对应的MyTag2.java类如下:
public class MyTag2 extends SimpleTagSupport {
    private String map;
    public String getMap() {
        return this.map;
    }
    public void setMap(String map) {
        this.map = map;
    }
    @Override
    public void doTag() throws JspException, IOException {
        HashMap, Integer> maps = (HashMap, Integer>) (getJspContext().getAttribute(map));
        for (String str : maps.keySet()) {
            getJspContext().getOut().write(str);
            getJspContext().getOut().write("--");
            getJspContext().getOut().write("" + maps.get(str));
            getJspContext().getOut().write("
"
);
        }
    }
}
 
第二步:定义tld标签文件(当前标签放在webapp/WEB-INF目录下的任一子目录即可):仅修改里面的tag部分即可
    Outputs a colored tile
    hello
    com.lisam.tag.MyTag2
    empty
    
        map
        true
        true
    
 
第三步:修改index.jsp并引用自定义的标签:仅修改body里面部分即可
<%    
    HashMap map = new HashMap();     
    map.put("李四", 53);     
    map.put("张三", 23);     
    map.put("walker", 22);     
    pageContext.setAttribute("map", map); 
%> 
    
    map="map"/> 
结果如下:
 

 

3 开发带标签体的标签库(这个最有用,可以做工具标签如权限、数值转换等)
实现步骤与"1"一致。
第一步:定义标签库对应的MyTag3.java类如下:
public class MyTag3 extends SimpleTagSupport {
    private String map;
    public String getMap() {
        return this.map;
    }
    public void setMap(String map) {
        this.map = map;
    }
    @Override
    public void doTag() throws JspException, IOException {
        HashMap, Integer> maps = (HashMap, Integer>) (getJspContext().getAttribute(map));
        for (String str : maps.keySet()) {
            getJspContext().setAttribute("name", str);
            getJspContext().setAttribute("age", maps.get(str));
            getJspBody().invoke(null);
        }
    }
}
 
第二步:定义tld标签文件(当前标签放在webapp/WEB-INF目录下的任一子目录即可):仅修改里面的tag部分即可
    带标签的标签库
    hello
    com.lisam.tag.MyTag3
    scriptless
    
        map
        false
        true
    
 
第三步:修改index.jsp并引用自定义的标签:仅修改body里面部分即可
<%    
    HashMap maps = new HashMap();     
    maps.put("李四", 53);     
    maps.put("张三", 23);     
    maps.put("walker", 22);    
    pageContext.setAttribute("map", maps); 
%> 
    
             
    
            
        
            
        
        
    
    
     
${name2} ${age}
结果如下:
 

 
 
 

你可能感兴趣的:(JAVA)