首页 > Web开发 > 详细

JSP JSTL入门 - JSTL自定义便签

时间:2019-10-16 23:40:43      阅读:81      评论:0      收藏:0      [点我收藏+]

1、一个普通的JSP标签如下图所示:

技术分享图片

 

2、简单标签

1)定义:

无正文无属性无正文有属性的JSP标签

2)简单标签和正文标签的区别:

技术分享图片

3)一个简单无属性标签的示例:

<mytag:helloworld /> 或 <mytag:helloworld></mytag:helloworld>

4)制作简单无属性标签

首先要在对应的 java 文件中实现标签处理类

①扩展javax.servlet.jsp.tagext.TagSupport

②重写public int doEndTag()方法(需要抛出JspException异常)

5)简单无属性标签使用示例

index.jsp(在web/目录下)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="myfn" uri="/WEB-INF/tld/myfn.tld" %>
<html>
  <head>
    <title>JSTL-自定义无正文标签</title>
  </head>
  <body>
    <myfn:HelloWorld/>
  </body>
</html>

myfn.tld(在web/WEB-INF/tld/目录下)

<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" version="2.0">
    <tlib-version>1.0</tlib-version>
    <short-name>Myfu</short-name>
<!--        直接输出Hello World!-->
        <tag>
            <name>HelloWorld</name>
            <tag-class>cn.qi.Myfu.MyFunctions</tag-class>
<!--            标签正文为空时为empty-->
            <body-content>empty</body-content>
        </tag>
</taglib>

MyFunctions.java(在src/cn.qi.Myfu/目录下)

package cn.qi.Myfu;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import java.io.IOException;

public class MyFunctions extends TagSupport {
    @Override
    public int doEndTag() throws JspException {
        try {
            pageContext.getOut().print("hello");
        } catch (IOException e) {
            // 捕获异常并输出在控制台中
            throw new JspException(e.getMessage());
        }
        return super.doEndTag();
    }
}

 

6)制作简单有属性标签

①扩展javax.servlet.jsp.tagext.TagSupport

②重写public int doEndTag()并抛出JspException异常

增加类属性 text 及其 Getter 和 Setter 方法

7)简单有属性标签使用示例

index.jsp(在web/目录下)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="myfn" uri="/WEB-INF/tld/myfn.tld" %>
<html>
  <head>
    <title>JSTL-自定义无正文标签</title>
  </head>
  <body>
      <myfn:printString text="hehe"/>
  </body>
</html>

myfn.tld(在web/WEB-INF/tld/目录下)

<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" version="2.0">
    <tlib-version>1.0</tlib-version>
    <short-name>Myfu</short-name>
    <tag>
        <name>printString</name>
        <tag-class>cn.qi.Myfu.MyFunctions</tag-class>
        <body-content>empty</body-content>
        <attribute>
            <name>text</name>
            <required>true</required>
<!--            从页面里进行传递-->
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>
</taglib>

MyFunctions.java(在src/cn.qi.Myfu/目录下)

package cn.qi.Myfu;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import java.io.IOException;

public class MyFunctions extends TagSupport {
    private String text;

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    @Override
    public int doEndTag() throws JspException {
        try {
            pageContext.getOut().print(text);
        } catch (IOException e) {
            // 捕获异常并输出在控制台中
            throw new JspException(e.getMessage());
        }
        return super.doEndTag();
    }
}

 

JSP JSTL入门 - JSTL自定义便签

原文:https://www.cnblogs.com/GjqDream/p/11687996.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!