JavaWeb_简单标签(自定义标签)HelloWorld

怼烎@ 2023-08-17 17:40 216阅读 0赞

传统标签和简单标签

  • 可发自定义标签,其核心就是编写处理器类,一个标签对应一个标签处理器类,而一个标签库则是很多标签处理器的集合。所有标签处理器类都要实现JspTag接口,该接口没有定义任何方法,主要作为Tag和SimpleTag接口的父接口。
  • 在JSP2.0以前,所有标签处理器类都必须实现Tag接口,这样的标签称为传统标签。
  • JSP2.0规范又定义了一种新的类型的标签,称为简单标签,其对应的处理器类要实现SimpleTag接口

自定义标签的开发与应用步骤

  • 编写完成标签功能的Java类(标签处理器)
  • 编写标签库描述(tld)文件,在tld文件中对自定义中进行描述
  • 在JSP页面中导入和使用自定义标签

自定义标签

(1)创建一个标签处理器类:实现SimpleTag接口

(2)在WEB-INF文件夹下新建一个.tld(标签库描述文件)为扩展名的xml文件。

1642540-20190712163453046-205490943.png

(3)在tld文件中描述自定义的标签:

  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <taglib xmlns="http://java.sun.com/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
  5. version="2.1">
  6. <tlib-version>1.0</tlib-version>
  7. <!--建议在JSP页面上使用的标签前缀-->
  8. <short-name>myshortname</short-name>
  9. <!--作为tld文件的id,用来唯一标识当前的TLD文件,多个tld文件的URI不能重复。
  10. 通过JSP页面的taglib标签的uri属性来引用-->
  11. <uri>http://mycompany.com</uri>
  12. <!-- Invoke 'Generate' action to add tags or functions -->
  13. <!--描述自定义的HelloSimpleTag标签-->
  14. <tag>
  15. <!--标签名:在JSP页面上使用标签时的名字-->
  16. <name>hello</name>
  17. <!--标签所在的全类名-->
  18. <tag-class>com.demo.tag.HelloSimpleTag</tag-class>
  19. <!--标签体的类型-->
  20. <body-content>empty</body-content>
  21. </tag>
  22. </taglib>

(4)在JSP页面上使用自定义标签 

    》使用taglib指令导入标签库描述文件

  1. <%@taglib prefix="yhs" uri="http://mycompany.com" %>
  2.    》使用自定义的标签:
  3. <yhs:hello/>
  4. 需要导入两个包:
  5. <dependency>
  6. <groupId>javax.servlet.jsp.jstl</groupId>
  7. <artifactId>javax.servlet.jsp.jstl-api</artifactId>
  8. <version>1.2.2</version>
  9. </dependency>
  10. <!-- https://mvnrepository.com/artifact/taglibs/standard -->
  11. <dependency>
  12. <groupId>taglibs</groupId>
  13. <artifactId>standard</artifactId>
  14. <version>1.1.2</version>
  15. </dependency>

  

  1. 创建一个类实现SimpleTag接口
  2. package com.demo.tag;
  3. import javax.servlet.jsp.JspContext;
  4. import javax.servlet.jsp.JspException;
  5. import javax.servlet.jsp.tagext.JspFragment;
  6. import javax.servlet.jsp.tagext.JspTag;
  7. import javax.servlet.jsp.tagext.SimpleTag;
  8. import java.io.IOException;
  9. public class HelloSimpleTag implements SimpleTag {
  10. @Override
  11. public void doTag() throws JspException, IOException {
  12. System.out.println("doTag");
  13. }
  14. @Override
  15. public void setParent(JspTag jspTag) {
  16. System.out.println("setParent");
  17. }
  18. @Override
  19. public JspTag getParent() {
  20. System.out.println("getParent");
  21. return null;
  22. }
  23. @Override
  24. public void setJspContext(JspContext jspContext) {
  25. System.out.println("setJspContext");
  26. }
  27. @Override
  28. public void setJspBody(JspFragment jspFragment) {
  29. System.out.println("setJspBody");
  30. }
  31. }

转载于:https://www.cnblogs.com/yangHS/p/11176972.html

发表评论

表情:
评论列表 (有 0 条评论,216人围观)

还没有评论,来说两句吧...

相关阅读