<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-26  評論-44  文章-20  trackbacks-0
    開發環境:java5,myeclipse,tomcat。為了從基礎理解javaweb,采用jsp+servlet,沒用任何框架。
    源文件有四個包:
    com.yijia_ctgu.bean
    com.yijia_ctgu.DB
    com.yijia_ctgu.exception
    com.yijia_ctgu.servlet


    bean包含一個類:user.java。它從形式上是bean,但到底是不是嚴格意義的bean,我自己也不確定。我只是怎樣方便開發就怎樣寫。部分源文件如下:
    package com.yijia_ctgu.bean;

    import java.sql.SQLException;
    import java.util.List;

    import com.yijia_ctgu.DB.DBExcute;
    import com.yijia_ctgu.exception.NotQueryException;

    public class User {
      String username;
      String password;
      String ip;
      String mail;
      int authorize;
      DBExcute dbExcute=new DBExcute();
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword()throws SQLException,NotQueryException {
        String sql="select password from user where username='"+username+"' ";
        try{
            String password=dbExcute.queryString(sql);
            return password;
        }catch(NotQueryException ex){
            throw ex;
        }catch(SQLException ex){
            throw ex;
        }
    }
    public void setPassword(String password)throws SQLException {
        String sql="update user set password='"+password+"' where username='"+username+"'";
        try {
            dbExcute.update(sql);
        } catch (SQLException ex) {
            throw ex;
        }
    }
    public int getAuthorize()throws SQLException,NotQueryException {
        String sql="select authorize from user where username='"+username+"' ";
           try{
               String str=dbExcute.queryString(sql);
               int authorize=Integer.parseInt(str);
               return authorize;
           }catch(NotQueryException ex){
                throw ex;
            }catch(SQLException ex){
                throw ex;
            }
    }
    public void setAuthorize(int authorize)throws SQLException  {
        String sql="update user set authorize='"+authorize+"' where username='"+username+"'";
        try {
            dbExcute.update(sql);
        } catch (SQLException ex) {
            throw ex;
        }
    }
    public String getIp()throws SQLException,NotQueryException {
        String sql="select ip from user where username='"+username+"' ";
           try{
               String str=dbExcute.queryString(sql);
               return str;
           }catch(NotQueryException ex){
                throw ex;
            }catch(SQLException ex){
                throw ex;
            }
    }
    public void setIp(String ip)throws SQLException {
        String sql="update user set ip='"+ip+"' where username='"+username+"'";
        try {
            dbExcute.update(sql);
        } catch (SQLException ex) {
            throw ex;
        }
    }
    public String getMail()throws SQLException,NotQueryException {
        String sql="select ip from user where username='"+username+"' ";
           try{
               String str=dbExcute.queryString(sql);
               return str;
           }catch(NotQueryException ex){
                throw ex;
            }catch(SQLException ex){
                throw ex;
            }
    }
    public void setMail(String mail)throws SQLException {
        String sql="update user set mail='"+mail+"' where username='"+username+"'";
        try {
            dbExcute.update(sql);
        } catch (SQLException ex) {
            throw ex;
        }
    }
    public DBExcute getDbExcute() {
        return dbExcute;
    }
    public void setDbExcute(DBExcute dbExcute) {
        this.dbExcute = dbExcute;
    }
    }
    看到這里,你覺得它算不算做bean呢?

    DB包里的四個文件,DBExcute是原創的,其它的(數據庫連接部分)都是借用的。不知道我的DBExcute的重用性怎么樣?代碼如下:
    package com.yijia_ctgu.DB;

    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.List;
    import java.util.Vector;

    import org.apache.commons.beanutils.RowSetDynaClass;

    import com.yijia_ctgu.DB.DBConnect;
    import com.yijia_ctgu.exception.NotQueryException;
    public class DBExcute{
        Connection conn;
        String condition;
        Statement stm;
        ResultSet rs;
        public DBExcute(){}
        public void initize(){
             try{
                 if(conn==null){
                     conn=DBConnect.getConnection();
                 }
                 
                 if(stm==null){
                     stm=conn.createStatement();
                 }
             }
             catch(SQLException ex){
                 System.out.println("初始化錯誤");
             }
        }
         public void close(){
             try{
                 if(rs!=null) rs.close();
                 if(stm!=null)stm.close();
                 if(conn!=null)conn.close();
             }catch(SQLException ex){
                 System.out.println("關閉出錯");
             }
         }
         public String queryString(int i,String sql)throws SQLException,NotQueryException{
             initize();
             try{
                 String str=null;
                 rs=stm.executeQuery(sql);
                 //System.out.println("1");
                 if(rs.next()){
                     str=rs.getString(i);
                     return str;
                 }
                 else {
                     NotQueryException cex=new NotQueryException();
                     throw cex;
                 }
             }catch(SQLException ex){
                 System.out.println("異常拋出 :queryString of Service");
                 throw ex;
             }catch(NotQueryException cex){
                 System.out.println("notqurey異常 :queryString of Service");
                 throw cex;
             }    
             }
         public String queryString(String sql) throws SQLException,NotQueryException{
             return queryString(1,sql);
         }
         public List queryList(String sql)throws SQLException{
             initize();
             try{
                 rs=stm.executeQuery(sql);
                 RowSetDynaClass rsdc = new RowSetDynaClass(rs);
                 List list = rsdc.getRows();
                 return list;
             }catch(SQLException ex){
                 System.out.println("異常拋出 :queryList of Service");
                 throw ex;
             }
     }
         public boolean update(String sql)throws SQLException{
             initize();
             try{
                 stm.executeUpdate(sql);
                 return true;
             }catch(SQLException ex){
                 System.out.println("異常拋出 :update of Service");
                 throw ex;
             }
         }
         public static void main(String[] args){
             DBExcute dbExcute=new DBExcute();
             try{
                 String str=dbExcute.queryString(1,"select authorize from user where username='root' ");
                 System.out.println(str);
                 dbExcute.queryList("select authorize from user where username='root' ");
             }catch(Exception ex){
                 System.out.println("test failer");
             }
         }
    }

    exception包中是自定義的異常,起到了一點小作用。

    servlet中就不多說了,全是自己寫的,沒什么特別的地方。看它的時候注意session變量userList.

    jsp頁面:為了全面一點,修改和添加 是用鏈接實現的,搜索和刪除 是用表單完成的。還真看到問題了。用超鏈接 鏈接servlet來實現修改的時候總是看不出效果,原來鏈接過去的都是到doGet()方法,我想表單傳過去的默認的也是doGet()吧,這一點我沒查資料,不知道是不是這樣的?jsp頁面中同樣注意userList。

    現在只實現了用戶管理部分,如果有時間的話會繼續其它部分,那位同志有興趣的可以來完善它,本文附件附有源代碼。最后聲明:僅供學習,僅此而已。

    歡迎多提寶貴意見!

    附件說明
    開發工具:java5,myeclipse,tomcat。
    使用方法:把papermanage文件夾copy到..\Apache Software Foundation\Tomcat 6.0\webapps文件夾下
              登陸時用 用戶名:root(超級管理員),密碼:root 登陸才能看到 用戶管理的鏈接

    附件:  http://m.tkk7.com/Files/yijia/papermanage.rar
    沒找到上傳附件的地方,就先上傳文件上去,找復制鏈接到這里了。





    posted on 2008-06-13 09:42 開機 閱讀(1043) 評論(7)  編輯  收藏 所屬分類: jsp+javabeanjavaweb

    評論:
    # re: 自己動手做試卷管理系統-用戶管理部分 2008-06-18 17:42 | 無名氏
    異常處理有失偏頗  回復  更多評論
      
    # re: 自己動手做試卷管理系統-用戶管理部分[未登錄] 2008-08-12 16:28 | kevin
    import org.apache.commons.beanutils.RowSetDynaClass;
    這個是什么類,具體有什么作用!  回復  更多評論
      
    # re: 自己動手做試卷管理系統-用戶管理部分 2008-08-15 17:01 | 開機
    @kevin
    包裝數據庫返還的數據,Row是數據庫的一行記錄,set是集合的意思,Dyna好像是指延遲。

    以下是摘抄別人的:
    ResultSetDynaClass (Wraps ResultSet in DynaBeans)

    一個很普通的DynaBean 的USER CASE就是用它來包裝其他原始集合,這些集合不是以JAVABEAN的形式展示的。最常見的情況就是當你請求JDBC驅動查詢SQL語句返回java.sql.ResultSet類型的記錄的時候,BeanUtils提供了標準的機制來把每一行resultset轉變為一個 DynaBean,參照下列:

    Connection conn = ...;
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery
    ("select account_id, name from customers");
    Iterator rows = (new ResultSetDynaClass(rs)).iterator();
    while (rows.hasNext()) {
    DynaBean row = (DynaBean) rows.next();
    System.out.println("Account number is " +
    row.get("account_id") +
    " and name is " + row.get("name"));
    }
    rs.close();
    stmt.close();

    RowSetDynaClass (Disconnected ResultSet as DynaBeans)

    盡管ResultSetDynaClass是一個用來展示sql查詢的很好的技術(當成DynaBean),但是最大的問題就是在MVC的結構之中,我們需要離線的取出查詢的所有數據,而ResultSetDynaClass必須保持和數據庫相連。

    RowSetDynaClass 展示了解決這個問題的不同方法。當你構造這樣的實例,那些原始的數據被復制到一系列in-memory 的DynaBeans來代表這些結果。這個技術的優勢是,理所當然,你可以立即關閉ResultSet(和他相連的Statement),這些操作都可以在你處理被返回的數據之前。缺點就是,你需要為復制數據所需要的性能和內存買單,而且數據的大小還得讓堆內存可以適合。在許多情況下(特別是WEB APPS),這種折衷是有益處的。

    額外的方便就是,RowSetDynaClass 被定義為java.io.Serializable的實現,因此它可以被序列化和反序列化。因此RowSetDynaClass展示了一種十分便利的方法來傳輸SQL結果到遠程Java-based 客戶端應用程序(比如APPLET).

    基本的RowSetDynaClass使用模式如下所示:

    Connection conn = ...; // Acquire connection from pool
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT ...");
    RowSetDynaClass rsdc = new RowSetDynaClass(rs);
    rs.close();
    stmt.close();
    ...; // Return connection to pool
    List rows = rsdc.getRows();
    ...; // Process the rows as desired

    WrapDynaBean and WrapDynaClass



    對于這個類,我也不是很懂,只是知道怎樣用而已,希望我的回答會對你有幫助。  回復  更多評論
      
    # re: 自己動手做試卷管理系統-用戶管理部分 2008-08-15 17:12 | 開機
    你看的這里的代碼是以前的,最近由于在項目中的應用,代碼又增加了很多,完善了一些,尤其是操作數據庫的工具做成了和具體的數據庫無關的,有人說好有人說不安全,總之這算是創新吧(我自己是沒發現以往有象這樣做的,呵呵也許這樣并不是很好吧)。代碼在隨筆:自己動手做試卷管理系統-操作數據庫的工具 里可以看到,還有一篇隨筆: js帶來了改變 看了之后就明白什么是與具體的數據庫無關的工具了。  回復  更多評論
      
    # re: 自己動手做試卷管理系統-用戶管理部分[未登錄] 2009-01-02 22:43 | ZY
    請問一下,怎么用動態鏈表實現試卷管理系統呢?  回復  更多評論
      
    # re: 自己動手做試卷管理系統-用戶管理部分[未登錄] 2009-06-08 18:06 |
    分的  回復  更多評論
      
    # re: 自己動手做試卷管理系統-用戶管理部分[未登錄] 2009-06-08 18:06 |
    才  回復  更多評論
      
    主站蜘蛛池模板: 亚洲熟妇无码AV不卡在线播放 | 中文字幕影片免费在线观看| 久久亚洲AV无码精品色午夜 | 国产精品久久免费| 久久亚洲精品11p| 亚洲高清国产拍精品26U| 青春禁区视频在线观看直播免费| 亚洲av无码无线在线观看| 亚洲欧洲无码AV电影在线观看 | a一级毛片免费高清在线| 亚洲欧洲高清有无| 亚洲精品乱码久久久久久蜜桃| 无码av免费网站| 人妻仑刮八A级毛片免费看| 91亚洲国产成人精品下载| 国产无遮挡又黄又爽免费视频| 国产午夜成人免费看片无遮挡| 亚洲字幕AV一区二区三区四区| 国产亚洲精品无码拍拍拍色欲| 成年女人免费视频播放77777| 99re6在线视频精品免费| 大桥未久亚洲无av码在线| 久久av无码专区亚洲av桃花岛| 免费A级毛片在线播放不收费| 67194成手机免费观看| 一级特黄aaa大片免费看| 亚洲一久久久久久久久| 亚洲成人在线电影| 最新69国产成人精品免费视频动漫 | 最近中文字幕电影大全免费版| 美女免费视频一区二区| 亚洲精品456在线播放| 亚洲日韩精品射精日| 国产成人无码区免费A∨视频网站 国产成人涩涩涩视频在线观看免费 | 33333在线亚洲| 久久久久亚洲精品美女| 亚洲人成影院在线观看| 成年性羞羞视频免费观看无限| 久久午夜夜伦鲁鲁片免费无码| av午夜福利一片免费看久久| 久久亚洲精品高潮综合色a片|