时间:2021-05-26
一、自定义标签入门之无参数自定义标签
1.开发自定义标签类
当我们在JSP页面使用一个简单的标签时,底层实际上由标签处理类提供支持,从而可以使用简单的标签来封装复杂的功能,从而使团队更好地协作开发(能让美工人员更好地参与JSP页面的开发)。
自定义标签类都必须继承一个父类:javax.servlet.jsp.tagext.SimpleTagSupport,或者TagSupport除此之外,JSP自定义标签类还有如下要求。
如果标签类包含属性,每个属性都有对应的getter和setter方法。
重写doTag()或者doStartTag()或doEndTag()方法方法,这个方法负责生成页面内容。
首先介绍是不带属性的标签以HelloWorld为例:
Java代码如下:
注意:
问题1:tagsupport中的dostartTag和doEndTag这两个方法有什么区别
doStartTag是在扫描到起始标签时调用,doEndTag是在扫描到结束标签是调用。
例如:<helloWorld> helloWorld</helloWorld>
则jsp引擎分析到<helloWorld> 时调用doStratTag, 分析到</helloWorld>时调用doEndTag
2、建立TLD文件
TLD是Tag Library Definition的缩写,即标签库定义,文件的后缀是tld,每个TLD文件对应一个标签库,一个标签库中可包含多个标签,TLD文件也称为标签库定义文件。
标签库定义文件的根元素是taglib,它可以包含多个tag子元素,每个tag子元素都定义一个标签。通常我们可以到Web容器下复制一个标签库定义文件,并在此基础上进行修改即可。例如Tomcat6.0,在webapps\examples\WEB-INF\jsp2路径下包含了一个jsp2-example-taglib.tld文件,这就是示范用的标签库定义文件。
将该文件复制到Web应用的WEB-INF/路径,或WEB-INF的任意子路径下,并对该文件进行简单修改,修改后的helloworld.tld文件代码如下:
<?xml version="1.0" encoding="UTF-8"?><taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http:///jsp/jstl/core</uri>1314 <!-- 创建自定义 迭代标签 -->15 <tag>16 <name>forEach</name>17 <tag-class>exercise.taglib.ForEach</tag-class>18 <!-- 如果没有标签体,设置empty , 如果有标签休必须设置JSP-->19 <body-content>JSP</body-content>20 <attribute>21 <name>id</name>22 <required>true</required><!-- 标识属性是否是必须的 -->23 <rtexprvalue>true</rtexprvalue><!-- 标识属性值是否可以用表达式语言 -->24 </attribute>25 <attribute>26 <name>collection</name>27 <required>true</required>28 <rtexprvalue>true</rtexprvalue>29 </attribute>30 </tag>3132 <!-- 创建自定义获得属性标签 -->33 <tag>34 <name>getProperty</name>35 <tag-class>exercise.taglib.GetProperty</tag-class>36 <body-content>empty</body-content>37 <attribute>38 <name>name</name>39 <required>true</required>40 <rtexprvalue>true</rtexprvalue>41 </attribute>42 <attribute>43 <name>property</name>44 <required>true</required>45 <rtexprvalue>true</rtexprvalue>46 </attribute>47 </tag>4849 <!-- 配置一个表达式调用 的函数 -->50 <function>51 <name>add</name><!-- 配置一个标签,在JSP页面通过引用前缀调用 -->52 <function-class>exercise.taglib.ELFunction</function-class><!-- 实现类 -->53 <function-signature>int add(int,int)</function-signature><!-- 静态的方法:包括返回类型,方法名,入参的类型 -->54 </function>55</taglib>在web.xml文件中配置自定义标签
<jsp-config> <taglib> <taglib-uri>firstTag</taglib-uri> <taglib-location>/WEB-INF/tag.tld</taglib-location> </taglib></jsp-config> 在jsp文件中使用标签:tag.jsp<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ taglib uri="firstTag" prefix="my"%><jsp:useBean id="userVo1" class="exercise.vo.UserVo" scope="request"> <jsp:setProperty name="userVo1" property="name" value="Hackiller"/> <jsp:setProperty name="userVo1" property="password" value="123"/></jsp:useBean><jsp:useBean id="userVo2" class="exercise.vo.UserVo" scope="request"> <jsp:setProperty name="userVo2" property="name" value="YangYang"/> <jsp:setProperty name="userVo2" property="password" value="456"/></jsp:useBean><% List list = new ArrayList(); list.add(userVo1); list.add(userVo2); pageContext.setAttribute("voList",list);%><html> <head> <title>My JSP 'tag.jsp' starting page</title> </head> <body> <h2 align="center">This is my JSP page:测试taglib.</h2> <hr> <h2>自定义迭代标签:</h2> <table> <tr><td>姓名</td><td>密码</td></tr> <my:forEach collection="voList" id="uservo"> <tr> <td><my:getProperty name="uservo" property="name"/></td> <td><my:getProperty name="uservo" property="password"/></td> </tr> </my:forEach> </table> <hr> <h2>表达式调用类的静态方法:</h2> 2+5=${my:add(2,5)} </body></html>以上就是小编为大家带来的jsp中自定义Taglib详解全部内容了,希望大家多多支持~
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文为大家分享了JSP自定义标签入门学习教程,希望大家喜欢。1.JSP自定义标签:自定义标签是用户定义的JSP语言元素。当JSP页面包含一个自定义标签时将被转化
本文实例讲述了javaWeb自定义标签用法。分享给大家供大家参考,具体如下:自定义标签创建自定义标签主要用于移除Jsp页面中的Java代码。移除jsp页面中的j
前言:前面几篇讲了自定义控件绘制原理Android自定义控件基本原理详解(一),Android自定义控件之自定义属性(二),Android自定义控件之自定义组合
本文实例讲述了jsp中自定义标签用法。分享给大家供大家参考。具体如下:这里简单的写了一个自定义标签,自己定义标签的好处就是在jsp页面中可以使用自己定义的功能,
Java中自定义异常详解及实例代码下面做了归纳总结,欢迎批评指正自定义异常classChushulingExceptionextendsException{pu