Servlet 自定义标签
2019-01-21 02:41:44来源:博客园 阅读 ()
自定义标签
1)用户定义的一种jsp标记,当一个含有自定义标签的jsp页面被jsp引擎编译成servlet时,tag标签被转化成了对一个称为 标签处理类 的对象的操作。于是,当jsp页面被jsp引擎转化为servlet后,实际上tag标签被转化为了对tag处理类的操作。
2)所有的标签处理器类都要实现 JspTag 接口,该接口中没有定义任何方法,主要作为 Tag 和 SimpleTag 接口的父接口。编写完成标签功能的 Java 类(标签处理器)
public class ForEachTag extends SimpleTagSupport{ private Collection<?> items;//集合变量名 public void setItems(Collection<?> items) { this.items = items; } private String var;//变量 public void setVar(String var) { this.var = var; } @Override public void doTag() throws JspException, IOException { if(items != null){ for(Object obj: items){ // 遍历的对象放入到 pageContext getJspContext().setAttribute(var, obj); //把标签体的内容直接输出到页面上. getJspBody().invoke(null); } } } }
3)编写标签库描述(tld)文件,在tld文件中对自定义中进行描述
标签库描述(Tag Library Description)文件简称为 tld 文件,其扩展名为 .tld,多个标签的集合就形成了一个标签库,标签库中的所有标签都必须在标签文件中进行描述。Tld 文件可以放置在 web 应用程序的 WEB-INF 目录及其子目录中,但不能放置在 WEB-INF 目录下的 classes 和 lib 子目录中 。
<?xml version="1.0" encoding="UTF-8"?> <taglib 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" version="2.0"> <description>MyTag 1.2 core library</description> <display-name>MyTag core</display-name> <tlib-version>1.2</tlib-version> <short-name>myself</short-name> <uri>http://myself.com/myTag/core</uri>
<tag> <name>forEach</name> <tag-class>com.demo.tag.ForEachTag</tag-class> <body-content>scriptless</body-content> <attribute> <name>items</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>var</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>choose</name> <tag-class>com.demo.tag.ChooseTag</tag-class> <body-content>scriptless</body-content> </tag> <tag> <name>when</name> <tag-class>com.demo.tag.WhenTag</tag-class> <body-content>scriptless</body-content> <attribute> <name>test</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>otherwise</name> <tag-class>com.demo.tag.OtherwiseTag</tag-class> <body-content>scriptless</body-content> </tag> </taglib>
4) 在 JSP 页面使用 taglib 指令引入标签库描述文件:
<%@ taglib prefix=“” uri=“” %> uri:属性用于指定所引入的标签库描述(tld)文件中所定义的 <uri> 元素的内容;prefix 属性用于为引入的 tld 文件指定一个”引用代号”。Prefix 属性可以由 jsp 文件的作者任意指定,只要与其他 taglib 指令的 prefix 属性值不同就可以。
<%@page import="com.demo.tag.Customer"%> <%@page import="java.util.ArrayList"%> <%@page import="java.util.List"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="myself" uri="http://myself.com/myTag/core" %> <!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>show mytag</title> </head> <body> <% List<Customer> customers = new ArrayList<Customer>(); customers.add(new Customer(1, "AAA")); customers.add(new Customer(2, "BBB")); customers.add(new Customer(3, "CCC")); customers.add(new Customer(4, "DDD")); customers.add(new Customer(5, "EEE")); request.setAttribute("customers", customers); %> <myself:forEach items="${requestScope.customers }" var="cust"> --${pageScope.cust.id } -- ${cust.name } <br> </myself:forEach> <br><br> <myself:choose> <myself:when test="${param.age > 30}">中年...</myself:when> <myself:when test="${param.age > 20}">青年...</myself:when> <myself:otherwise>少年...</myself:otherwise> </myself:choose> </body> </html>
5)访问http://127.0.0.1:8080/demo/tag/test.jsp?age=30
原文链接:https://www.cnblogs.com/walkwithmonth/p/10292319.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:经济寒冬下更要学技术
- idea为代码添加标签清除标签 2020-06-11
- 通俗理解spring源码(六)—— 默认标签(import、alias、be 2020-06-07
- Invalid [xxx] in servlet mapping 、 <url-pattern& 2020-06-07
- JAVA自定义注解 2020-06-01
- 数据分析 | 基于智能标签,精准管理数据 2020-05-30
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash