JSP标签

原创 Laughing  2017-11-11 21:46  阅读 169 次 评论 0 条

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

定义空标签

继承TagSupport类
  1. package me.lisen.JavaEEStudy;  
  2.   
  3. import javax.servlet.jsp.JspException;  
  4. import javax.servlet.jsp.JspWriter;  
  5. import javax.servlet.jsp.tagext.TagSupport;  
  6.   
  7. public class HelloTag extends TagSupport {  
  8.     @Override  
  9.     public int doStartTag() throws JspException {  
  10.         JspWriter jspWriter = super.pageContext.getOut();  
  11.         try{  
  12.             jspWriter.write("<h1>Hello,World!</h1>");  
  13.         }catch (Exception e){  
  14.             e.printStackTrace();  
  15.         }  
  16.         return TagSupport.SKIP_BODY;//表示标签体为空  
  17.     }  
  18. }  
定义标签描述文件 /WEB-INF/hellotag.tld
  1. <?xml version="1.0" encoding="ISO-8859-1"?>  
  2.   
  3. <taglib xmlns="http://java.sun.com/xml/ns/javaee"  
  4.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"  
  6.         version="2.1">  
  7.   
  8.     <tlib-version>1.0</tlib-version>  
  9.     <short-name>firsttag</short-name>  
  10.     <uri>https://www.lisen.me</uri>  
  11.   
  12.     <!-- Invoke 'Generate' action to add tags or functions -->  
  13.     <tag>  
  14.         <name>hello</name>  
  15.         <tag-class>me.lisen.JavaEEStudy.HelloTag</tag-class>  
  16.         <body-content>empty</body-content>  
  17.     </tag>  
  18. </taglib>  
使用标签
  1. <%@ page import="java.awt.*" %>  
  2. <%@ page import="java.util.ArrayList" %><%--  
  3.   Created by IntelliJ IDEA.  
  4.   User: lisen  
  5.   Date: 2017/11/10  
  6.   Time: 下午12:43  
  7.   To change this template use File | Settings | File Templates.  
  8. --%>  
  9. <%@ page contentType="text/html;charset=UTF-8" language="java" %>  
  10. <%@page import="me.lisen.JavaEEStudy.Dpt" %>  
  11. <%@taglib prefix="mytag" uri="/WEB-INF/hellotag.tld" %><%--定义标签--%>  
  12. <html>  
  13.   <head>  
  14.     <title>首页</title>  
  15.     <script src="js/jquery-3.2.1.js" type="text/javascript"></script>  
  16.     <script src="css/bootstrap/js/bootstrap.js" type="text/javascript"></script>  
  17.     <link href="css/bootstrap/css/bootstrap.css" rel="stylesheet">  
  18.     <script src="js/bootstrap-fileinput/js/fileinput.js" type="text/javascript"></script>  
  19.     <link href="js/bootstrap-fileinput/css/fileinput.css" rel="stylesheet">  
  20.     <script src="js/bootstrap-fileinput/js/locales/zh.js" type="text/javascript"></script>  
  21.   </head>  
  22.   <body>  
  23.     <mytag:hello/><%--使用标签--%>  
  24.   </body>  
  25. </html>  

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

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

  1. <jsp-config>  
  2.     <taglib>  
  3.         <taglib-uri>hellotagtld</taglib-uri>  
  4.         <taglib-location>/WEB-INF/hellotag.tld</taglib-location>  
  5.     </taglib>  
  6. </jsp-config>  

修改标签引用的uri

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

定义一个有属性的标签

修改继承的类

  1. package me.lisen.JavaEEStudy;  
  2.   
  3. import javax.servlet.jsp.JspException;  
  4. import javax.servlet.jsp.JspWriter;  
  5. import javax.servlet.jsp.tagext.TagSupport;  
  6. import java.text.SimpleDateFormat;  
  7. import java.util.Date;  
  8.   
  9. public class HelloTag extends TagSupport {  
  10.     private String formatStr;  
  11.   
  12.     public void setFormatStr(String formatStr) {  
  13.         this.formatStr = formatStr;  
  14.     }  
  15.   
  16.     public String getFormatStr() {  
  17.         return formatStr;  
  18.     }  
  19.   
  20.     @Override  
  21.     public int doStartTag() throws JspException {  
  22.         JspWriter jspWriter = super.pageContext.getOut();  
  23.         SimpleDateFormat simpleDateFormat = new SimpleDateFormat(formatStr);  
  24.         try{  
  25.             jspWriter.write(simpleDateFormat.format(new Date()));  
  26.         }catch (Exception e){  
  27.             e.printStackTrace();  
  28.         }  
  29.         return TagSupport.SKIP_BODY;//表示标签体为空  
  30.     }  
  31. }  

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

  1. <?xml version="1.0" encoding="ISO-8859-1"?>  
  2.   
  3. <taglib xmlns="http://java.sun.com/xml/ns/javaee"  
  4.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"  
  6.         version="2.1">  
  7.   
  8.     <tlib-version>1.0</tlib-version>  
  9.     <short-name>firsttag</short-name>  
  10.     <uri>https://www.lisen.me</uri>  
  11.   
  12.     <!-- Invoke 'Generate' action to add tags or functions -->  
  13.     <tag>  
  14.         <name>hello</name>  
  15.         <tag-class>me.lisen.JavaEEStudy.HelloTag</tag-class>  
  16.         <body-content>empty</body-content>  
  17.         <attribute>  
  18.             <name>formatStr</name>  
  19.             <required>true</required>  
  20.             <rtexprvalue>true</rtexprvalue>  
  21.         </attribute>  
  22.     </tag>  
  23. </taglib>  

修改调用方法,传入属性

  1. <mytag:hello formatStr="yyyy-MM-dd"/><%--使用标签--%>  
本文地址:https://www.lisen.me/1287.html
版权声明:本文为原创文章,版权归 木子网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情