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"/><%--使用标签--%>
试一下
感谢站长分享,不知道还能不能用