struts自訂標籤學習(三)

來源:互聯網
上載者:User

       整理下早上學習的一點點東西,一個自訂標籤的例子。之所以要堅持做筆記,我想最大的原因就是學完老是忘了,忘了又得重新 看視頻、查資料、百度。。。而且自己整理的話,也會讓記憶持久一些。
     例子:查詢所有學生的資料(學號,姓名,性別,出生年月,家庭地址)
     建立項目xxx,因為是自訂標籤,所以就不用引入Struts的包了。
     第一步:在tags包下,建立Java類,需繼承javax.servlet.jsp.tagext.TagSupport,並編寫代碼如下:

Code:
  1. package tags;   
  2.   
  3. import java.io.IOException;   
  4. import java.util.ArrayList;   
  5.   
  6. import javax.servlet.jsp.JspException;   
  7. import javax.servlet.jsp.JspWriter;   
  8. import javax.servlet.jsp.tagext.TagSupport;   
  9.   
  10. import po.Student;   
  11.   
  12. import dao.StudentDao;   
  13.   
  14. //自訂標籤的規範   該標籤的功能:顯示所有的學生的詳細資料   
  15. //1、繼承:javax.servlet.jsp.tagext.TagSupport   
  16. //2、重寫方法doEndTag和doStartTag(系統自動調用)   
  17.   
  18. public class DisplayAllTags extends TagSupport {   
  19.     private static final long serialVersionUID = 1L;   
  20.   
  21.     public DisplayAllTags() {   
  22.         System.out.println("displayaddtags 建構函式");   
  23.     }   
  24.   
  25.     public int doStartTag() throws JspException {   
  26.         System.out.println("doStartTag函數");   
  27.            
  28.         return SKIP_BODY;  //不實現標籤的體,即空體標籤。   
  29.     }   
  30.   
  31.     public int doEndTag() throws JspException {   
  32.         System.out.println("doEndTag函數");   
  33.         //查詢資料庫   
  34.         StudentDao studentDao=new StudentDao();   
  35.         ArrayList arrayList=(ArrayList)studentDao.queryStus();   
  36.            
  37.         //通過父類TagSupport的屬性值pageContext 取得相關的內建對象   
  38.         JspWriter out=pageContext.getOut();   
  39.         //遍曆迴圈列印。   
  40.        
  41.         try {   
  42.             out.println("<table>");   
  43.             out.println("<tr>");   
  44.             out.println("<td>學號</td>");   
  45.             out.println("<td>姓名</td>");   
  46.             out.println("<td>性別</td>");   
  47.             out.println("<td>出生年月</td>");   
  48.             out.println("<td>家庭住址</td>");   
  49.             out.println("</tr>");   
  50.             for(int i=0;i<arrayList.size();i++){   
  51.                 Student student=(Student)arrayList.get(i);   
  52.                 out.println("<tr>");   
  53.                 out.println("<td>"+student.getStuId()+"</td>");   
  54.                 out.println("<td>"+student.getStuName()+"</td>");   
  55.                 out.println("<td>"+student.getStuSex()+"</td>");   
  56.                 out.println("<td>"+student.getStuBir()+"</td>");   
  57.                 out.println("<td>"+student.getStuAdd()+"</td>");   
  58.                 out.println("</tr>");   
  59.             }   
  60.             out.println("<table>");   
  61.         } catch (IOException e) {   
  62.             e.printStackTrace();   
  63.         }   
  64.                
  65.         //=============pageContext還可以get更多的內建對象。   
  66. //      pageContext.getRequest();   
  67. //      pageContext.getResponse();   
  68. //      pageContext.getSession();   
  69. //      pageContext.getServletContext();   
  70.         return EVAL_PAGE;   //   
  71.     }   
  72.   
  73. }   

     第二步:在 webroot→web-inf下建立一個.tld檔案(右鍵new file就OK了),並編寫代碼如下:

Code:
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">  
  3. <taglib>     <!-- 自訂庫標籤的根 -->  
  4. <tlibversion>1.2</tlibversion>     <!-- 版本號碼 -->  
  5. <jspversion>1.1</jspversion>       <!-- JSP版本號碼 -->  
  6. <shortname>displaytags</shortname>        <!-- 標籤名稱-->  
  7. <uri>displaytags</uri>   <!-- 外界匯入標籤時,認識的名字,很重要。-->  
  8.   
  9. <tag>  
  10.  <name>displayAll</name>                            <!-- 標籤名稱 -->  
  11.  <tagclass>tags.DisplayAllTags</tagclass>          <!-- 對應的類 -->  
  12. </tag>  
  13.   
  14. <!-- 有屬性的標籤 -->  
  15.   <tag>  
  16.        <name>displayBySex</name>  
  17.         <tagclass>tags.DisplayBySexTags</tagclass>  
  18.         <attribute>   <!-- 對應標籤的屬性。 -->  
  19.              <name>sex</name>  
  20.              <required>true</required>  <!-- 是必需寫的屬性,即沒有寫屬性標籤不能被正常使用 -->  
  21.         </attribute>         
  22.    </tag>  
  23.   
  24. <!-- 1.兩個屬性 2.屬性不是必需  3.屬性可以用變數來賦值 -->  
  25.    <tag>  
  26.     <name>displayBySA</name>  
  27.     <tagclass>tags.DisplayBySAtags</tagclass>  
  28.     <attribute>  
  29.          <name>sex</name>  
  30.          <required>false</required>  
  31.      </attribute>  
  32.      <attribute>  
  33.          <name>add</name>  
  34.          <required>true</required>  
  35.          <rtexprvalue>true</rtexprvalue>  <!-- true:可以用運算式來表示 -->  
  36.      </attribute>  
  37.    </tag>  
  38. </taglib>  

     第三步:編寫jsp頁面,代碼如下:

Code:
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>   
  2. <%@ taglib uri="displaytags" prefix="stu"%>   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   
  4.   
  5. <html>   
  6.   <head>   
  7.     <title>測試自訂標籤</title>   
  8.   </head>   
  9.   <body>   
  10.           列印學生的名單<br>   
  11.     <stu:displayAll></stu:displayAll>   
  12.     <br>列印學生的名單(一個屬性的測試)<br>   
  13.     <stu:displayBySex sex="男"></stu:displayBySex>   
  14.     <br>列印學生的名單(兩個屬性的測試)<br>   
  15.     <stu:displayBySA add="上海"></stu:displayBySA>   
  16.   </body>   
  17. </html>   

     大概的流程就這樣子。其中還用到的dao.Student類(負責與資料庫互動)和po.Student(javabean);還有DisplayBySexTags.java和DispalyBySATags.java  與DisplayAllTags.java差不多。
     源碼:http://u.115.com/file/f26bbf3eea

============================視頻學習筆記=========

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.