時間:2023-10-06 16:06:01 | 來源:網(wǎng)站運營
時間:2023-10-06 16:06:01 來源:網(wǎng)站運營
Java web實驗報告:JDBC訪問數(shù)據(jù)庫:注:本實驗代碼要根據(jù)實際做適當修改才能運行create database bookstoreGOUse bookstoreCREATE TABLE books ( bookid character(5) PRIMARY KEY, --書號 title varchar(80), --書名author character varying(20), --作者 publisher character varying (40), --出版社 price real --價格);GoINSERT INTO books VALUES ('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 開發(fā)技術(shù)祥解', '孫衛(wèi)琴', '機械工業(yè)出版社',45);INSERT INTO books VALUES ('203', 'JSP 應用開發(fā)技術(shù)', '柳永坡','人民郵電出版社',52);INSERT INTO books VALUES ('205', 'J2EE 1.4 編程指南', 'Spielman Sue','電子工業(yè)出版社',68);
注意:需要將數(shù)據(jù)庫的JDBC驅(qū)動程序安裝到應用程序的WEB-INF/lib目錄中<%@ 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 = "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("<table 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)+"</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>
通過數(shù)據(jù)源訪問數(shù)據(jù)庫<?xml version="1.0" encoding="UTF-8"?><Context reloadable="true"><Resourceauth="Container"driverClassName="net.sourceforge.jtds.jdbc.Driver"maxActive="10" maxIdle="2" maxWait="5000"name="jdbc/bookDS"username="sa"password="123"type="javax.sql.DataSource"url="jdbc:jtds:sqlserver://localhost:1433/;DatabaseName=bookstore"validationQuery="select 1"/></Context>
【步驟2】使用下面的JSP頁面displayBooks.jsp訪問數(shù)據(jù)庫<%@ page contentType="text/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/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>作者</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></tr>");}out.println("</table>");rs.close();stmt.close();conn.close();}catch (Exception e) { out.println(e.getMessage());}%></body></html>
綜合應用。本實驗采用MVC設(shè)計模式,通過數(shù)據(jù)源和DAO對象訪問數(shù)據(jù)庫。其中JavaBeans實現(xiàn)模型,訪問數(shù)據(jù)庫,Servlet實現(xiàn)控制器,JSP頁面實現(xiàn)視圖。package com.beans;import java.io.*;public class 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.bookid = 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 () { 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 = publisher;}}
【步驟2】下面的BookDAO是一個簡單的JavaBeans,它實現(xiàn)數(shù)據(jù)庫的訪問。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 BookDAO(){ try{ if(context == null){ context = new InitialContext(); } dataSource = (DataSource)context.lookup("java:comp/env/jdbc/bookDS"); }catch(NamingException e2){ } } // 根據(jù)書號查詢圖書信息 public BookBean searchBook(String bookid){ Connection conn = null; PreparedStatement pstmt = null; ResultSet rst = null; BookBean 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("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){ } } } // 插入一本圖書記錄 public 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,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實現(xiàn)根據(jù)書號查詢圖書信息<%@ page contentType="text/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="submit" value="提交"></form></body></html>
【步驟4】下面的JSP頁面bookInsert.jsp實現(xiàn)向數(shù)據(jù)庫中插入數(shù)據(jù)<%@ page contentType="text/html; charset=gb2312" %><html><head> <title>Book Insert</title></head><body><h3>請輸入圖書信息:</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" ></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>出版社</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="確定" ></td> <td><input type="reset" value="重置" ></td> </tr></table></form></body></html>【步驟5】顯示查詢結(jié)果的JSP頁面display.jsp:<%@ page contentType="text/html;charset=gb2312"%><jsp: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 name="book" property="author"/> 出版社:<jsp:getProperty name="book" property="publisher"/> 價格:<jsp:getProperty name="book" property="price"/></body></html>
【步驟6】錯誤頁面errorPage.jsp代碼如下:<%@ page contentType="text/html;charset=gb2312"%><html><body> 對不起,您查的圖書不存在!</body></html>
【步驟7】下面的Servlet實現(xiàn)從請求參數(shù)獲得書號,然后從數(shù)據(jù)庫中查找該書,最后根據(jù)查詢結(jié)果將請求轉(zhuǎn)發(fā)到顯示頁面(display.jsp)或錯誤頁面(errorPage.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 BookQueryServlet extends HttpServlet{ public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ String bookid = request.getParameter("bookid"); BookDAO bookdao = new 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.getRequestDispatcher("/errorPage.jsp"); view.forward(request, response); } } }
【步驟8】下面的Servlet實現(xiàn)向數(shù)據(jù)庫插入數(shù)據(jù),并將控制請求的轉(zhuǎn)發(fā)到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 BookInsertServlet 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"), Float.parseFloat(request.getParameter("price")) ); BookDAO bookdao = new BookDAO(); boolean success = bookdao.insertBook(book); if(success){ message = "成功插入一條記錄!"; }else{ message = "插入記錄錯誤!"; } request.setAttribute("result",message); RequestDispatcher view = request.getRequestDispatcher("/bookInsert.jsp"); view.forward(request, response); }}
【步驟9】在DD文件中部署Servlet,將下列代碼添加到DD文件的適當位置 <servlet> <servlet-name>bookQuery</servlet-name> <servlet-class>com.control.BookQueryServlet</servlet-class> </servlet><servlet> <servlet-name>bookInsert</servlet-name> <servlet-class>com.control.BookInsertServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>bookQuery</servlet-name> <url-pattern>/bookquery.do</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>bookInsert</servlet-name> <url-pattern>/bookinsert.do</url-pattern> </servlet-mapping>
運行bookQuery.jsp,進行查詢操作:關(guān)鍵詞:訪問,數(shù)據(jù),報告,實驗
微信公眾號
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。