萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> jsp編程 >> JSP自定義標簽開發入門

JSP自定義標簽開發入門

   一般情況下開發jsp自定義標簽需要引用以下兩個包

import javax.servlet.jsp.*;

import javax.servlet.jsp.tagext.*;

首先我們需要大致了解開發自定義標簽所涉及到的接口與類的層次結構(其中SimpleTag接口與SimpleTagSupport類是JSP2.0中新引入的)。

 

 

目標1:自定義一個用表格顯示用戶信息的簡單標簽

效果圖:

 

 

在jsp頁面使用此自定義標簽:

假設我們有一個UserInfo的javabean,那麼在JSP頁面使用此標簽只需調用此標簽即可

  1. <!-- 創建需要展現UserInfo的實例(用於測試數據) --> 
  2.     <%  
  3.     UserInfo user = new UserInfo();  
  4.     user.setUserName("Xuwei");  
  5.     user.setAge(33);  
  6.     user.setEmail("[email protected]");  
  7.     pageContext.setAttribute("userinfo", user);    
  8.     %> 
  9.    
  10.     <!-- 給標簽設置user屬性綁定要展現的UserInfo對象  --> 
  11.     <cc:showUserInfo user="${pageScope.userinfo }" /> 

開發步驟:

簡單標簽的開發我們只要實現Tag接口即可,為了簡單起見可以直接繼承實現了此接口的TagSupport類

1 創建自定義標簽類

  1. public class UserInfoTag extends TagSupport {  
  2.      
  3.     private UserInfo user;  
  4.    
  5.     @Override  
  6.     public int doStartTag() throws JspException {  
  7.         try {  
  8.             JspWriter out = this.pageContext.getOut();  
  9.             if(user == null) {  
  10.                 out.println("No UserInfo Found...");  
  11.             &


nbsp;   return SKIP_BODY;  

  •             }  
  •             out.println("<table width='500px' border='1' align='center'>");  
  •             out.println("<tr>");  
  •             out.println("<td width='20%'>Username:</td>");  
  •             out.println("<td>" + user.getUserName() + "</td>");  
  •             out.println("</tr>");  
  •             out.println("<tr>");  
  •             out.println("<td>Age:</td>");  
  •             out.println("<td>" + user.getAge() + "</td>");  
  •             out.println("</tr>");  
  •             out.println("<tr>");  
  •             out.println("<td>Email:</td>");  
  •             out.println("<td>" + user.getEmail() + "</td>");  
  •             out.println("</tr>");  
  •             out.println("</table>");  
  •         } catch(Exception e) {  
  •             throw new JspException(e.getMessage());  
  •         }  
  •         return SKIP_BODY;  
  •     }  
  •      
  •     @Override  
  •     public int doEndTag() throws JspException {  
  •    &nbs


p;    return EVAL_PAGE;  

  •     }  
  •    
  •     @Override  
  •     public void release() {  
  •         super.release();  
  •         this.user = null;  
  •     }  
  •      
  •     //getter and setters  
  •     public UserInfo getUser() {  
  •         return user;  
  •     }  
  •     public void setUser(UserInfo user) {  
  •         this.user = user;  
  •     }  
  • }  
  •   

2 在Web-Inf創建標簽庫描述文件.tdl(Tag Library Description)

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <taglib version="2.0" 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 web-jsptaglibrary_2_0.xsd"> 
  5. <tlib-version>
copyright © 萬盛學電腦網 all rights reserved