JSP标签

Laughing
2017-11-11 / 0 评论 / 1,252 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年05月31日,已超过232天没有更新,若内容或图片失效,请留言反馈。

JSP标签库,是使用XML语法格式完成程序操作的一种方法,其使用的语法类似于JavaBean的使用语法,于JavaBean一样,都可以通过类完成复杂的操作,而且最大的优势就是按照HTML标签的形式标签,这样可以方便的处理JSP页面的数据显示。

定义空标签

继承TagSupport类

package me.lisen.JavaEEStudy;  
  
import javax.servlet.jsp.JspException;  
import javax.servlet.jsp.JspWriter;  
import javax.servlet.jsp.tagext.TagSupport;  
  
public class HelloTag extends TagSupport {  
    @Override  
    public int doStartTag() throws JspException {  
        JspWriter jspWriter = super.pageContext.getOut();  
        try{  
            jspWriter.write("<h1>Hello,World!</h1>");  
        }catch (Exception e){  
            e.printStackTrace();  
        }  
        return TagSupport.SKIP_BODY;//表示标签体为空  
    }  
}

定义标签描述文件 /WEB-INF/hellotag.tld

<?xml version="1.0" encoding="ISO-8859-1"?>  
  
<taglib xmlns="http://java.sun.com/xml/ns/javaee"  
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"  
        version="2.1">  
  
    <tlib-version>1.0</tlib-version>  
    <short-name>firsttag</short-name>  
    <uri>https://www.xiangcaowuyu.net</uri>  
  
    <!-- Invoke 'Generate' action to add tags or functions -->  
    <tag>  
        <name>hello</name>  
        <tag-class>me.lisen.JavaEEStudy.HelloTag</tag-class>  
        <body-content>empty</body-content>  
    </tag>  
</taglib>

使用标签

<%@ page import="java.awt.*" %>  
<%@ page import="java.util.ArrayList" %><%--  
  Created by IntelliJ IDEA.  
  User: lisen  
  Date: 2017/11/10  
  Time: 下午12:43  
  To change this template use File | Settings | File Templates.  
--%>  
<%@ page contentType="text/html;charset=UTF-8" language="java" %>  
<%@page import="me.lisen.JavaEEStudy.Dpt" %>  
<%@taglib prefix="mytag" uri="/WEB-INF/hellotag.tld" %><%--定义标签--%>  
<html>  
  <head>  
    <title>首页</title>  
    <script src="js/jquery-3.2.1.js" type="text/javascript"></script>  
    <script src="css/bootstrap/js/bootstrap.js" type="text/javascript"></script>  
    <link href="css/bootstrap/css/bootstrap.css" rel="stylesheet">  
    <script src="js/bootstrap-fileinput/js/fileinput.js" type="text/javascript"></script>  
    <link href="js/bootstrap-fileinput/css/fileinput.css" rel="stylesheet">  
    <script src="js/bootstrap-fileinput/js/locales/zh.js" type="text/javascript"></script>  
  </head>  
  <body>  
    <mytag:hello/><%--使用标签--%>  
  </body>  
</html>

如果标签描述文件的路径比较深,我们通过修改web.xml修改映射,然后调用对应的uri获取标签描述文件的位置

首先,我们修改web.xml文件,对标签描述文件进行映射

<jsp-config>  
    <taglib>  
        <taglib-uri>hellotagtld</taglib-uri>  
        <taglib-location>/WEB-INF/hellotag.tld</taglib-location>  
    </taglib>  
</jsp-config>

修改标签引用的uri

<%@taglib prefix="mytag" uri="hellotagtld" %><%--定义标签--%>  

定义一个有属性的标签。

修改继承的类

package me.lisen.JavaEEStudy;  
  
import javax.servlet.jsp.JspException;  
import javax.servlet.jsp.JspWriter;  
import javax.servlet.jsp.tagext.TagSupport;  
import java.text.SimpleDateFormat;  
import java.util.Date;  
  
public class HelloTag extends TagSupport {  
    private String formatStr;  
  
    public void setFormatStr(String formatStr) {  
        this.formatStr = formatStr;  
    }  
  
    public String getFormatStr() {  
        return formatStr;  
    }  
  
    @Override  
    public int doStartTag() throws JspException {  
        JspWriter jspWriter = super.pageContext.getOut();  
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(formatStr);  
        try{  
            jspWriter.write(simpleDateFormat.format(new Date()));  
        }catch (Exception e){  
            e.printStackTrace();  
        }  
        return TagSupport.SKIP_BODY;//表示标签体为空  
    }  
}

修改tld文件,加入定义的属性

<?xml version="1.0" encoding="ISO-8859-1"?>  
  
<taglib xmlns="http://java.sun.com/xml/ns/javaee"  
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"  
        version="2.1">  
  
    <tlib-version>1.0</tlib-version>  
    <short-name>firsttag</short-name>  
    <uri>https://www.xiangcaowuyu.net</uri>  
  
    <!-- Invoke 'Generate' action to add tags or functions -->  
    <tag>  
        <name>hello</name>  
        <tag-class>me.lisen.JavaEEStudy.HelloTag</tag-class>  
        <body-content>empty</body-content>  
        <attribute>  
            <name>formatStr</name>  
            <required>true</required>  
            <rtexprvalue>true</rtexprvalue>  
        </attribute>  
    </tag>  
</taglib>

修改调用方法,传入属性

<mytag:hello formatStr="yyyy-MM-dd"/><%--使用标签--%>  
1

评论 (0)

取消
  1. 头像
    当当
    MacOS · Safari

    试一下

    回复
  2. 头像
    kuma
    MacOS · Google Chrome

    感谢站长分享,不知道还能不能用

    回复