




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、【精品文檔】如有侵權,請聯系網站刪除,僅供學習與交流實驗8-jdbc數據庫訪問.精品文檔.實驗8 JDBC訪問數據庫一、實驗目的1. 掌握使用傳統的方法訪問數據庫;2. 掌握使用數據源的方法訪問數據庫。二、實驗原理數據庫應用是Web應用開發的一個重要應用。Web應用程序訪問數據庫有兩種方法:傳統的方法和使用JNDI數據源的方法。傳統方法訪問數據庫的步驟是:加載數據庫驅動程序;建立連接對象;創建語句對象;獲得結果集;關閉有關連接對象。使用數據源訪問數據庫的步驟是:配置數據源(局部數據源或全局數據源);通過JNDI機制查找命名數據源;通過數據源對象創建連接對象;其他與傳統方法一致。三、實驗內容與步
2、驟(一)使用傳統方法通過JSP頁面訪問數據庫【步驟1】創建數據庫。假設在PostgreSQL建立了一個名為bookstore的數據庫,在其中建立books表,代碼如下:CREATE TABLE books ( bookid character(5) PRIMARY KEY, -書號 title varchar2(80), -書名author character varying(20), -作者 publisher character varying (40), -出版社 price real -價格向books表中插入幾條記錄,代碼如下:INSERT INTO books VALUES (
3、39;204','Head First Servlets & JSP', 'Bryan Basham', '中國電力出版社',98.00);INSERT INTO books VALUES ('201', 'Servlets 與JSP 核心教程', 'Hall Marty','清華大學出版社',45);INSERT INTO books VALUES ('202', 'Tomcat與Java Web 開發技術祥解', '孫衛琴&
4、#39;, '機械工業出版社',45);INSERT INTO books VALUES ('203', 'JSP 應用開發技術', '柳永坡','人民郵電出版社',52);INSERT INTO books VALUES ('205', 'J2EE 1.4 編程指南', 'Spielman Sue','電子工業出版社',68);注意:需要將數據庫的JDBC驅動程序安裝到應用程序的WEB-INFlib目錄中。【步驟2】使用下面JSP頁面displayB
5、ooks.jsp訪問books表中的數據。<% page contentType="text/html; charset=gb2312" %><% page import="java.sql.*"%><html><head> <title>Database Access Test</title></head><body>try Class.forName("org.postgresql.Driver");String dburl = &qu
6、ot;jdbc:postgresql:/localhost:5432/bookstore"Connection conn = DriverManager.getConnection(dburl, "bookstore", "bookstore"); Statement stmt = conn.createStatement();String sql = "SELECT * FROM books" ;ResultSet rs = stmt.executeQuery(sql);out.println("<tabl
7、e border=1>");out.println("<tr><td>書號</td><td>書名</td><td>作者</td><td>價格</td></tr>");while (rs.next()out.println("<tr><td>"+ rs.getString(1)+"</td><td>"+ rs.getString(2)+"<
8、/td><td>"+ rs.getString(3)+"</td><td>"+ rs.getString(5)+"</td></tr>");out.println("</table>");rs.close();stmt.close();conn.close();catch (Exception e) out.println(e.getMessage();</body></html>運用mysql的代碼如下:<% pag
9、e contentType="text/html; charset=gb2312"%><% page import="java.sql.*"%><html><head><title>Database Access Test</title></head><body>try Class.forName("com.mysql.jdbc.Driver");String dburl = "jdbc:mysql:/localhost:3306/bo
10、okstore"Connection conn = DriverManager.getConnection(dburl, "root", "");Statement stmt = conn.createStatement();String sql = "SELECT * FROM books"ResultSet rs = stmt.executeQuery(sql);out.println("<table border=1>");out.println("<tr><
11、td>書號</td><td>書名</td><td>作者</td><td>價格</td></tr>");while (rs.next() out.println("<tr><td>" + rs.getString(1) + "</td><td>"+ rs.getString(2) + "</td><td>" + rs.getString(3)+ "
12、;</td><td>" + rs.getString(5) + "</td></tr>");out.println("</table>");rs.close();stmt.close();conn.close(); catch (Exception e) out.println(e.getMessage();</body></html> 圖1 displayBooks.jsp(二)通過數據源訪問數據庫注意:需要將數據庫的JDBC驅動程序安裝到Tomcat安裝目錄
13、的lib目錄中,并重新啟動Tomcat服務器。【步驟1】建立局部數據源在Web應用程序中建立一個META-INF目錄,在其中建立一個context.xml文件,內容如下:<?xml version="1.0" encoding="utf-8"?><Context reloadable = "true"><Resource name="jdbc/bookDS" type="javax.sql.DataSource" maxActive="4" ma
14、xIdle="2" username="bookstore" maxWait="5000" driverClassName="org.postgresql.Driver" password="bookstore" url="jdbc:mysql:/localhost:3306/bookstore"/></Context>【步驟2】使用下面的JSP頁面displayBooks.jsp訪問數據庫<% page contentType="text/
15、html; charset=gb2312" %><% page import="java.sql.*, javax.sql.*,javax.naming.*"%><html><head> <title>DataSource Test</title></head><body>try Context context = new InitialContext();DataSource ds = (DataSource) context.lookup("java:comp/
16、env/jdbc/bookDS");Connection conn = ds.getConnection();Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("SELECT * FROM books");out.println("<table border=1>");out.println("<tr><td>書號</td><td>書名</td><td>作者
17、</td><td>價格</td></tr>");while (rs.next()out.println("<tr><td>"+ rs.getString(1)+"</td><td>"+ rs.getString(2)+"</td><td>"+ rs.getString(3)+"</td><td>"+ rs.getString(5)+"</td>
18、;</tr>");out.println("</table>");rs.close();stmt.close();conn.close();catch (Exception e) out.println(e.getMessage();</body></html>圖2 displayBooks.jsp(三)綜合應用。本實驗采用MVC設計模式,通過數據源和DAO對象訪問數據庫。其中JavaBeans實現模型,訪問數據庫,Servlet實現控制器,JSP頁面實現視圖。· 模型包括2個JavaBean:BookBe
19、an用于存放圖書信息,BookDAO用于訪問數據庫。· 控制器包括2個Servlet:BookQueryServlet根據請求參數查詢圖書信息、BookInsertServlet用來向數據庫中插入數據。· 視圖包括4個JSP頁面:bookQuery.jsp顯示查詢頁面、bookInsert.jsp顯示插入頁面、display.jsp顯示查詢結果頁面和errorPage.jsp顯示錯誤頁面。【步驟1】存放圖書信息的JavaBeans代碼BookBean.java,它也是一個傳輸對象。package com.beans;import java.io.*;public class
20、 BookBean implements Serializable private String bookid = null; private String title = null; private String author = null; private String publisher = null; private float price = 0.0F; public BookBean() public BookBean(String bookId, String author, String title, String publisher, float price) this.bo
21、okid = bookId; this.title = title; this.author = author; this.publisher = publisher;this.price = price; public String getBookid() return this.bookid; public String getTitle() return title; public String getAuthor() return this.author; public float getPrice() return price; public String getPublisher
22、() return publisher; public void setBookid(String bookid) this.bookid=bookid; public void setTitle(String title)this.title=title; public void setAuthor(String author) this. author = author; public void setPrice(float price)this.price=price; public void setPublisher (String publisher) this.publisher
23、= publisher;【步驟2】下面的BookDAO是一個簡單的JavaBeans,它實現數據庫的訪問。package com.beans;import java.sql.*;import javax.sql.*;import javax.naming.*;import java.util.ArrayList;import com.beans.BookBean;public class BookDAO private static InitialContext context= null; private DataSource dataSource = null; public BookDA
24、O() try if(context = null) context = new InitialContext(); dataSource = (DataSource)context.lookup("java:comp/env/jdbc/bookDS"); catch(NamingException e2) / 根據書號查詢圖書信息 public BookBean searchBook(String bookid) Connection conn = null; PreparedStatement pstmt = null; ResultSet rst = null; Bo
25、okBean book = new BookBean(); try conn = dataSource.getConnection(); pstmt = conn.prepareStatement("SELECT * FROM books WHERE bookid=?"); pstmt.setString(1,bookid); rst = pstmt.executeQuery(); if(rst.next() book.setBookid(rst.getString("bookid"); book.setTitle(rst.getString("
26、;title"); book.setAuthor(rst.getString("author"); book.setPublisher(rst.getString("publisher"); book.setPrice(rst.getFloat("price"); return book; else return null; catch(SQLException se) return null; finally try conn.close(); catch(SQLException se) / 插入一本圖書記錄 publi
27、c boolean insertBook(BookBean book) Connection conn = null; PreparedStatement pstmt = null; try conn = dataSource.getConnection(); pstmt = conn.prepareStatement( "INSERT INTO books VALUES(?,?,?,?,?)"); pstmt.setString(1,book.getBookid(); pstmt.setString(2,book.getTitle(); pstmt.setString(3
28、,book.getAuthor(); pstmt.setString(4,book.getPublisher(); pstmt.setFloat(3,book.getPrice(); pstmt.executeUpdate(); pstmt.close(); return true; catch(SQLException se) return false; finally try conn.close(); catch(SQLException se) 【步驟3】下面的JSP頁面bookQuery.jsp實現根據書號查詢圖書信息<% page contentType="text
29、/html; charset=gb2312" %><html><head> <title>Book Query</title></head><body>請輸入一個書號:<br><form action="bookquery.do" method = "post"><input type="text" name="bookid"><br><input type="su
30、bmit" value="提交"></form></body></html>圖3 bookQuery.jsp【步驟4】下面的JSP頁面bookInsert.jsp實現向數據庫中插入數據<% page contentType="text/html; charset=gb2312" %><html><head> <title>Book Insert</title></head><body><h3>請輸入圖書信息:
31、</h3><% if(request.getAttribute("result")!=null) out.print(request.getAttribute("result");<form action = "bookinsert.do" method = "post"> <table> <tr><td>書號</td> <td><input type="text" name="bookid
32、" ></td></tr> <tr><td>書名</td><td><input type="text" name="title"></td></tr> <tr><td>作者</td><td><input type="text" name="author" ></td></tr> <tr><td
33、>出版社</td><td><input type="text" name="publisher" ></td></tr> <tr><td>單價</td><td><input type="text" name="price" ></td></tr> <tr><td><input type="submit" value=&
34、quot;確定" ></td> <td><input type="reset" value="重置" ></td> </tr></table></form></body></html>圖4 bookInsert.jsp 圖5 插入成功【步驟5】顯示查詢結果的JSP頁面display.jsp:<% page contentType="text/html;charset=gb2312"%><jsp:
35、useBean id="book" class="com.beans.BookBean" scope="request"/><html><body> 書號:<jsp:getProperty name="book" property="bookid"/> 書名:<jsp:getProperty name="book" property="title"/> 作者:<jsp:getProperty na
36、me="book" property="author"/> 出版社:<jsp:getProperty name="book" property="publisher"/> 價格:<jsp:getProperty name="book" property="price"/></body></html>圖6 顯示查詢結果【步驟6】錯誤頁面errorPage.jsp代碼如下:<% page contentType=&quo
37、t;text/html;charset=gb2312"%><html><body> 對不起,您查的圖書不存在!</body></html>圖7 顯示錯誤頁面【步驟7】下面的Servlet實現從請求參數獲得書號,然后從數據庫中查找該書,最后根據查詢結果將請求轉發到顯示頁面(display.jsp)或錯誤頁面(errorPage.jsp)。package com.control;import java.io.*;import java.sql.*;import javax.servlet.*;import javax.servlet.
38、http.*;import com.beans.BookBean;import com.beans.BookDAO;public class BookQueryServlet extends HttpServlet public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException String bookid = request.getParameter("bookid"); BookDAO bookdao = new
39、BookDAO(); BookBean book = bookdao.searchBook(bookid); if(book!=null) request.getSession().setAttribute("book", book); RequestDispatcher view = request.getRequestDispatcher("/display.jsp"); view.forward(request, response); else RequestDispatcher view = request.getRequestDispatche
40、r("/errorPage.jsp"); view.forward(request, response);【步驟8】下面的Servlet實現向數據庫插入數據,并將控制請求的轉發到bookInsert.jsp頁面。package com.control;import java.io.*;import java.sql.*;import javax.servlet.*;import javax.servlet.http.*;import com.beans.BookBean;import com.beans.BookDAO;public class BookInsertServ
41、let extends HttpServlet public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException request.setCharacterEncoding("gb2312"); String message = null; BookBean book = new BookBean( request.getParameter("bookid"),request.getParameter("title"), request.getParameter("author"),request.getParameter("publisher"), Floa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數學 2024-2025學年人教版七年級數學下冊期末考試卷
- 2019-2025年中級經濟師之中級工商管理高分通關題型題庫附解析答案
- 2025年上海市中考語文真題試卷含答案(回憶版)
- 環境經濟法律法規咨詢重點基礎知識點歸納
- 環境教育課程設計重點基礎知識點歸納
- 土木工程BIM技術標準與實施案例
- 房地產項目預算編制實務
- 護理實踐中的個人保護與職業發展
- 快樂的春節插畫故事時光
- 基于BIM的高樁基樁施工案例研究
- 砂石料加工廠勞務外包服務采購項目
- 小學教育中數學與語文教學的融合實施
- 列車網絡控制技術-復習打印版
- Axsym(雅培化學發光儀)簡易維修手冊第10單元 故障操作
- 臨床常見檢驗指標
- NGW型行星齒輪傳動系統的優化設計
- 面試成績通知單(上下聯式)
- 三年級上冊數學教案-第七單元 分數的初步認識 蘇教版
- 2009吉林省職稱評審表(共4頁)
- 流動式式起重機司機實操考核評分表
- 最新小學生成長記錄(課堂PPT)
評論
0/150
提交評論