熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

類反射簡化Struts應用程序的開發(二)

2013-11-23 20:21:00  來源: Java開源技術 

  如何應用類反射機制簡化Struts應用程序的開發: 先定義Action FormBean: package combhskywebissystem; import orgapachestrutsaction*; import javaxservlethttp*;    public class UsersActionForm extends ActionForm { private String usr_id; private String usr_name; public void setUsr_id(String usr_id) {   thisusr_id = usr_id; } public String getUsr_id() {   return usr_id; } public String getUsr_memo() {   return usr_memo; } public void setUsr_name(String usr_name) {   thisusr_name = usr_name; } } 編寫通用的為ActionFormBean賦值的方法 /////////////////////////////////////////////////////////////////////////////   //Function: 完成ResultSet對象向ArrayList對象為集合的對象的轉化   //Para:sql指定的查詢Sql   //Para:classNameSql相對應得JavaBean/FormBean類的名字   //Return:以類className為一條記錄的結果集完成ResultSet對象向ArrayList對象為集   //合的className對象的轉化  //////////////////////////////////////////////////////////////////////////////  public ArrayList Select(String sqlString className){   ArrayList paraList=new ArrayList();   try{    if (conn == null){     Connection();    }    PreparedStatement stmt = connprepareStatement(sql);    ResultSet rs = stmtexecuteQuery();    String recordValue=;    Object c=null;    paraList=new ArrayList();    ResultSetMetaData rsmd = rsgetMetaData();    int columnCount = rsmdgetColumnCount();    while (rsnext()){      c=ClassforName(className)newInstance();      for (int i=; i<=columnCount; i++) {       if(rs.getString(rsmd.getColumnName(i))!=null){        recordValue=rs.getString(rsmd.getColumnName(i));       }else{        recordValue="";       } Method m=c1.getClass().getMethod(getSetMethodName(rsmd.getColumnName(i)), new Class[]{recordValue.getClass()});       m.invoke (c1, new Object[]{recordValue});      }      paraList.add(c1);    }   }catch(SQLException ex){     }catch(ClassNotFoundException e){ }catch(NoSuchMethodException e) { }catch(InvocationTargetException e){ }catch (IllegalAccessException e){ }catch(InstantiationException e){ } finaly{     closeConnection(); return paraList; }  } 3、 在JavaBean封裝的商業邏輯中調用Select 方法,然後在JSP頁面上顯示出來: //Function:取得用戶列表  //Para:  //Return:返回用戶列表  /////////////////////////////////////////////////////////////////////////////  public ArrayList getUsers(){    ArrayList ret=null;    DatabaseManage db=new DatabaseManage();    String sql=" select usr_id,usr_name "      +" from users " ;    ret=db.Select(sql," com.bhsky. webis.system.UsersActionForm");    return ret;  } 4、 在Action的execute方法中調用getUsers()方法: public ActionForward execute(       ActionMapping actionMapping,       ActionForm actionForm,       HttpServletRequest request,       HttpServletResponse httpServletResponse)   {   /**@todo: complete the business logic here, this is just a skeleton.*/   UsersActionForm uaf=(UsersActionForm)actionForm;   SystemService ubb=new SystemService();   ArrayList userList=ubb.getUsers();   request.setAttribute("userList",userList);   ActionForward actionForward=actionMapping.findForward(url);   return actionForward;  } 5、 在JSP中顯示:  用戶ID  姓 名                四、結語: 我們通過運用類反射機制,在一個Struts應用開發中,完成了一個通用查詢方法的實現。tw.wiNgwit.CoM它使得程序員擺脫了在每個應用程序中都要編寫枯燥的set、get等方法來訪問ActionForm Bean,從而簡化了Struts應用程序的開發。
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28348.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.