`

(转)JSP自定义标签开发入门(2)

阅读更多

 

JSP自定义标签开发入门(2)


JSP自定义标签开发入门,简单标签的开发我们只要实现Tag接口即可,为了简单起见可以直接继承实现了此接口的TagSupport类。

AD:

 

TagSupport类已经为我们实现并扩展了一些方法(比如在上述方法中我们可以直接使用pageContext对象,调用父标签getParent()等),所以一般情况下我们只需重写doStartTag(),doEndTag() 即可

TLD文件说明:

<!--版本号-->
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>cc</short-name>
<tag>
<!—指定标签名 -->
<name>showUserInfo</name>
<!—指定标签类文件的全路径 -->
<tag-class>com.mytags.UserInfoTag</tag-class>
<!--如果不需要标签体则设置empty,反之设定jsp -->
<body-content>empty</body-content>
<!—设定属性(如果有的话) -->
<attribute>
<!—指定标签名 -->
<name>user</name>
<!—是否是必须,如果非必须没设置则为空 -->
<required>false</required>
<rtexprvalue>true</rtexprvalue><!—是否可在属性中使用表达式 -->
</attribute>
</tag>

Web.xml文件说明:

<jsp-config>
<taglib>
<!--

标签库的uri路径
即jsp头文件中声明<%@ taglib uri="/mytaglib" prefix="cc"%>
的uri
-->
<taglib-uri>/mytaglib</taglib-uri>
<!—tld文件所在的位置-->
<taglib-location>/WEB-INF/mytaglib.tld</taglib-location>
</taglib>
</jsp-config>

目标2:自定义一个类似于Asp.Net中的Reapter控件的标签

效果图:

 

 

在jsp页面使用此自定义标签:

  1. <!-- 创建需要展现javabean(UserInfo)集合的实例(用于测试数据) --> 
  2. <%  
  3.     List<UserInfo> users = new ArrayList<UserInfo>();     
  4.     users.add(new UserInfo("Zhangsan", 12, "Zhangsan@163.com"));  
  5.     users.add(new UserInfo("Lisi", 22, "Lisi@sina.com"));  
  6.     users.add(new UserInfo("Wangwu", 33, "Wangwu@qq.com"));  
  7.     pageContext.setAttribute("users", users);  
  8. %> 
  9.    
  10. <!-- 给标签绑定数据源  --> 
  11. <table width='500px' border='1' align='center'> 
  12.     <tr> 
  13.         <td width='20%'>UserName</td> 
  14.         <td width='20%'>Age</td> 
  15.         <td>Email</td> 
  16.     </tr> 
  17.     <cc:repeater var="item" items="${pageScope.users }"> 
  18.         <tr> 
  19.             <td>${item.userName }</td> 
  20.             <td>${item.age }</td> 
  21.             <td>${item.email }</td> 
  22.         </tr> 
  23.     </cc:repeater> 
  24. </table> 

开发步骤:

要完成此控件我们需要实现一个迭代接口,即IterationTag,由于TagSupport同样实现了此接口,所以我们继承此类

1 创建自定义标签类

  1. public class Repeater extends TagSupport {  
  2.     private Collection items;  
  3.     private Iterator it;  
  4.     private String var;  
  5.    
  6.     @Override  
  7.     public int doStartTag() throws JspException {  
  8.         if(items == null || items.size() == 0) return SKIP_BODY;  
  9.         it = items.iterator();    
  10.         if(it.hasNext()) {  
  11.             pageContext.setAttribute(var, it.next());  
  12.         }  
  13.         return EVAL_BODY_INCLUDE;  
  14.     }  
  15.      
  16.     @Override  
  17.     public int doAfterBody() throws JspException {  
  18.         if(it.hasNext()) {  
  19.             pageContext.setAttribute(var, it.next());  
  20.             return EVAL_BODY_AGAIN;  
  21.         }  
  22.         return SKIP_BODY;  
  23.     }  
  24.      
  25.     @Override  
  26.     public int doEndTag() throws JspException {  
  27.         return EVAL_PAGE;  
  28.     }  
  29.      
  30.     public void setItems(Collection items) {  
  31.         this.items = items;  
  32.     }  
  33.      
  34.     public void setVar(String var) {  
  35.         this.var = var;  
  36.     }  

2在Web-Inf创建标签库描述文件.tdl(Tag Library Description)由于目标1种已经创建了此文件,我们只需增加此标签的配置即可

  1. <tag> 
  2.     <name>repeater</name> 
  3.     <tag-class>com.mytags.Repeater</tag-class> 
  4.     <body-content>jsp</body-content> 
  5.     <attribute> 
  6.         <name>items</name> 
  7.         <required>false</required> 
  8.         <rtexprvalue>true</rtexprvalue> 
  9.     </attribute> 
  10.     <attribute> 
  11.         <name>var</name> 
  12.         <required>true</required> 
  13.         <rtexprvalue>true</rtexprvalue> 
  14.     </attribute> 
  15.  </tag> 
  16.   

3 配置web.xml (目标1中已完成,无需修改)

 

分享到:
评论

相关推荐

    JSP自定义标签开发入门

    NULL 博文链接:https://li7jia7.iteye.com/blog/1820638

    JSP自定义标签入门学习

    本文为大家分享了JSP自定义标签入门学习教程,希望大家喜欢。 1.JSP自定义标签: 自定义标签是用户定义的JSP语言元素。当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作...

    完整版Java JSP web开发教程 10_自定义标签(共20页).ppt

    完整版Java JSP web开发教程 10_自定义标签(共20页).ppt 完整版Java JSP web开发教程 11_JSP 标准标签库(共21页).ppt 完整版Java JSP web开发教程 12_过滤器(共20页).ppt 完整版Java JSP web开发教程 13_MVC ...

    完整版Java JSP web开发教程 11_JSP 标准标签库(共21页).ppt

    完整版Java JSP web开发教程 10_自定义标签(共20页).ppt 完整版Java JSP web开发教程 11_JSP 标准标签库(共21页).ppt 完整版Java JSP web开发教程 12_过滤器(共20页).ppt 完整版Java JSP web开发教程 13_MVC ...

    完整版Java JSP web开发教程 02_Servlet使用入门(共23页).ppt

    完整版Java JSP web开发教程 10_自定义标签(共20页).ppt 完整版Java JSP web开发教程 11_JSP 标准标签库(共21页).ppt 完整版Java JSP web开发教程 12_过滤器(共20页).ppt 完整版Java JSP web开发教程 13_MVC ...

    完整版Java JSP web开发教程 全套PPT课件资料 共13个章节.rar

    完整版Java JSP web开发教程 10_自定义标签(共20页).ppt 完整版Java JSP web开发教程 11_JSP 标准标签库(共21页).ppt 完整版Java JSP web开发教程 12_过滤器(共20页).ppt 完整版Java JSP web开发教程 13_MVC ...

    jsp中自定义Taglib详解

    自定义标签类都必须继承一个父类:javax.servlet.jsp.tagext.SimpleTagSupport,或者TagSupport除此之外,JSP自定义标签类还有如下要求。 如果标签类包含属性,每个属性都有对应的getter和setter方法。 重写doTag()...

    JSP开发技术大全 源码

    mail组件、程序日志组件、JavaScript脚本语言、CSS样式、XML入门技术、在JSP中应用Ajax技术、在JSP中应用DOM解析XML、在JSP中应用JDOM解析XML、在JSP中应用SAX解析XML、EL表达式、JSTL标签库、自定义标签、Hibernate...

    完整版Java JSP web开发教程 05_JSP简介(共17页).ppt

    完整版Java JSP web开发教程 10_自定义标签(共20页).ppt 完整版Java JSP web开发教程 11_JSP 标准标签库(共21页).ppt 完整版Java JSP web开发教程 12_过滤器(共20页).ppt 完整版Java JSP web开发教程 13_MVC ...

    完整版Java JSP web开发教程 07_JSP隐式对象(共32页).ppt

    完整版Java JSP web开发教程 10_自定义标签(共20页).ppt 完整版Java JSP web开发教程 11_JSP 标准标签库(共21页).ppt 完整版Java JSP web开发教程 12_过滤器(共20页).ppt 完整版Java JSP web开发教程 13_MVC ...

    完整版Java JSP web开发教程 09_JSP表达式语言(共23页).ppt

    完整版Java JSP web开发教程 10_自定义标签(共20页).ppt 完整版Java JSP web开发教程 11_JSP 标准标签库(共21页).ppt 完整版Java JSP web开发教程 12_过滤器(共20页).ppt 完整版Java JSP web开发教程 13_MVC ...

    JSP开发技术大全 JSP

    mail组件、程序日志组件、JavaScript脚本语言、CSS样式、XML入门技术、在JSP中应用Ajax技术、在JSP中应用DOM解析XML、在JSP中应用JDOM解析XML、在JSP中应用SAX解析XML、EL表达式、JSTL标签库、自定义标签、Hibernate...

    jsp 开发技术大全

    mail组件、程序日志组件、JavaScript脚本语言、CSS样式、XML入门技术、在JSP中应用Ajax技术、在JSP中应用DOM解析XML、在JSP中应用JDOM解析XML、在JSP中应用SAX解析XML、EL表达式、JSTL标签库、自定义标签、Hibernate...

    完整版Java JSP web开发教程 08_JavaBean和JSP中(共26页).ppt

    完整版Java JSP web开发教程 10_自定义标签(共20页).ppt 完整版Java JSP web开发教程 11_JSP 标准标签库(共21页).ppt 完整版Java JSP web开发教程 12_过滤器(共20页).ppt 完整版Java JSP web开发教程 13_MVC ...

    完整版Java JSP web开发教程 06_JSP脚本和指令的使用(共22页).ppt

    完整版Java JSP web开发教程 10_自定义标签(共20页).ppt 完整版Java JSP web开发教程 11_JSP 标准标签库(共21页).ppt 完整版Java JSP web开发教程 12_过滤器(共20页).ppt 完整版Java JSP web开发教程 13_MVC ...

    完整版Java JSP web开发教程 01_web概述(共18页).ppt

    完整版Java JSP web开发教程 10_自定义标签(共20页).ppt 完整版Java JSP web开发教程 11_JSP 标准标签库(共21页).ppt 完整版Java JSP web开发教程 12_过滤器(共20页).ppt 完整版Java JSP web开发教程 13_MVC ...

    完整版Java JSP web开发教程 12_过滤器(共20页).ppt

    完整版Java JSP web开发教程 10_自定义标签(共20页).ppt 完整版Java JSP web开发教程 11_JSP 标准标签库(共21页).ppt 完整版Java JSP web开发教程 12_过滤器(共20页).ppt 完整版Java JSP web开发教程 13_MVC ...

    完整版Java JSP web开发教程 04_JavaMail和Servlet(共22页).ppt

    完整版Java JSP web开发教程 10_自定义标签(共20页).ppt 完整版Java JSP web开发教程 11_JSP 标准标签库(共21页).ppt 完整版Java JSP web开发教程 12_过滤器(共20页).ppt 完整版Java JSP web开发教程 13_MVC ...

    完整版Java JSP web开发教程 03_会话跟踪简介(共22页).ppt

    完整版Java JSP web开发教程 10_自定义标签(共20页).ppt 完整版Java JSP web开发教程 11_JSP 标准标签库(共21页).ppt 完整版Java JSP web开发教程 12_过滤器(共20页).ppt 完整版Java JSP web开发教程 13_MVC ...

    完整版Java JSP web开发教程 13_MVC 设计模式(共22页).ppt

    完整版Java JSP web开发教程 10_自定义标签(共20页).ppt 完整版Java JSP web开发教程 11_JSP 标准标签库(共21页).ppt 完整版Java JSP web开发教程 12_过滤器(共20页).ppt 完整版Java JSP web开发教程 13_MVC ...

Global site tag (gtag.js) - Google Analytics