JSP自定义标签的开发及使用

JSP 2开发自定义标签步骤
1、开发自定义标签处理类;在JSP 2中,处理类需要继承SimpleTagSupport类;
2、建立一个*.tld文件,每个*.tld文件对应一个标签库,每个标签库可以包含多个标签;
3、在JSP文件中使用自定义标签;

使用标签库
在JSP页面使用指定的标签需要确定两点
1、标签库URI:确定使用哪个标签库
2、标签名:确定使用哪个标签;
使用标签库分为以下两个步骤:
1、导入标签库:使用taglib编译指令导入标签库,就是将标签库和指前前缀关联起来;
2、使用标签:在JSP页面中使用自定义标签;语法如下:
<%@ taglib uri="tagliburi" prefix="tagprefix"%>

 

下面主要介绍带属性的标签、带标签体的标签、以页面片段作为属性的标签及动态属性标签

(1)、带属性的标签

自定义标签处理类QueryTag.java:

Java代码   收藏代码
  1. package aniyo.tag.demo;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.Writer;  
  5. import java.sql.Connection;  
  6. import java.sql.DriverManager;  
  7. import java.sql.ResultSet;  
  8. import java.sql.ResultSetMetaData;  
  9. import java.sql.SQLException;  
  10. import java.sql.Statement;  
  11.   
  12. import javax.servlet.jsp.JspException;  
  13. import javax.servlet.jsp.tagext.SimpleTagSupport;  
  14.   
  15. /** 
  16.  * 带属性的标签 
  17.  * @author aniyo 
  18.  * blog:http://aniyo.iteye.com 
  19.  * 
  20.  */  
  21. public class QueryTag extends SimpleTagSupport{  
  22.   
  23.     //标签的属性  
  24.     private String driver;  
  25.     private String url;  
  26.     private String user;  
  27.     private String pass;  
  28.     private String sql;  
  29.       
  30.     //执行数据库访问的对象   
  31.     private Connection conn = null;  
  32.     private Statement stmt = null;  
  33.     private ResultSet rs = null;  
  34.     private ResultSetMetaData rsmd = null;  
  35.   
  36.     //省略get/set方法。。。  
  37.   
  38.     /* (non-Javadoc) 
  39.      * @see javax.servlet.jsp.tagext.SimpleTagSupport#doTag() 
  40.      */  
  41.     @Override  
  42.     public void doTag() throws JspException, IOException {  
  43.         try {  
  44.             Class.forName(driver);  
  45.             conn = DriverManager.getConnection(url, user, pass);  
  46.             stmt = conn.createStatement();  
  47.             rs = stmt.executeQuery(sql);  
  48.             rsmd = rs.getMetaData();  
  49.             //获取 列数目  
  50.             int columnCount = rsmd.getColumnCount();  
  51.             //获取页面输出流  
  52.             Writer out = getJspContext().getOut();  
  53.             //在页面输出表格  
  54.             out.write("<table border='1' bgcolor='grade' width='300'>");  
  55.             while(rs.next()){  
  56.                 out.write("<tr>");  
  57.                 out.write("<td>"+rs.getInt(1)+"</td>");  
  58.                 out.write("<td>"+rs.getString(2)+"</td>");  
  59.                 out.write("</tr>");  
  60.             }  
  61.             out.write("</table>");  
  62.         } catch (ClassNotFoundException e) {  
  63.             e.printStackTrace();  
  64.         } catch (SQLException e) {  
  65.             e.printStackTrace();  
  66.         }finally{  
  67.             //关闭结果集  
  68.             try {  
  69.                 if(rs!=null){  
  70.                     rs.close();  
  71.                 }  
  72.                 if(stmt!=null){  
  73.                     stmt.close();  
  74.                 }  
  75.                 if(conn!=null){  
  76.                     conn.close();  
  77.                 }  
  78.                   
  79.             } catch (Exception e2) {  
  80.                 e2.printStackTrace();  
  81.             }  
  82.               
  83.         }  
  84.           
  85.     }  
  86.   
  87.     public static void main(String[] args) {  
  88.         new QueryTag();  
  89.     }  
  90. }  

 

 tld文件:querytaglib.tld

Java代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <taglib xmlns="http://java.sun.com/xml/ns/j2ee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"  
  5.     version="2.0">  
  6.     <description>A tag library exercising SimpleTag handlers.</description>  
  7.     <tlib-version>1.0</tlib-version>  
  8.     <short-name>querytaglib</short-name>  
  9.     <!-- 定义标签库的uri属性,该属性非常重要 -->  
  10.     <uri>http://www.crazyit.org/querytaglib</uri>  
  11.     <tag>  
  12.         <description>Outputs QueryTag</description>  
  13.         <name>queryTag</name>  
  14.         <tag-class>aniyo.tag.demo.QueryTag</tag-class>  
  15.         <body-content>empty</body-content>  
  16.         <attribute>  
  17.             <name>driver</name>  
  18.             <required>true</required>  
  19.             <fragment>true</fragment>  
  20.         </attribute>  
  21.          <attribute>  
  22.             <name>url</name>  
  23.             <required>true</required>  
  24.             <fragment>true</fragment>  
  25.         </attribute>  
  26.          <attribute>  
  27.             <name>user</name>  
  28.             <required>true</required>  
  29.             <fragment>true</fragment>  
  30.         </attribute>  
  31.          <attribute>  
  32.             <name>pass</name>  
  33.             <required>true</required>  
  34.             <fragment>true</fragment>  
  35.         </attribute>  
  36.          <attribute>  
  37.             <name>sql</name>  
  38.             <required>true</required>  
  39.             <fragment>true</fragment>  
  40.         </attribute>  
  41.     </tag>  
  42. </taglib>  

 

 jsp页面:QueryTag.jsp

Java代码   收藏代码
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3.     <%@taglib uri="http://www.crazyit.org/querytaglib" prefix="mytag" %>  
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  5. <html>  
  6. <head>  
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  8. <title>Insert title here</title>  
  9. </head>  
  10. <body>  
  11. <mytag:queryTag  
  12.     driver="com.mysql.jdbc.Driver"  
  13.     url="jdbc:mysql://localhost:3306/javaee"  
  14.     user="root"  
  15.     pass="123"  
  16.     sql="select * from news_inf"  
  17.  />  
  18. </body>  
  19. </html>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园建设方案旨在通过融合先进技术,如物联网、大数据、人工智能等,实现校园的智能化管理与服务。政策的推动和技术的成熟为智慧校园的发展提供了基础。该方案强调了数据的重要性,提出通过数据的整合、开放和共享,构建产学研资用联动的服务体系,以促进校园的精细化治理。 智慧校园的核心建设任务包括数据标准体系和应用标准体系的建设,以及信息化安全与等级保护的实施。方案提出了一站式服务大厅和移动校园的概念,通过整合校内外资源,实现资源共享平台和产教融合就业平台的建设。此外,校园大脑的构建是实现智慧校园的关键,它涉及到数据心化、数据资产化和数据业务化,以数据驱动业务自动化和智能化。 技术应用方面,方案提出了物联网平台、5G网络、人工智能平台等新技术的融合应用,以打造多场景融合的智慧校园大脑。这包括智慧教室、智慧实验室、智慧图书馆、智慧党建等多领域的智能化应用,旨在提升教学、科研、管理和服务的效率和质量。 在实施层面,智慧校园建设需要统筹规划和分步实施,确保项目的可行性和有效性。方案提出了主题梳理、场景梳理和数据梳理的方法,以及现有技术支持和项目分级的考虑,以指导智慧校园的建设。 最后,智慧校园建设的成功依赖于开放、协同和融合的组织建设。通过战略咨询、分步实施、生态建设和短板补充,可以构建符合学校特色的生态链,实现智慧校园的长远发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值