程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> JSP標簽自定義(2)---getProperty

JSP標簽自定義(2)---getProperty

編輯:關於JSP

這次要實現的是getProperty標簽。主要知識點是怎麼用反射去調用實例中的方法。重要部分已用注釋標注。

/**
* 類說明:標簽處理類,仿jsp(SUN企業級應用的首選)的getProperty標簽
* 創建日期:2004-7-2
* 修改日期:2004-7-2
* 創建人: dever
*/

package cn.dever.tag;
import javax.servlet.jsp(SUN企業級應用的首選).*;
import javax.servlet.jsp(SUN企業級應用的首選).tagext.*;
import java.lang.reflect.*;

public class GetProperty extends TagSupport
{
 private String name;  //得到類名稱
 private String property; //得以屬性名
 private String method; //返回屬性的方法名
 private String result; //最終輸出結果
 
 public void setName(String s) {
     this.name = s;
   } 
 public String getName(){return this.name;}
  
 public void setProperty(String property)
 {
  this.property = property;//將屬性名轉換成獲得屬性的方法名
  int length = property.length();
  String temp=property.substring(0,1).toUpperCase()+property.substring(1,length);
  this.method="get"+temp;
 }
 public String getProperty(){return this.property;}


 public int doStartTag() throws jsp(SUN企業級應用的首選)TagException 
 {
   
  try{
   
   Object getInstance=pageContext.getAttribute(name); //得到類的實例
   Class insClass = getInstance.getClass();
   
   Class[] typeParameter = new Class[]{}; //定義方法的參數類型數組
   Method methInstance = insClass.getMethod(method,typeParameter); //根據方法名稱得到一個方法實例
   Object[] objParameter = new Object[]{}; //被調用方法的參數數組
   result = methInstance.invoke(getInstance,objParameter).toString(); //在類實例中調用方法,得到串行化後的字符串
   
  }
  catch(Illegalaccess(小型網站之最愛)Exception e){
   System.out.print("Illegal access(小型網站之最愛) Error!");
  }
  catch(NoSuchMethodException e){
   throw new jsp(SUN企業級應用的首選)TagException(method+"() is not exist!");
  }
  catch(InvocationTargetException e){
   System.out.print("Invocation Target Error!");
  }
  catch(NullPointerException e){
   result="null";
  }
  
     return EVAL_BODY_INCLUDE;
  }
    
    public int doEndTag() throws jsp(SUN企業級應用的首選)TagException
    {
     try{
   jsp(SUN企業級應用的首選)Writer out = pageContext.getOut(); //輸出得到的結果
   out.println(result);
     }
  catch(java.io.IOException e){
   System.out.println("IO Error !");
  }
  
        return EVAL_PAGE; 
    }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved