1、JavaWeb用MV模式C实现简单的图书管理系统报告资料软件开发基础(Java)综合性实验报告题 目: MVC实验 图书管理系统班 级: 学生学号: 学生姓名: 指导老师: 提交时间: 2016年1月14日 数学与信息学院一、实验目的掌握基于MVC的三层架构。二、实验题目通过数据源和DAO对象访问数据库.其中JavaBeans实现模型,访问数据库,Servlet实现控制器,JSP页面实现视图。模型包括2个JavaBean:BookBean用于存放图书信息,BookDAO用于访问数据库。控制器包括2个Servlet:BookQueryServlet根据请求参数查询图书信息、BookInsertS
2、ervlet用来向数据库中插入数据。视图包括4个JSP页面:bookQuery。jsp显示查询页面、bookInsert.jsp显示插入页面、display.jsp显示查询结果页面和errorPage.jsp显示错误页面.三、具体实现1.设计数据库CREATE TABLE books ( bookid varchar(20) PRIMARY KEY, title varchar(50)author varchar(30), publisher varchar(40), price Float);2.程序流程查询图书信息插入图书信息3.代码实现(1)存放图书信息的JavaBeans代码BookB
3、ean。javapackage 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 B
4、ookBean(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 getAuth
5、or() 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
6、(float price)this。price=price; public void setPublisher (String publisher) this.publisher = publisher;(2)BookDAO是一个简单的JavaBeans,它实现数据库的访问package com.beans;import java.sql。*;import javax.sql。*;import javax。naming。;import java.util。ArrayList;public class BookDAO private static Context context= null; p
7、rivate DataSource dataSource = null; public BookDAO() try if(context = null) context = new InitialContext(); context = (Context)context。lookup(“java:comp/env); / 连接的是在context。xml下面配置的数据库连接池 dataSource = (DataSource)context。lookup(”databasePool”); catch(NamingException e2) / 根据书号查询图书信息 public BookBea
8、n 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
9、(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()
10、; 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,bo
11、ok.getTitle()); pstmt。setString(3,book。getAuthor(); pstmt.setString(4,book.getPublisher()); pstmt.setFloat(5,book。getPrice(); pstmt.executeUpdate(); pstmt.close(); return true; catch(SQLException se) return false; finally try conn。close(); catch(SQLException se) (3)JSP页面bookQuery.jsp实现根据书号查询图书信息 pag
12、e contentType=text/html; charset=UTF8 %htmlhead Book Query/head请输入一个书号:brform action=bookquery.do method = post”input type=”text” name=”bookid”input type=”submit value=提交”/form(4)JSP页面bookInsert。jsp实现向数据库中插入数据 page contentType=text/html; charset=UTF-8” head Book Insert/title/headh3请输入图书信息:/h3 if(req
13、uest.getAttribute(”result)!=null) out.print(request。getAttribute(result”));form action = ”bookinsert。do method = post” 书号/td td td书名tdinput type=text name=title” 作者/tdtd/td/tr td出版社tdinput type=text” name=”publisher trtdinput type=”text” name=price” /tr trtd/td td/td /table/formjsp:useBean id=”book”
14、 class=”com.beans.BookBean scope=session”/ 书号:jsp:getProperty name=book” property=bookid/ 书名:jsp:getProperty name=”book property=title”/ 作者:jsp:getProperty name=book property=”author/ 出版社:jsp:getProperty name=”book property=publisher/ 价格:(7)从数据库中查找该书,最后根据查询结果将请求转发到显示页面(display。jsp)或错误页面(errorPage。js
15、p)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 ServletExce
16、ption,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, re
17、sponse); else RequestDispatcher view = request。getRequestDispatcher(”/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;i
18、mport com。beans。BookDAO;public class BookInsertServlet extends HttpServlet public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException request。setCharacterEncoding(UTF8”); String message = null; BookBean book = new BookBean( request.getParameter(”b
19、ookid”),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。setAttr
20、ibute(result”,message); RequestDispatcher view = request。getRequestDispatcher(/bookInsert。jsp); view。forward(request, response); (9)配置context文件 Resource name=databasePool type=javax。sql.DataSource” auth=”Container driverClassName=com。mysql。jdbc。Driver” url=jdbc:mysql:/localhost:3306/library?useUnico
21、de=trueamp;characterEncoding=UTF-8 username=”root password=”zzhao maxTotal=”8 maxIdle=”2 maxWaitMillis=”60000” /Context(10)在web。xml文件中部署Servlet和context资源?xml version=”1。0 encoding=”UTF8”?web-app xmlns:xsi=http:/www.w3。org/2001/XMLSchema-instance” xmlns=”http:/java。 xsi:schemaLocation=http:/java。 htt
22、p:/java。 id=”WebApp_ID version=”3.0 SimpleBookManager/displayname welcomefileindex.htmlindex。htm welcome-fileindex.jsp welcome-filedefault.html welcome-filedefault.htm/welcome-file welcome-filedefault。jsp/welcome-file /welcome-filelist resrefnamedatabasePool res-typejavax.sql.DataSource/res-type res
23、-authContainer/res-auth /resourceref bookQuery/servlet-name control。BookQueryServlet/servletclass /servlet servlet-namebookQuery/servletname urlpattern/bookquery.do /servletmapping servlet servlet-classcontrol。BookInsertServlet/servletclass /servlet servlet-mapping servlet-namebookInsert/servletname url-pattern/bookinsert.do/webapp4.测试与结果首页查询操作当数据库中有这个图书的编号时当数据库中没有这个图书的编号时插入操作查询刚才插入的书,是否已经保存到数据库中四、感想和总结 这次实验,给自己一个机会系统的复习下自己以前学习的知识,加深对MVC框架的理解,以及对数据库的操作,再者就是Tomcat环境下的数据库链接池的使用,如何配置使用等,还有在试验中遇到了字符编码插入数据库时乱码的问题,在扩展了自己对字符编码乱码的处理。总的来说,是学习到了一些东西。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1