版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 系統(tǒng)功能的描述</b></p><p> 該圖書管理系統(tǒng)模塊分為:管理員登錄、顯示所有圖書信息、查看單條圖書信息、對單條圖書信息進行修改、刪除、添加新圖書,下面將逐條詳細(xì)講述:</p><p> 1、管理員登錄:根據(jù)管理員的用戶名和密碼進行登錄,登錄時提供驗證碼,防止非法用戶暴力登錄該系統(tǒng)。</p><p>
2、 2、顯示所有圖書信息:從數(shù)據(jù)庫中讀取所有圖書信息,逐條并分頁顯示;對于單條圖書信息,提供操作接口:查看、修改、刪除以及添加圖書。</p><p> 3、查看單條圖書信息:將該書信息(書名、ISBN、價格、出版社、出版時間、第一作者、第二作者、中圖分類號、主題詞)等詳細(xì)列出來,并能返回到主顯示頁面。</p><p> 4、對單條圖書信息進行修改:能對圖書信息除了主鍵(ISBN)外進行修
3、改,修改成功后將返回顯示主界面。</p><p> 5、對單條圖書信息進行刪除:跳轉(zhuǎn)到主刪除頁面,顯示待刪除圖書詳細(xì)信息,能夠確認(rèn)刪除和返回顯示主頁面。</p><p> 6、添加新圖書:需要輸入的圖書字段包括:書名、ISBN、價格、出版社、出版時間、第一作者、第二作者、中圖分類號、主題詞等。</p><p> 該圖書管理系統(tǒng)功能模塊調(diào)用關(guān)系圖:</p&
4、gt;<p> 編寫的源程序清單及功能說明</p><p> JavaBean文件:</p><p> JSP文件和HTML文件:</p><p><b> 核心功能模塊說明</b></p><p> 查看圖書詳細(xì)信息(源代碼來自admbkinfo.jsp)</p><p>
5、; 首先我們要獲取到數(shù)據(jù)庫中相應(yīng)字段的值:</p><p> String strBname = rs.getString("Bname");</p><p><b> //省略部分代碼…</b></p><p> 然后我們用JSP語言讓他們顯示出來:</p><p> <TR>
6、<TD><%=strBname%></TD></p><p> <TD align="center"><%=strBisbn%></TD></p><p> <!--省略部分代碼…--></p><p> <TD align="center&
7、quot;><%=strBpubtime%></TD></p><p> <TD align="center"></p><p> <button onclick="{location.href='bookshow.jsp?Bisbn=<%=strBisbn%>'}"&g
8、t;查看</button></TD></p><p> <!--省略部分代碼…--></TR></p><p> 2、添加新圖書(源代碼來自bookaddok.jsp)</p><p> 首先獲取到bookadd.jsp傳過來的圖書信息,為了防止亂碼,我們對字符串進行了編碼方式的處理:</p>&l
9、t;p> String Bpub = new String(request.getParameter("Bpub").getBytes("ISO-8859-1"));</p><p> 然后編輯SQL語句,利用JavaBean進行處理,這里使用了預(yù)處理語句:</p><p> String sql = "insert into
10、Book1 values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";</p><p> myBean.getConnection(dbName,userName007,userPsw007);//使用JavaBean獲取連接</p><p> Connection con = myBean.getCon();</p><p> P
11、reparedStatement stm=con.prepareStatement(sql);</p><p> stm.setString(1, Bname);stm.setString(2, Bisbn);stm.setString(3, Bprice);</p><p><b> //省略部分代碼…</b></p><p> stm
12、.setString(10, Bnotes);</p><p> if((Bname!=null&&!Bisbn.equals(""))&&(Bisbn!=null&&!Bisbn.equals(""))){</p><p> try{stm.execute();}</p><p
13、> catch(SQLException ex){</p><p> out.println("<p><center>來自數(shù)據(jù)庫的錯誤信息:"+ex.getMessage()+"</center>");</p><p> flag=false;//flag表示插入成功還是失敗,便于系統(tǒng)提示</p&
14、gt;<p><b> }</b></p><p> if(flag){out.println("<p><center>"+"圖書表添加記錄成功!"+"</center>");}</p><p> else{out.println("<p
15、><center>"+"圖書表添加記錄失??!"+"</center>");}</p><p><b> }</b></p><p><b> else{</b></p><p> out.println("<p>&l
16、t;center>"+"圖書名和ISBN碼不允許為空值!"+"</center>");</p><p> out.println("<p><center>"+"圖書表添加記錄失?。?quot;+"</center>");</p><p>
17、;<b> }</b></p><p> 3、對圖書進行修改、刪除(源代碼來自bkmdfok.jsp和bookdeleteok.jsp)</p><p> 對圖書進行修改與添加圖書類似,不同之處在于執(zhí)行的SQL語句不同:</p><p> String sql = </p><p> "UPDATE
18、Book1 SET Bname=?, Bprice=?, Bpub=?,Bpubtime=?, Bwrtr1=?, Bwrtr2=?, Bclassno=?, Babout=?, Bnotes=? where Bisbn=?";//修改圖書的SQL語句</p><p> String sql =</p><p> "delete from "+tableN
19、ame+" where Bisbn="+"'"+isbn+"'";//刪除圖書的SQL語句</p><p><b> 4、注銷及頁面驗證</b></p><p> 我們在用戶登錄時就用session對象把用戶的姓名存儲到了userid變量中(源代碼來自logindo.jsp):</p
20、><p> session.setAttribute("userid", name);</p><p> 在注銷的鏈接中,我們將所有針對該用戶的session對象銷毀(源代碼來自logout.jsp):</p><p> session.invalidate();//注銷</p><p> 我們在每個頁面都添加了認(rèn)證操
21、作,如果發(fā)現(xiàn)沒有登錄系統(tǒng)就會提示用戶進行登錄,界面友好(源代碼來自admbkinfo.jsp):</p><p> if (session.getAttribute("userid") != null){</p><p> 歡迎 <%=session.getAttribute("userid") %> 光臨本系統(tǒng),<a href
22、="logout.jsp">注銷!</a></p><p><b> //省略部分代碼…</b></p><p> catch (NullPointerException e) {</p><p> out.println("<p><center>" + &
23、quot;請登錄!" + "</center>");</p><p> %> <a href="login.jsp">登錄</a> <%</p><p><b> }</b></p><p><b> }</b><
24、/p><p> else { %> <h3>請先進行系統(tǒng)的<a href="login.jsp">登錄</a></h3> <% }</p><p> 5、分頁顯示(源代碼來自admbkinfo.jsp)</p><p> int intPageSize; //一頁顯示的記錄數(shù) int
25、intRowCount; //記錄總數(shù) </p><p> int intPageCount; //總頁數(shù) int intPage; //待顯示頁碼 String strPage = null;</p><p><b> //省略部分代碼…</b></p><p> intPageSize = 15; //設(shè)置一頁顯示的記錄數(shù) </
26、p><p> strPage = request.getParameter("page");//取得待顯示頁碼 </p><p><b> //省略部分代碼…</b></p><p> ResultSet rs = myBean.executeQuery(sql);</p><p> rs.abs
27、olute(1);//將指針移動到結(jié)果集對象的第一行</p><p> rs.last();//獲取記錄總數(shù)</p><p> intRowCount = rs.getRow();</p><p> intPageCount = (intRowCount + intPageSize - 1) / intPageSize; //記算總頁數(shù) </p>
28、<p> if (intPage > intPageCount) intPage = intPageCount; //調(diào)整待顯示的頁碼</p><p> if (intPageCount > 0) {</p><p> //將記錄指針定位到待顯示頁的第一條記錄上 </p><p> rs.absolute((intPage - 1)
29、* intPageSize + 1);</p><p> int i = 0;</p><p><b> //省略部分代碼…</b></p><p> while (i < intPageSize && !rs.isAfterLast()){</p><p> //這里省略的是顯示圖書信息模
30、塊</p><p> rs.next();</p><p><b> i++;</b></p><p><b> }</b></p><p><b> //省略部分代碼…</b></p><p><b> <TABLE>&
31、lt;/b></p><p> <!--這里顯示的是頁面導(dǎo)向欄,顯示是第幾頁、記錄個數(shù)等--></p><p> <tr><td height="22" align="center">第<%=intPage%>頁 共<%=intRowCount%>條記錄/共<%=intPag
32、eCount%>頁</p><p> <%if (intPage < 2) {</p><p> out.print("首頁 | 上一頁");</p><p><b> } else {</b></p><p> %> <a href="admbkin
33、fo.jsp?page=<%=1%>">首頁</a> | <a</p><p> href="admbkinfo.jsp?page=<%=intPage - 1%>">上一頁</a> </p><p> <!--省略部分代碼…--></p><p><
34、;b> </TABLE></b></p><p> 6、驗證碼輸入(源代碼來自numberRandom.jsp)</p><p> OutputStream os=response.getOutputStream(); </p><p> response.setHeader("Pragma","N
35、o-cache");</p><p> response.setHeader("Cache-Contorol", "no-cache");//設(shè)置頁面緩存</p><p> response.setDateHeader("Expires",0);</p><p> int width = 7
36、5,height = 20;</p><p> BufferedImage image = </p><p> new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR); //創(chuàng)建圖像</p><p> Graphics g = image.getGraphics();//獲取圖形</p>
37、<p> Random random = new Random();//生成隨機類</p><p> g.setColor(getRandColor(50,250)); //設(shè)置背景色</p><p> g.fillRect(0,0,width,height);</p><p> g.setFont(new Font("Times N
38、ew Roman",Font.PLAIN,18)); //設(shè)置字體</p><p> g.setColor(Color.gray);/ /設(shè)置邊框</p><p> g.drawRect(0,0,width-1,height-1);</p><p> g.setColor(getRandColor(150,200)); //隨機產(chǎn)生干擾線</p
39、><p> for(int i=0;i<200;i++){</p><p> int x = random.nextInt(width);int y = random.nextInt(height);</p><p> int x1 = random.nextInt(12); int y1 = random.nextInt(12);</p>
40、<p> g.drawLine(x,y,x+x1,y+y1);</p><p><b> }</b></p><p> String sRand = "";//圖像顯示驗證碼</p><p> for(int i=0;i<5;i++){</p><p> String ran
41、d= String.valueOf(random.nextInt(10));</p><p> sRand += rand;</p><p> g.setColor</p><p> (newColor(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));</p&g
42、t;<p> g.drawString(rand,13*i+6,16);</p><p><b> }</b></p><p> session.setAttribute("random", sRand); //驗證碼存入session</p><p> g.dispose();//圖像生效</p
43、><p> ImageIO.write(image, "JPEG", os); //頁面顯示圖像</p><p> os.flush(); os.close(); os=null; response.flushBuffer(); out.clear(); </p><p> out = pageContext.pushBody();
44、 </p><p> 7、圖片循環(huán)滾動(源代碼來自down.html)</p><p> 圖片滾動采用JavaScript來實現(xiàn),關(guān)鍵代碼如下</p><p><b> <script></b></p><p> //使用div時,請保證colee_left2與colee_left1是在同一行上.&l
45、t;/p><p> var speed=30;//速度數(shù)值越大速度越慢</p><p> var colee_left2=document.getElementById("colee_left2");</p><p> var colee_left1=document.getElementById("colee_left1"
46、);</p><p> var colee_left=document.getElementById("colee_left");</p><p> colee_left2.innerHTML=colee_left1.innerHTML</p><p> function Marquee3(){</p><p>
47、if(colee_left2.offsetWidth-colee_left.scrollLeft<=0)//offsetWidth 是對象的可見寬度</p><p> colee_left.scrollLeft-=colee_left1.offsetWidth</p><p> //scrollWidth 是對象的實際內(nèi)容的寬,不包邊線寬度</p><p>
48、;<b> else{</b></p><p> colee_left.scrollLeft++</p><p><b> }</b></p><p><b> }</b></p><p> var MyMar3=setInterval(Marquee3,speed)
49、</p><p> colee_left.onmouseover=function() {clearInterval(MyMar3)}</p><p> colee_left.onmouseout=function() {MyMar3=setInterval(Marquee3,speed)}</p><p><b> </script>&
50、lt;/b></p><p> 8、CSS樣式表(源代碼來自up.html和down.html)</p><p> 主要控制網(wǎng)頁頭和尾顯示的樣式,如文字字體顏色大小等,以及導(dǎo)航欄的鼠標(biāo)訪問的樣式。以下是頁面logo中文標(biāo)題和英文標(biāo)題的樣式控制。</p><p> <style type="text/css"></p&
51、gt;<p> .logo { </p><p> height: 100px;</p><p> width: 100px;</p><p> padding: 3px;</p><p> margin: 3px;</p><p><b> }</b></p&
52、gt;<p> .ch_title {</p><p> font-size: 60px;</p><p> color: #36F;</p><p> font-weight: bolder;</p><p><b> }</b></p><p> .en_title
53、{</p><p> font-size: 24px;</p><p> color: #FFF;</p><p> background-color: #36F;</p><p> font-weight: bolder;</p><p> padding-left: 20px;</p>&l
54、t;p><b> }</b></p><p><b> </style></b></p><p><b> 效果圖</b></p><p> 長安大學(xué)圖書管理系統(tǒng)登錄主界面:</p><p> 說明:整個頁面采用了CSS樣式,使跳轉(zhuǎn)后的頁面全部采用該
55、風(fēng)格,在之后的頁面跳轉(zhuǎn)中整個網(wǎng)頁的上半部分和下半部分不改變。登錄窗口能夠進行驗證碼驗證,在登錄窗口下能夠進行圖片滾動。</p><p><b> 圖一</b></p><p> 登錄后進入的主頁面:</p><p> 說明:我們可以看到該頁面最下面有翻頁功能,能夠顯示記錄的總個數(shù)、頁碼等。</p><p><
56、b> 圖二</b></p><p><b> 添加圖書主界面:</b></p><p><b> 圖三</b></p><p><b> 圖書記錄添加成功:</b></p><p><b> 圖四</b></p>
57、<p> 查看圖書詳細(xì)信息界面:</p><p><b> 圖五</b></p><p> 圖書信息修改主界面:</p><p><b> 圖六</b></p><p><b> 圖書刪除主界面:</b></p><p><b&
58、gt; 圖七</b></p><p> 圖書信息增刪改查操作成功(沒有了平凡世界這個條目):</p><p><b> 圖八</b></p><p> 運行測試時發(fā)現(xiàn)的問題及解決方法的描述</p><p><b> 1、亂碼問題</b></p><p>
59、 規(guī)定文件編碼方式為UTF-8,并指定字符編碼為GBK,設(shè)置request字符編碼方式為GBK。</p><p><b> 2、異常接收</b></p><p> 在測試過程中我們發(fā)現(xiàn)出現(xiàn)了Tomcat服務(wù)器錯誤頁面,但我們不能將異常拋給用戶。于是我們在程序語句中增加了try-catch塊,增加程序健壯性,當(dāng)出現(xiàn)錯誤時在網(wǎng)頁上給出相應(yīng)的提示。</p>
60、<p><b> 3、防止插入空值</b></p><p> 在增加新書時,我們發(fā)現(xiàn)在什么都沒有輸入的條件下,仍能正常執(zhí)行插入操作,而且顯示出來的全部都是空白。</p><p> 首先我們在數(shù)據(jù)庫中規(guī)定了isbn字段是不允許為空值的,但插入竟然成功。通過查看網(wǎng)上的資料,我們了解到SQL Server 2008中的空字符串和NULL是不一樣的兩個值,
61、它不能識別空字符串為NULL。為此,我們在JSP程序中加入了如下語句來判斷(源代碼來自bookaddok.jsp,詳見第三部分的第2點):</p><p> if((Bname!=null&&!Bisbn.equals(""))&&(Bisbn!=null&&!Bisbn.equals("")))</p>&l
62、t;p> {//省略部分代碼…}</p><p><b> else</b></p><p> {//省略部分代碼…}</p><p> 那么當(dāng)用戶什么都沒有輸入時,就不會執(zhí)行插入操作。</p><p><b> 4、頁面導(dǎo)向錯誤</b></p><p>
63、當(dāng)管理員翻到圖書目錄第二頁進行相關(guān)操作后,點擊返回圖書目錄頁面,總是導(dǎo)向第一頁,為解決這個問題,我們將管理員正在操作的圖書目錄的頁數(shù)存儲在session對象中(源代碼來自admbkinfo.jsp):</p><p> if (strPage == null) {//表明在QueryString中沒有page這一個參數(shù),此時顯示第一頁數(shù)據(jù) </p><p> intPage = 1;&
64、lt;/p><p> session.setAttribute("page", "1");</p><p> //管理員在第一頁修改圖書后提交后能夠返回至第一頁</p><p><b> } else {</b></p><p> session.setAttribute(&q
65、uot;page", strPage);</p><p> //這個是為了管理員在某一頁修改圖書后提交后能夠返回至他那個操作頁面</p><p> intPage = java.lang.Integer.parseInt(strPage); //將字符串轉(zhuǎn)換成整型</p><p> if (intPage < 1) {</p>&
66、lt;p> intPage = 1;</p><p><b> }</b></p><p><b> }</b></p><p> 5、翻頁顯示時在控制臺顯示Result set type is TYPE_FORWARD_ONLY的錯誤信息</p><p> 查看數(shù)據(jù)庫連接的Bean
67、:MyBean.ExSql,里面對Statement對象的創(chuàng)建是默認(rèn)方。這樣在返回的 Statement 對象創(chuàng)建的結(jié)果集在默認(rèn)情況下類型為 TYPE_FORWARD_ONLY,并帶有 CONCUR_READ_ONLY 并發(fā)級別。因此不允許用last()方法,一旦調(diào)用這個方法就會出現(xiàn)上述錯誤。</p><p> 對statement創(chuàng)建修改如下(源代碼來自ExSql.java):</p><
68、p> stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);//建立statement類對象</p><p> 再運行程序,分頁成功實現(xiàn)。</p><p> 6、翻頁后用戶姓名不能正常顯示</p><p> 我們在最開始,翻頁時通過超
69、鏈接將姓名變量傳給下一個頁面。然而,這樣出現(xiàn)了很多問題,經(jīng)過了多次跳轉(zhuǎn)之后,自己都不知道到底是否傳遞了這個參數(shù),出現(xiàn)用戶姓名不能顯示或者顯示為null的情況。因此,在用戶登錄時,我們就將用戶的姓名查出來,并存儲到session對象中。(相關(guān)代碼詳見第三部分的第4點)</p><p> 附錄:完整的源程序代碼和注釋</p><p> LinkDB.java</p><
70、p> /*功能:導(dǎo)入JDBC標(biāo)準(zhǔn)庫,注冊數(shù)據(jù)庫驅(qū)動程序,建立與數(shù)據(jù)庫的連接 */</p><p> package MyBean;</p><p> import java.sql.*;</p><p> public class LinkDB {</p><p> public Connection getConnectio
71、n(String dbName,String userName,String userPsw){</p><p> String driverName = "sun.jdbc.odbc.JdbcOdbcDriver";</p><p> String conurl = "jdbc:odbc:"+dbName;</p><p&g
72、t; Connection con = null;</p><p><b> try{</b></p><p> Class.forName(driverName);</p><p> con = DriverManager.getConnection(conurl, userName, userPsw);</p><
73、;p> }catch(Exception e){</p><p> System.err.println("con"+e.getMessage());</p><p><b> }</b></p><p> return con;</p><p><b> }</b&g
74、t;</p><p> public Connection getConnection(String dbName){</p><p> String driverName = "sun.jdbc.odbc.JdbcOdbcDriver";</p><p> String conurl = "jdbc:odbc:"+db
75、Name;</p><p> Connection con = null;</p><p><b> try{</b></p><p> Class.forName(driverName);</p><p> con = DriverManager.getConnection(conurl);</p>
76、<p> }catch(Exception e){</p><p> System.err.println("con"+e.getMessage());</p><p><b> }</b></p><p> return con;</p><p><b> }<
77、;/b></p><p><b> }</b></p><p> ExSql.java</p><p> /*功能:操作(查詢、插入、更新、刪除)數(shù)據(jù)庫中的數(shù)據(jù);</p><p> * 完成了所要執(zhí)行的操作后,關(guān)閉各種連接*/</p><p> package MyBean;<
78、;/p><p> import java.sql.*;</p><p> public class ExSql { </p><p> Statement stmt = null;</p><p> Connection con = null;</p><p> LinkDB dtbsConn = null;&l
79、t;/p><p> ResultSet rs = null;</p><p> public Connection getCon() {</p><p> return con;</p><p><b> }</b></p><p> public ExSql() {</p>
80、<p> this.dtbsConn = new LinkDB();</p><p> //要新建一個對象,內(nèi)存中才會有一個getConnection方法,不然JVM就找不到</p><p><b> }</b></p><p> public void getConnection(String dbName,String u
81、serName,String userPsw){</p><p> this.con = dtbsConn.getConnection(dbName,userName,userPsw);//建立與數(shù)據(jù)庫的連接</p><p><b> }</b></p><p> public void getConnection(String dbNa
82、me){</p><p> this.con = dtbsConn.getConnection(dbName);//建立與數(shù)據(jù)庫的連接</p><p><b> }</b></p><p> public void executeUpdate(String sql){//執(zhí)行sql語句</p><p><b&
83、gt; try{</b></p><p> //stmt = con.createStatement();//建立statement類對象</p><p><b> /*</b></p><p> * 查看數(shù)據(jù)庫連接的Bean:dbpackage.conn,</p><p> * 里面對Statem
84、ent對象的創(chuàng)建是默認(rèn)方。</p><p> * 這樣在返回的 Statement 對象創(chuàng)建的</p><p> * 結(jié)果集在默認(rèn)情況下類型為 TYPE_FORWARD_ONLY,</p><p> * 并帶有 CONCUR_READ_ONLY 并發(fā)級別。因此不允許用last()方法,</p><p> * 一旦調(diào)用這個方法就會出在上
85、述錯誤。</p><p><b> */</b></p><p><b> stmt =</b></p><p> con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);//建立statement類對象<
86、;/p><p> stmt.executeUpdate(sql);//執(zhí)行SQL命令</p><p><b> }</b></p><p> catch(SQLException ex){</p><p> System.err.println("SQLException"+ex.getMessa
87、ge());</p><p> ex.printStackTrace();</p><p><b> }</b></p><p><b> }</b></p><p> /*executeQuery方法用于進行記錄的查詢操作</p><p> * 輸入:sql語句&
88、lt;/p><p> * 輸出:查詢結(jié)果信息的ResultSet對象 */</p><p> public ResultSet executeQuery(String sql){</p><p><b> try{</b></p><p> //stmt = con.createStatement();</p&
89、gt;<p><b> stmt =</b></p><p> con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);//建立statement類對象</p><p> rs = stmt.executeQuery(sql);</p&
90、gt;<p><b> }</b></p><p> catch(SQLException ex){</p><p> System.err.println("executeQuery:"+ex.getMessage());</p><p><b> }</b></p>
91、<p> return rs;</p><p><b> }</b></p><p> /*關(guān)閉各種連接*/</p><p> public void close(){</p><p><b> try{</b></p><p> con.close
92、();</p><p> stmt.close();</p><p><b> }</b></p><p> catch(SQLException ex){</p><p> System.err.println("1"+ex.getMessage());</p><p&g
93、t;<b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> bookadd.jsp</p><p> <%@ page language="java" import="ja
94、va.util.*" pageEncoding="UTF-8"%></p><p> <%@ page contentType="text/html;charset=GBK"%></p><p><b> <%</b></p><p> request.setCha
95、racterEncoding("GBK");</p><p><b> %></b></p><p> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"></p><p><b> <htm
96、l></b></p><p><b> <head></b></p><p> <title>My JSP 'bookadd.jsp' starting page</title></p><p> <meta http-equiv="pragma&quo
97、t; content="no-cache"></p><p> <meta http-equiv="cache-control" content="no-cache"></p><p> <meta http-equiv="expires" content="0"
98、></p><p> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"></p><p> <meta http-equiv="description" content="This is my page"
99、></p><p><b> </head></b></p><p><b> <body></b></p><p> <form method="get" action="bookaddok.jsp"></p><
100、p> <TABLE border=1></p><p><b> <TR></b></p><p> <TD>書名</TD></p><p> <td><input type="text" name="Bname">&l
101、t;/p><p><b> </td></b></p><p><b> </tr></b></p><p><b> <TR></b></p><p> <TD>ISBN</TD></p><
102、p> <td><input type="text" name="Bisbn"></p><p><b> </td></b></p><p><b> </tr></b></p><p><b> <TR&
103、gt;</b></p><p> <TD>價格</TD></p><p> <td><input type="text" name="Bprice"></p><p><b> </td></b></p><
104、p><b> </tr></b></p><p><b> <TR></b></p><p> <TD>出版社</TD></p><p> <td><input type="text" name="Bpub&quo
105、t;></p><p><b> </td></b></p><p><b> </tr></b></p><p><b> <TR></b></p><p> <TD>出版時間</TD></p&g
106、t;<p> <td><input type="text" name="Bpubtime"></p><p><b> </td></b></p><p><b> </tr></b></p><p><b&g
107、t; <TR></b></p><p> <TD>第一作者</TD></p><p> <td><input type="text" name="Bwrtr1"></p><p><b> </td></b><
108、;/p><p><b> </tr></b></p><p><b> <TR></b></p><p> <TD>第二作者</TD></p><p> <td><input type="text" name=
109、"Bwrtr2"></p><p><b> </td></b></p><p><b> </tr></b></p><p><b> <TR></b></p><p> <TD>中圖分類號&l
110、t;/TD></p><p> <td><input type="text" name="Bclassno"></p><p><b> </td></b></p><p><b> </tr></b></p>
111、<p><b> <TR></b></p><p> <TD>主題詞</TD></p><p> <td><input type="text" name="Babout"></p><p><b> </td&
112、gt;</b></p><p><b> </tr></b></p><p><b> <TR></b></p><p> <TD>摘要</TD></p><p> <td><textarea name="
113、;Bnotes" rows="5" cols="100"></textarea></p><p><b> </td></b></p><p><b> </tr></b></p><p><b> <tr&g
114、t;</b></p><p> <td><input type="submit" value="提交"> <input</p><p> type="reset" value="重置"></p><p><b&g
115、t; </td></b></p><p><b> </tr></b></p><p><b> <tr></b></p><p> <td colspan="2"><a href="Javascript:history
116、.go(-1)">返回</a></td></p><p><b> </tr></b></p><p><b> </TABLE></b></p><p><b> </form></b></p><
117、p><b> </body></b></p><p><b> </html></b></p><p> bookaddok.jsp</p><p> <%@ page language="java" import="java.sql.*"
118、 pageEncoding="UTF-8"%></p><p> <%@ page contentType ="text/html;charset=GBK"%></p><p><b> <%</b></p><p> request.setCharacterEncoding
119、("GBK");</p><p><b> %></b></p><p> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"></p><p><b> <html></b>
120、;</p><p><b> <head></b></p><p> <title>My JSP 'bookaddok.jsp' starting page</title></p><p> <meta http-equiv="pragma" content=&
121、quot;no-cache"></p><p> <meta http-equiv="cache-control" content="no-cache"></p><p> <meta http-equiv="expires" content="0"> <
122、/p><p> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"></p><p> <meta http-equiv="description" content="This is my page"><
123、/p><p><b> </head></b></p><p><b> <body></b></p><p> <jsp:useBean id="myBean" scope="page" class="MyBean.ExSql"
124、/></p><p><b> <%</b></p><p> String driverName = "sun.jdbc.odbc.JdbcOdbcDriver";</p><p> //以下數(shù)據(jù)請改成自己需要的</p><p> String userName = "
125、User1";</p><p> String userPsw = "1234";</p><p> String userName007 = "sa";</p><p> String userPsw007 = "adminstudy";</p><p> Str
126、ing dbName = "LibSysServer";</p><p> //以上數(shù)據(jù)請改成自己需要的</p><p> boolean flag=true;//true表示插入成功</p><p> String Bname = new String(request.getParameter("Bname").get
127、Bytes("ISO-8859-1"));</p><p> String Bisbn = new String(request.getParameter("Bisbn").getBytes("ISO-8859-1"));</p><p> String Bprice = new String(request.getParam
128、eter("Bprice").getBytes("ISO-8859-1"));</p><p> String Bpub = new String(request.getParameter("Bpub").getBytes("ISO-8859-1"));</p><p> String Bpubtime =
129、 new String(request.getParameter("Bpubtime").getBytes("ISO-8859-1"));</p><p> String Bwrtr1 = new String(request.getParameter("Bwrtr1").getBytes("ISO-8859-1"));</p
130、><p> String Bwrtr2 = new String(request.getParameter("Bwrtr2").getBytes("ISO-8859-1"));</p><p> String Bclassno = new String(request.getParameter("Bclassno").getByt
131、es("ISO-8859-1"));</p><p> String Babout = new String(request.getParameter("Babout").getBytes("ISO-8859-1"));</p><p> String Bnotes = new String(request.getParame
132、ter("Bnotes").getBytes("ISO-8859-1"));</p><p> String tableName = "Book1";</p><p> String sql = "insert into Book1 values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
133、;</p><p> myBean.getConnection(dbName,userName007,userPsw007);//使用JavaBean獲取連接</p><p> Connection con = myBean.getCon();</p><p> PreparedStatement stm=con.prepareStatement(sql);&
134、lt;/p><p> stm.setString(1, Bname);</p><p> stm.setString(2, Bisbn);</p><p> stm.setString(3, Bprice);</p><p> stm.setString(4, Bpub);</p><p> stm.setStr
135、ing(5,Bpubtime);</p><p> stm.setString(6, Bwrtr1);</p><p> stm.setString(7, Bwrtr2);</p><p> stm.setString(8, Bclassno);</p><p> stm.setString(9, Babout);</p>
136、<p> stm.setString(10, Bnotes);</p><p><b> if(</b></p><p> (Bname!=null&&!Bisbn.equals(""))&&</p><p> (Bisbn!=null&&!Bisbn.e
137、quals(""))){</p><p><b> try{</b></p><p> stm.execute();</p><p> }catch(SQLException ex){</p><p> out.println("<p><center>來自數(shù)據(jù)
138、庫的錯誤信息:"+ex.getMessage()+"</center>");</p><p> flag=false;//flag表示插入成功還是失敗,便于系統(tǒng)提示</p><p><b> }</b></p><p><b> if(flag){</b></p>
139、<p> out.println("<p><center>"+"圖書表添加記錄成功!"+"</center>");</p><p><b> }</b></p><p><b> else{</b></p><p
140、> out.println("<p><center>"+"圖書表添加記錄失??!"+"</center>");</p><p><b> }</b></p><p><b> }</b></p><p><b&g
141、t; else{</b></p><p> out.println("<p><center>"+"圖書名和ISBN碼不允許為空值!"+"</center>");</p><p> out.println("<p><center>"+&
142、quot;圖書表添加記錄失敗!"+"</center>");</p><p><b> }</b></p><p> con.close();</p><p><b> %></b></p><p> <A HREF="admb
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- jsp課程設(shè)計--圖書管理系統(tǒng)
- jsp圖書管理系統(tǒng)課程設(shè)計
- 課程設(shè)計報告----基于jsp的圖書管理系統(tǒng)
- 基于jsp的圖書管理系統(tǒng)的課程設(shè)計報告
- 基于jsp的圖書管理系統(tǒng)的課程設(shè)計
- 圖書管理系統(tǒng)—課程設(shè)計報告
- 圖書管理系統(tǒng)-課程設(shè)計報告
- 圖書管理系統(tǒng)課程設(shè)計報告
- 圖書管理系統(tǒng)課程設(shè)計報告
- 圖書管理系統(tǒng)課程設(shè)計報告
- 圖書管理系統(tǒng)課程設(shè)計報告
- 圖書管理系統(tǒng)課程設(shè)計報告
- 圖書管理系統(tǒng)課程設(shè)計報告
- 圖書管理系統(tǒng)課程設(shè)計報告
- 學(xué)校圖書管理系統(tǒng)課程設(shè)計報告
- c課程設(shè)計報告-- 圖書管理系統(tǒng)
- 《圖書管理系統(tǒng)》課程設(shè)計
- 圖書管理系統(tǒng)課程設(shè)計
- 圖書管理系統(tǒng)課程設(shè)計
- 圖書管理系統(tǒng)課程設(shè)計
評論
0/150
提交評論