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

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

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

    雅典之夏的小站
    知人者智 自知者明 Fighting!!

    本文主要參考了,JSP+javabean循序漸進(jìn)

    開發(fā)平臺(tái):winxp+tomcat4+mysql+javabean

    在實(shí)現(xiàn)在了用servlet注冊(cè)還有登錄以后,打算做一個(gè)注冊(cè)頁(yè)面

    首先創(chuàng)建一個(gè)表:username VARCHAR2(20) 用戶名
    password VARCHAR2(20) 密碼
    email VARCHAR2(30) Email地址
    homepage VARCHAR2(50) 主頁(yè)
    signs VARCHAR2(200) 簽名
    regtime DATE 注冊(cè)時(shí)  ?。@個(gè)date我沒有實(shí)現(xiàn)

    主要有三個(gè)jsp頁(yè)面:

    addnewuser.jsp,主要用來實(shí)現(xiàn)注冊(cè)用戶的界面,

    doadduser.jsp 實(shí)現(xiàn)填加到數(shù)據(jù)庫(kù)中的具體功能

    listuser.jsp 來實(shí)現(xiàn)顯示所有用戶信息

    兩個(gè)bean:

    db.java實(shí)現(xiàn)數(shù)據(jù)庫(kù)的操作,主要有兩個(gè)方法public ResultSet executeQuery(sql)返回rs用來進(jìn)行記錄的查詢

    public boolean executeUpdate(String sql)用來進(jìn)行記錄的更新

    adduser.java繼承了db類用來提供所需更新和查詢的sql語(yǔ)句;

    我直接調(diào)用原文的代碼時(shí)后發(fā)現(xiàn)調(diào)用了span什么,不太懂,而且有很多字符不對(duì),所以調(diào)試時(shí)的問題基本上都是html代碼的問題.這是一個(gè)僅有基本功能,很多方面還需進(jìn)一步完善,比如實(shí)現(xiàn)注冊(cè)時(shí)間(雖然這不難,可是我還沒看util.date和sql.date 區(qū)別),email地址的識(shí)別,連登錄都沒有做 :) ,我發(fā)現(xiàn)基于這種bean結(jié)構(gòu)的功能很吸引人,比servlet要好,膚淺之見

    源碼如下:db.java

    package rkind;
    import java.net.*;
    import java.sql.*;
    import java.lang.*;
    import java.io.*;
    import java.util.*;
    public class db {
    //成員變量初始化
    Connection conn = null; //數(shù)據(jù)庫(kù)連接
    ResultSet rs = null; //記錄集
    String Username=""; //用戶名
    String Password=""; //密碼
    String Email=""; //email
    String Homepage=""; //主頁(yè)
    String Signs=""; //簽名
    String url="jdbc:mysql://172.20.0.73/rk";

    //db的構(gòu)建器
    public db() {
     try {
    //注冊(cè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序?yàn)镺racle驅(qū)動(dòng)
      String name="org.gjt.mm.mysql.Driver";
      Class.forName(name);
      conn = DriverManager.getConnection(url,"root","你的密碼");
      System.out.println("success");
      }
     catch(Exception e) {
    //這樣寫是為了方便調(diào)試程序,出錯(cuò)打印mydb()就知道在什么地方出錯(cuò)了
      System.err.println("mydb(): " + e.getMessage());
      
     }
     }

    //executeQuery方法用于進(jìn)行記錄的查詢操作

    //入口參數(shù)為sql語(yǔ)句,返回ResultSet對(duì)象
     public ResultSet executeQuery(String sql) {
      rs = null;
      try {
    //建立數(shù)據(jù)庫(kù)連接,使用Oracle的一種thin連接方式,demo為主機(jī)名字,demodb為數(shù)據(jù)庫(kù),后面的兩個(gè)
    //demo為用戶名和密碼
      
      
      Statement stmt = conn.createStatement();
    //執(zhí)行數(shù)據(jù)庫(kù)查詢操作
      rs = stmt.executeQuery(sql);
      }
      catch(SQLException ex) {
       System.err.println("db.executeQuery: " + ex.getMessage());
      }
      return rs;
     }
    //executeUpdate方法用于進(jìn)行add或者update記錄的操作

    //入口參數(shù)為sql語(yǔ)句,成功返回true,否則為false
     public boolean executeUpdate(String sql) {
      boolean bupdate=false;
      rs = null;
      try {
    //建立數(shù)據(jù)庫(kù)連接,其它參數(shù)說明同上面的一樣
      
      Statement stmt = conn.createStatement();
      int rowCount = stmt.executeUpdate(sql);
    //如果不成功,bupdate就會(huì)返回0
      if(rowCount!=0)bupdate=true;
      }
      catch(SQLException ex) {
    //打印出錯(cuò)信息
       System.err.println("db.executeUpdate: " + ex.getMessage());
      }
     return bupdate;
     }

    //toChinese方法用于將一個(gè)字符串進(jìn)行中文處理

    //否則將會(huì)是???這樣的字符串
     public static String toChinese(String strvalue) {
      try{
       if(strvalue==null)
      {
      return null;
      }
      else {
       strvalue = new String(strvalue.getBytes("ISO8859_1"), "GBK");
       return strvalue;
      }
      }catch(Exception e){
       return null;
      }
     }

    }

    adduser.java

    package rkind;
    import java.sql.*;
    import java.lang.*;
    import java.util.Date;
    //adduser由db派生出來,擁有db的成員變量和方法
     public class adduser extends db {
    //構(gòu)建器
     public boolean addNewUser(){
     boolean boadduser=false;
     try {
    //進(jìn)行用戶注冊(cè)的記錄添加操作,生成sql語(yǔ)句
     
      String sSql=new String("insert into demo(username,password,email,homepage, signs)");
      sSql=sSql+ " values('"+Username+"','"+Password+"','"+Email+"','"+Homepage +"','"+Signs+"')";
    //一種調(diào)試的方法,可以打印出sql語(yǔ)句,以便于查看錯(cuò)誤
      System.out.println(sSql);
    //調(diào)用父類的executeUpdate方法,并根據(jù)成功以否來設(shè)置返回值
      if(super.executeUpdate(sSql))boadduser=true;
      }
     catch(Exception ex) {
    //出錯(cuò)處理
      System.err.println("adduser.addNewUser: " + ex.getMessage());
     }finally{
    //無論是否出錯(cuò),都要返回值
     return boadduser;
     }
    }

    //checkUser()方法用來檢查用戶名是否重復(fù)

    //如果重復(fù)返回一個(gè)false
     public boolean checkUser(){
      boolean boadduser=false;
      try {
    //構(gòu)建sql查詢語(yǔ)句
       String sSql="select * from demo where username='"+Username+"'";
    //調(diào)用父類的executeQuery方法
       if((super.executeQuery(sSql)).next()){
    //查詢出來的記錄集為空
       boadduser=false;
       }else{
        boadduser=true;
       }
      }
      catch(Exception ex) {
    //出錯(cuò)處理
       System.err.println("adduser.addNewUser: " + ex.getMessage());
      }finally{
    //返回值
       return boadduser;
      }
     }
     public String getUsername(){ return Username;}
     public void setUsername(String newUsername){
    //用戶名有可能是中文,需要進(jìn)行轉(zhuǎn)換
      Username =db.toChinese(newUsername);}
    //屬性密碼Password的get/set方法
      public String getPassword(){
      return Password;}
      public void setPassword(String newPassword){ Password = newPassword;}
    //屬性Email的get/set方法
      public String getEmail(){ return Email;}
      public void setEmail(String newEmail){ Email = newEmail;}
    //屬性主頁(yè)Homepage的get/set方法
      public String getHomepage(){ return Homepage;}
      public void setHomepage(String newHomepage){ Homepage = newHomepage;}
    //屬性主頁(yè)Signs的get/set方法
      public String getSigns(){ return Signs;}
      public void setSigns(String newSigns){
    //簽名有可能是中文,需要進(jìn)行轉(zhuǎn)換
      Signs = db.toChinese(newSigns);}
    }
    newuser.jsp

    <%@ page contentType="text/html;charset=gb2312"%>
    <% response.setHeader("Expires","0"); %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
    <meta name="ProgId" content="FrontPage.Editor.Document">
    <title>新用戶注冊(cè) </title>
    </head>
    <body bgcolor="#FFFAD9">
    <script language="JavaScript">

    function valid(form)

    {
        if(form.username.value.length==0)
       {
            alert("Please enter username!");
            form.username.focus();
            return false;
        }
        if(form.Password.value==form.password1.value){
         alert("你輸入的驗(yàn)證密碼不正確");
         form.password1.focus(); 
        }
    }
    </script>
    <p align="center"><font color="#8484FF"><strong><big>新個(gè)人
    用戶注冊(cè) </font>
    <form onsubmit="return valid(this)" method="POST"  name="formreg" action="donewuser.jsp">
    <div align="center"><center> 
    <table width="49%" height="281"
    border="1"
    cellspacing="0">
        <tr>
          <td width="27%" bgcolor="#DDDDFF" align="center">用戶名:
            <td width="73%" bgcolor="#DDDDFF"><input type="text"
    name="username" size="20" >
                    <font color="#00CCFF"><b>* </b></font>        
        </tr>
        <tr>
          <td width="27%" bgcolor="#DDDDFF" align="center">輸入密碼:
            <td width="73%" bgcolor="#DDDDFF"><input type="password" name="password" size="20"
    >
                    <font color="#FF0000"><b>* </b></font>        
        </tr>
        <tr>
          <td width="27%" bgcolor="#DDDDFF" align="center">校驗(yàn)密碼:
            <td width="73%" bgcolor="#DDDDFF"><input type="password" name="password1" size="20"
    >
                    <font color="#FF0000"><b>* </b></font>        
        </tr>
        <tr>
          <td width="27%" bgcolor="#DDDDFF" align="center">E-mail
            <td width="73%" bgcolor="#DDDDFF"><input type="text" name="email" size="20" >
                    <font color="#FF0000">* </font>        
        </tr>
        <tr>
          <td width="27%" bgcolor="#DDDDFF" align="center">主頁(yè)地址:
            <td width="73%" bgcolor="#DDDDFF"><input type="text" name="homepage" size="20"
     value="http://">
          </tr>
        <tr>
          <td width="100%" height="20" colspan="2" bgcolor="#DDDDFF"><br>
              <center>
                <font color="red"><b>介紹自己: (介紹自己,不能超過120字)</span></b></font>
            </center>    </tr>
      <td width="70%">
      <tr>
        <td><textarea rows="6"
    name="signs" cols="30" ></textarea>
      </tr>
      <tr>
        <td width="30%" bgcolor="#DDDDFF" colspan="2"><center>
            <p>
              <input
    type="submit" value="遞交" onClick="return checkmsg();" name="B1" >
              <input type="reset" value="清除" name="B2" >
          </center>
      </tr>
      </table>
      </div>

    </form>

    <hr size="1" color="#FF0000">
    <p align="center">Better View:800*600 Best View:1024x768
    為了本系統(tǒng)能夠更好的為您服務(wù),請(qǐng)使用IE4.0或以上版本瀏覽器
    <font color="#000000"></font><a href="javascript:%20newGuide("copyright.htm")"
    target="_self">版權(quán)所有 </a>


    </body>
    </html>

    listuser.jsp

    <%@ page contentType="text/html;charset=gb2312"%>
    <% response.setHeader("Expires","0"); %>
    <%@ page import="java.sql.ResultSet" %>
    <%@ page import="org.gjt.mm.mysql.Driver.*" %>
    <!--生成一個(gè)JavaBean:lyf.db的實(shí)例-->
    <jsp:useBean id="db" class="rkind.db" scope="request"/>
    <jsp:setProperty name="db" property="*"/>
    <%

    java.lang.String strSQL; //SQL語(yǔ)句

    int intPageSize; //一頁(yè)顯示的記錄數(shù)
    int intRowCount; //記錄總數(shù)
    int intPageCount; //總頁(yè)數(shù)
    int intPage; //待顯示頁(yè)碼
    java.lang.String strPage;
    int i,j,k;
    //設(shè)置一頁(yè)顯示的記錄數(shù)
    intPageSize = 15;
    //取得待顯示頁(yè)碼
    strPage = request.getParameter("page");
    if(strPage==null){//表明在QueryString中沒有page這一個(gè)參數(shù),此時(shí)顯示第一頁(yè)數(shù)據(jù)
    intPage = 1;
    }
    else{//將字符串轉(zhuǎn)換成整型
    intPage = java.lang.Integer.parseInt(strPage);
    if(intPage<1) intPage = 1;
    }
    //獲取記錄總數(shù)
    strSQL = "select count(*) from demo";
    ResultSet result = db.executeQuery(strSQL); //執(zhí)行SQL語(yǔ)句并取得結(jié)果集
    result.next(); //記錄集剛打開的時(shí)候,指針位于第一條記錄之前
    intRowCount = result.getInt(1);
    result.close(); //關(guān)閉結(jié)果集
    //記算總頁(yè)數(shù)
    intPageCount = (intRowCount+intPageSize-1) / intPageSize;
    //調(diào)整待顯示的頁(yè)碼
    if(intPage>intPageCount) intPage = intPageCount;
    strSQL="select * from demo ";
    //執(zhí)行SQL語(yǔ)句并取得結(jié)果集
    result = db.executeQuery(strSQL);
    //將記錄指針定位到待顯示頁(yè)的第一條記錄上
    i = (intPage-1) * intPageSize;
    for(j=0;j<i;j++) result.next();
    %>
    <html>
    <head>
    <meta http-equiv="Content-Language" content="zh-cn">
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <meta name="GENERATOR" content="Microsoft FrontPage 3.0">
    <meta name="ProgId" content="FrontPage.Editor.Document">
    <title>用戶列表</title>
    </head>
    <body bgcolor="#FFEBBD">
    <div align="center"><center>
    <table border="1"
    borderColorDark="#FFFFFF" borderColorLight="#000000" cellspacing="0" height="22"
    width="100%">
    <tr bgcolor="#FFEBAD">
    <td height="1" width="691" class="main">
    第<%=intPage%>頁(yè) 共<%=intPageCount%>頁(yè)
    <a href="listuser.jsp?page=0">首頁(yè)</a>
    <%if(intPage>1){%><a href="listuser.jsp?page=<%=intPage-1%>">上一頁(yè)</a><%}%>
    <%if(intPage<=1){%>上一頁(yè)<%}%>
    <%if(intPage<intPageCount){%><a href="listuser.jsp?page=<%=intPage+1%>">下一頁(yè)</a><%}%>
    <%if(intPage>=intPageCount){%>下一頁(yè)<%}%>
    <a href="listuser.jsp?page=<%=intPageCount%>">尾頁(yè)</a>
    第<input type="text" class="main" name="page" size="3" value="<%=intPage%>" tabindex="1">頁(yè)<input type="submit" class="main" value="go" name="B1" tabindex="2"><class="main">
    </td></tr></table></form>


    <table border="1" width="100%" cellspacing="0" bordercolorlight="#000000"
    bordercolordark="#FFFFFF" class="main">
    <tr bgcolor="#FFEBAD">
    <td >
    <div align="left">用戶名</div>
    </td>
    <td >
    <p align="center">Email
    </td>
    <td >
    <p align="center">主頁(yè)
    </td>
    <td>
    <p align="center">登記時(shí)間
    </td>
    <td>
    <p align="center">說明
    </td>
    </tr>
    <%
    //顯示數(shù)據(jù)
    i = 0;
    while(i<intPageSize && result.next()){
    %>
    <tr bgcolor="#FFEBAD">
    <td>
    <div align="left"><%=result.getString("username") %></div></td>
    <td><div align="center"><%=result.getString("email") %></a></div></td>
    <td><div align="center"><font color="#0000CC"><%=result.getString("homepage") %></font></div></td>
    <td><div align="center"><font color="#FF6666"><%=result.getDate("regtime") %></font></div></td>
    <td><div align="center"><font color="#0000FF"><%=result.getString("signs") %></font></div></td></tr>
    <%
    i++;
    }
    %>
    </table>
    <% result.close(); //關(guān)閉結(jié)果集%>
    </body>
    </html>

    donewuser.jsp

    <%@ page contentType="text/html;charset=gb2312"%>
    <% response.setHeader("Expires","0"); %>
    <!--生成一個(gè)JavaBean:lyf.adduser的實(shí)例,id為adduser,生存范圍為page-->
    <jsp:useBean id="adduser" class="rkind.adduser" scope="page"/>

       <!--設(shè)置JavaBean中各個(gè)屬性的值,這會(huì)調(diào)用JavaBean中各個(gè)屬性的set方法,以便JavaBean得到正確的屬性值,”*”代表進(jìn)行所有屬性的匹配-->

    <jsp:setProperty name="adduser" property="*"/>
    <html>
    <head>
    <meta http-equiv="Content-Language" content="zh-cn">
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <meta name="GENERATOR" content="Microsoft FrontPage 3.0">
    <meta name="ProgId" content="FrontPage.Editor.Document">
    <title>用戶添加</title>
    </head>
    <body bgcolor="#FFEBBD">
    <div align="center"><center>
    <%
    //調(diào)用lyf.adduser的checkUser()方法檢查是否有重復(fù)的用戶名

    //如果有重復(fù)就顯示對(duì)應(yīng)的信息

    if(!adduser.checkUser())
    {
    //頁(yè)面文字輸出信息,使用jsp內(nèi)置對(duì)象out的println方法,相當(dāng)于asp中的response.write方法

    out.println("對(duì)不起,這個(gè)用戶名"+adduser.getUsername()+"已經(jīng)被申請(qǐng)了,請(qǐng)重新選擇!");
    //return代表返回,運(yùn)行時(shí)候碰到return就不會(huì)進(jìn)行下面的處理了,功能相當(dāng)于asp中的response.end

    return;
    }
    %>
    <%
    //如果沒有用戶名重復(fù)的問題,調(diào)用lyf.adduser的addNewUser()方法來將用戶數(shù)據(jù)添加到數(shù)據(jù)庫(kù)中,并根據(jù)數(shù)據(jù)添加成功否來顯示對(duì)應(yīng)的信息
    if(adduser.addNewUser()){
    %>
    <H2>添加用戶成功!</P>
    <%}else{%>
    <H2>添加用戶失敗,請(qǐng)和管理員聯(lián)系!</P>
    <%}%>
    </BODY>
    </HTML>

    posted on 2005-10-27 12:56 rkind 閱讀(1260) 評(píng)論(0)  編輯  收藏 所屬分類: JSP&Servlet
    主站蜘蛛池模板: 牛牛在线精品观看免费正 | 一级毛片免费不卡直观看| 亚洲国产一级在线观看| 国产偷伦视频免费观看| 亚洲欧洲日本国产| 亚洲成人一区二区| 免费A级毛片无码A∨免费| 国产成人+综合亚洲+天堂| 亚洲2022国产成人精品无码区 | 91在线手机精品免费观看| 亚洲男人的天堂网站| 亚洲国产精华液网站w| 免费a级毛片无码a∨蜜芽试看 | 美女视频黄是免费的网址| 色吊丝性永久免费看码 | 亚欧洲精品在线视频免费观看| 久久久久亚洲AV无码麻豆| 免费一级毛片正在播放| 99精品在线免费观看| 一级特黄a大片免费| 亚洲一区二区三区在线观看蜜桃| 亚洲精品在线视频| 毛片免费观看网站| 无码午夜成人1000部免费视频| 日日摸日日碰夜夜爽亚洲| 亚洲综合激情九月婷婷| 国产国拍精品亚洲AV片| 国产又粗又猛又爽又黄的免费视频| 久久久精品2019免费观看| 精品免费久久久久国产一区| 国产亚洲精品影视在线| 久久亚洲精品国产精品| 亚洲线精品一区二区三区影音先锋| 免费爱爱的视频太爽了| 久久九九兔免费精品6| 成人爽a毛片免费| 最好2018中文免费视频| 亚洲精品久久无码| 亚洲伦理中文字幕| 亚洲最大中文字幕| 亚洲欧洲日产国码在线观看|