Java Web实验程序设计_图书借阅网站的实现——图书借还

预 习 报 告

实验题目:图书借阅网站的实现——图书借还

预习内容:

  1. Servlet技术具有的特点

⑴方便性 ⑵跨平台性 ⑶灵活性和可扩展性

2.JSP的概述

JSP 全名是 Java Server Pages,它是建立在Servlet 规范之上的动态网页开发技术。在JSP文件中,HTML代码与Java代码共同存在,其中,HTML代码用来实现网页中静态内容的显示,Java 代码用来实现网页中动态内容的显示。

3.JavaBean的属性介绍

JavaBean的属性,和成员变量不是一个概念,它是以方法定义的形式出现的,并且这些方法必须遵循一定的命名规范。

4.JDBC的概述

DBC 的全称是 Java 数据库连接(Java Database Connectivity ),它是一套用于执行SQL语句的Java API。应用程序可通过这套API连接到关系型数据库,并使用SQL语句来完成对数据库中数据的查询、更新、新增和删除的操作。

5.MVC的控制器介绍

控制器(Controller)是负责应用程序中处理用户交互的部分,它负责从视图中读取数据,控制用户输入,并向模型发送数据。

  1. 一个典型的DAO实现应有的组件

(1)一个DAO工厂类;

(2) 一个DAO接口;

(3) 一个实现DAO接口的具体类;

(4) 数据传递对象(有些时候叫做值对象)

实验目的与要求(及主要实验仪器、设备):

1、掌握Servlet的基本特性、生命周期和编程方式;

2、掌握JSP的基本特性和编程方式;

3、掌握JavaBean的基本特性和编程方式;;

4、掌握MVC和DAO设计模式的编程特性;

5、使用MVC和DAO设计模式设计图书借阅网站中图书借还的功能。

本次实验采用的主要设备:自带电脑。

实验原理(方法与与原理分析):

  1. navigation.jsp 管理员导航条界面
  2. banner.jsp: 头部界面  
  3. caseinfo.java  书架实体类
  4. Borrowinfo.java  图书借阅实体类
  5. book_borrow.jsp 图书借阅设置界面
  6. Book_back.jsp 图书归还界面
  7. bookcase_queryall.jsp  书架信息设置界面
  8. bookcase_add.jsp  书架信息添加界面
  9. bookcase_update.jsp  书架信息修改界面
  10. BookCaseAdd Servlet.java 书架信息添加功能控制器类
  11. BookCaseQueryAllServlet.java 书架信息功能控制器类
  12. BookCaseUpdateServlet.java  书架信息删除功能控制器类
  13. BookBorrow Servlet.java 图书借阅功能控制器类
  14. BookRack Servlet.java 图书归还功能控制器类
  15. BookCaseDAO.java  书架信息功能接口类
  16. BookborrowDAO.java  图书借阅功能接口类
  17. bookCaseDAOImpl.java:书架信息功能实现类
  18. BookborrowDAOImpl.java:图书借阅功能实现类
  19. DAOFactory.java 工厂类
  20. DBConnection.java:数据库连接类
  21. web.xml 配置文件

实验步骤(程序代码与实验过程):

1.caseinfo.java  
package vo;
public class bookcase {
private   int bookcaseid;
private   String  bookcasename;
public int getBookcaseid() {
return bookcaseid;
}
public void setBookcaseid(int bookcaseid) {
this.bookcaseid = bookcaseid;
}
public String getBookcasename() {
return bookcasename;
}
public void setBookcasename(String bookcasename) {
this.bookcasename = bookcasename;
}
}
2、Borrowinfo.java
package vo;
import java.sql.Date;
public class BookBorrow {
int id;
int bookid;
int readerid;
Date bborrowtime;
Date bytime;
Date bbacktime;
int renew;
double fine;
int borrownumber;
String bookname;
int over1;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getBookid() {
return bookid;
}
public void setBookid(int bookid) {
this.bookid = bookid;
}
public int getReaderid() {
return readerid;
}
public void setReaderid(int readerid) {
this.readerid = readerid;
}
public Date getBborrowtime() {
return bborrowtime;
}
public void setBborrowtime(Date bborrowtime) {
this.bborrowtime = bborrowtime;
}
public Date getBytime() {
return bytime;
}
public void setBytime(Date bytime) {
this.bytime = bytime;
}
public Date getBbacktime() {
return bbacktime;
}
public void setBbacktime(Date bbacktime) {
this.bbacktime = bbacktime;
}
public int getRenew() {
return renew;
}
public void setRenew(int renew) {
this.renew = renew;
}
public double getFine() {
return fine;
}
public void setFine(double fine) {
this.fine = fine;
}
public int getBorrownumber() {
return borrownumber;
}
public void setBorrownumber(int borrownumber) {
this.borrownumber = borrownumber;
}
public String getBookname() {
return bookname;
}
public void setBookname(String bookname) {
this.bookname = bookname;
}
public int getOver() {
return over1;
}
public void setOver1(int over1) {
this.over1 = over1;
}
public void setTotal(int int1) {		
}
public void setTotal1(int int1) {		
}	
}

2.book_borrow.jsp
 <%@include file="banner.jsp"%>
 <%@include file="navigation.jsp"%>
  
<table width="778"  border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td valign="top" bgcolor="#FFFFFF">
<table width="100%" height="509"  border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="tableBorder_gray">
<tr>
<td height="27" valign="top" style="padding:5px;" class="word_orange">
当前位置:图书借还 &gt; 图书借阅 &gt;&gt;&gt;</td>
</tr>
<tr>
<td align="center" valign="top" style="padding:5px;">
<table width="100%"  border="0" cellspacing="0" cellpadding="0">
<form name="form1" method="post" action="BorrowServlet">
<tr>
<tdheight="47"background="Images/borrowBackRenew.gif">
&nbsp;</td>
</tr>
<tr>
<tdheight="72"align="center"valign="top"background="Images/main_booksort_1.gif"bgcolor="#F8BF73">
<tablewidth="96%"border="0"cellpadding="1"cellspacing="0"bordercolor="#FFFFFF"bgcolor="#F8BF73">
<tr>
<tdvalign="top"bgcolor="#F8BF73">
<tablewidth="100%"border="0"cellpadding="0"cellspacing="0"bgcolor="#FFFFFF">
<%inti=Integer.parseInt(request.getParameter("i"));if(i==1){%>
<tr>
<td>
<tablewidth="90%"height="21"border="0"cellpadding="0"cellspacing="0">
<tr>
<tdwidth="24%"height="18"style="padding-left:7px;padding-top:7px;">
<imgsrc="Images/reader_checkbg.jpg"width="142"height="18">
</td>
<tdwidth="76%"style="padding-top:7px;">
读者编号:<inputname="readerNo"type="text"id="readerNo"value=""size="24">
&nbsp;<inputname="Button"type="button"class="btn_grey"value="确定"onClick="checkreader(form1)">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<tdheight="13"align="center"style="padding-left:7px">
<hrwidth="90%"size="1">
</td>
</tr>
<tr>
<tdalign="center">
<tablewidth="96%"border="0"cellpadding="0"cellspacing="0">
<tr>
姓&nbsp;&nbsp;&nbsp;&nbsp;名:<inputtype="text"name="readername"id="readername"value="">
<br>
读者类型:<inputname="rtypename"type="text"id="rtypename"value="">
<br>
可借数量:<inputname="number1"type="text"id="number1"value=""size="17">
册&nbsp;<br>
身份证号:<inputname="idcard"type="text"id="1"value="">
<br>
已借数量:<inputname="borrownumber"type="text"id="borrownumber"value=""size="17">
册&nbsp;<br>
</tr>
</table>
<tablewidth="100%"border="0"cellpadding="0"cellspacing="0"bgcolor="#FFFFFF">
<%}		else		{%>
<tr>
<td>
<tablewidth="90%"height="21"border="0"cellpadding="0"cellspacing="0">
<tr>
<tdwidth="24%"height="18"style="padding-left:7px;padding-top:7px;">
<imgsrc="Images/reader_checkbg.jpg"width="142"height="18">
</td>
<tdwidth="76%"style="padding-top:7px;">
读者编号:<inputname="readerNo"type="text"id="readerNo"value="<%=session.getAttribute("readerid")%>
"size="24">
&nbsp;<inputname="Button"type="button"class="btn_grey"value="确定"onClick="checkreader(form1)">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<tablewidth="90%"height="21"border="0"cellpadding="0"cellspacing="0">
<%	ReaderInforeaderinfo=(ReaderInfo)session.getAttribute("readerinfo");	%>
</table>
</td>
</tr>
<tr>
<tdalign="center">
<tablewidth="96%"border="0"cellpadding="0"cellspacing="0">
<tr>
<tdheight="27">
姓&nbsp;&nbsp;&nbsp;&nbsp;名:<inputname="readername"type="text"id="readername"value="<%=readerinfo.getReadername()%>
">
</td>
<td>
读者类型:<inputname="rtypename"type="text"id="rtypename"value="<%=readerinfo.getReadertypename()%>
">
</td>
<td>
可借数量:<inputname="number1"type="text"id="number1"value="<%=readerinfo.getNumber()%>
"size="17">
册&nbsp;</td>
</tr>
<tr>
<td>
证件编号:<inputname="idcard"type="text"id="1"value="<%=readerinfo.getIdcard()%>
">
</td>
<td>
已借数量:<inputname="borrownumber"type="text"id="borrownumber"value="<%=readerinfo.getBorrownumber()%>
"size="17">
册&nbsp;</td>
</tr>
</table>
<%}%>
<tr>
<tr>
<tdheight="32"background="Images/borrow_if.gif">
&nbsp;添加的依据:<inputname="f"type="radio"class="noborder"value="barcode"checked>
图书编号&nbsp;&nbsp;
<inputname="inputkey"type="text"id="inputkey"size="50">
<inputname="Submit2"type="button"class="btn_grey"value="确定"onClick="checkbook(form1)">
<inputname="Button"type="button"class="btn_grey"value="完成借阅"onClick="window.location.href='book_borrow.jsp?i=2'">
</td>
</tr>
<tdvalign="top"bgcolor="#FCEC9A"style="padding:5px">
<tablewidth="99%"border="1"cellpadding="0"cellspacing="0"bordercolor="#FFFFFF"bordercolorlight="#FFFFFF"bordercolordark="#F6B83B"bgcolor="#FFFFFF">
<tralign="center"bgcolor="#F9D16B">
<tdwidth="29%"height="25">
图书名称</td>
<tdwidth="12%">
借阅时间</td>
<tdwidth="14%">
应还时间</td>
<tdwidth="17%">
现存量</td>
<tdwidth="14%">
库存量</td>
<%if(i!=1){List<BookBorrow>
allbookborrow=(List<BookBorrow>
)session.getAttribute("allbookborrow");for(intj=0;j<allbookborrow.size();j++){BookBorrowbookborrow=allbookborrow.get(j);%>
</tr>
<tdstyle="padding:5px;">
<%=bookborrow.getBookname()%>
</td>
<tdstyle="padding:5px;">
<%=bookborrow.getBborrowtime()%>
</td>
<tdstyle="padding:5px;">
<%=bookborrow.getBytime()%>
</td>
</tr>
<%}}%>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</form>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
                 
4.Book_back.jsp
<%@pageimport="java.text.SimpleDateFormat"%>
<%@pageimport="java.text.DateFormat"%>
<%@pagecontentType="text/html;charset=gb2312"language="java"import="java.sql.*,vo.*,java.util.*"errorPage=""%>
<%@pageimport="java.util.*"%>
<html>
<head>
<title>图书管理系统</title>
<linkhref="CSS/style.css"rel="stylesheet">
<scriptlanguage="javascript">functioncheckreader(form){
if(form.barcode.value==""){
alert("请输入读者条形码!");form.barcode.focus();return;
}
form.submit();
}
</script>
</head>
<bodyonLoad="clockon(bgclock)">
<%@includefile="banner.jsp"%>
<%@includefile="navigation.jsp"%>
<tablewidth="778"border="0"cellspacing="0"cellpadding="0"align="center">
<tr>
<tdvalign="top"bgcolor="#FFFFFF"><tablewidth="100%"height="558"border="0"align="center"cellpadding="0"cellspacing="0"bgcolor="#FFFFFF"class="tableBorder_gray">
<tr>
<tdheight="27"valign="top"style="padding:5px;"class="word_orange">&nbsp;当前位置:图书借还&gt;图书归还&gt;&gt;&gt;</td>
</tr>
<tr>
<tdalign="center"valign="top"style="padding:5px;"><tablewidth="100%"border="0"cellspacing="0"cellpadding="0">
<tr>
<tdheight="47"background="Images/borrowBackRenew_back.gif">&nbsp;</td>
</tr>
<tr>
<tdheight="72"align="center"valign="top"background="Images/main_booksort_1.gif"bgcolor="#F8BF73"><tablewidth="96%"border="0"cellpadding="1"cellspacing="1"bordercolor="#F8BF73">
<%
inti=Integer.parseInt(request.getParameter("i"));
if(i==1){
%>
<tr>
<tdvalign="top"bgcolor="#F8BF73">
<tablewidth="100%"border="0"cellpadding="0"cellspacing="0"bgcolor="#FFFFFF">
<formname="form1"method="post"action="BorrowBackServlet">
<tr>
<td><tablewidth="90%"height="21"border="0"cellpadding="0"cellspacing="0">
<tr>
<tdwidth="24%"height="18"style="padding-left:7px;padding-top:7px;"><imgsrc="Images/reader_checkbg.jpg"width="142"height="18"></td>
读者编号:
<inputname="barcode"type="text"id="barcode"value=""size="24">
&nbsp;
<inputname="Button"type="button"class="btn_grey"value="确定"onClick="checkreader(form1)"><br>
</tr>
</table></td>
</tr>
<tr>
<tdheight="13"align="left"style="padding-left:7px;"><hrwidth="90%"size="1"></td>
</tr>
<tr>
<tdalign="center"><tablewidth="96%"border="0"cellpadding="0"cellspacing="0">
<tr>
姓&nbsp;&nbsp;&nbsp;&nbsp;名:
<inputname="readername"type="text"id="readername"value=""><br>
读者类型:
<inputname="readerType"type="text"id="readerType"value=""><br>
可借数量:
<inputname="number"type="text"id="number"value=""size="17">
册
&nbsp;<br>
</tr>
<tr>
证件号码:
<inputname="paperNo"type="text"id="paperNo"value=""><br>
已借数量:
<inputname="borrownumber"type="text"id="number"value=""size="17">
册
&nbsp;<br>
<td>超期天数:<fontcolor="red">红色</font>为已超期&nbsp;
<fontcolor="blue">蓝色</font>为可续借</td>
</tr>
</table></td>
</tr>				
</form>
</table></td>
</tr>
<tr>
<tdvalign="top"><tablewidth="100%"height="35"border="1"cellpadding="0"cellspacing="0"bordercolor="#FFFFFF"bordercolorlight="#FFFFFF"bordercolordark="#F6B83B"bgcolor="#FFFFFF">
<tralign="center"bgcolor="#e3F4F7">
<tdwidth="24%"height="25"bgcolor="#FFF9D9">图书名称</td>
<tdwidth="12%"bgcolor="#FFF9D9">借阅时间</td>
<tdwidth="13%"bgcolor="#FFF9D9">应还时间</td>
<tdwidth="13%"bgcolor="#FFF9D9">超期天数</td>
<tdwidth="13%"bgcolor="#FFF9D9">罚金</td>
<tdwidth="14%"bgcolor="#FFF9D9">ISBN</td>
<tdwidth="12%"bgcolor="#FFF9D9">书架</td>
<tdwidth="12%"bgcolor="#FFF9D9"><inputname="Button22"type="button"class="btn_grey"value="完成归还"onClick="window.location.href='bookBack.jsp'"></td>
</tr>
</table>
</td>
</tr>
<%}%>
<%
if(i!=1){
%>
<tr>
<tdvalign="top"bgcolor="#F8BF73">
<tablewidth="100%"border="0"cellpadding="0"cellspacing="0"bgcolor="#FFFFFF">
<formname="form1"method="post"action="BorrowBackServlet">
<%ReaderInforeaderinfo=(ReaderInfo)session.getAttribute("readerinfo");%>
<tr>
<td><tablewidth="90%"height="21"border="0"cellpadding="0"cellspacing="0">
<tr>
<tdwidth="24%"height="18"style="padding-left:7px;padding-top:7px;"><imgsrc="Images/reader_checkbg.jpg"width="142"height="18"></td>
<tdwidth="76%"style="padding-top:7px;">读者编号:
<inputname="barcode"type="text"id="barcode"value="<%=readerinfo.getReaderid()%>"size="24">
&nbsp;
<inputname="Button"type="button"class="btn_grey"value="确定"onClick="checkreader(form2)"></td>
</tr>
</table></td>
</tr>
<tr>
<tdheight="13"align="left"style="padding-left:7px;"><hrwidth="90%"size="1"></td>
</tr>
<tr>
<tdalign="center"><tablewidth="96%"border="0"cellpadding="0"cellspacing="0">
<tr>
<tdheight="27">姓&nbsp;&nbsp;&nbsp;&nbsp;名:
<inputname="readername"type="text"id="readername"value="<%=readerinfo.getReadername()%>"></td>
<td>读者类型:
<inputname="readerType"type="text"id="readerType"value="<%=readerinfo.getReadertypename()%>"></td>
<td>可借数量:
<inputname="number"type="text"id="number"value="<%=readerinfo.getNumber()%>"size="17">
册
&nbsp;</td>
</tr>
<tr>
<td>证件号码:
<inputname="paperNo"type="text"id="paperNo"value="<%=readerinfo.getIdcard()%>"></td>
<td>已借数量:
<inputname="borrownumber"type="text"id="number"value="<%=readerinfo.getBorrownumber()%>"size="17">
册
&nbsp;</td>
<td>超期天数:<fontcolor="red">红色</font>为已超期&nbsp;
<fontcolor="blue">蓝色</font>为可续借</td>
</tr>
</table></td>
</tr>				
</form>
</table>
<%}%>
</td>
</tr>
<%
if(i!=1){
%>
<tr>
<tdvalign="top"><tablewidth="100%"height="35"border="1"cellpadding="0"cellspacing="0"bordercolor="#FFFFFF"bordercolorlight="#FFFFFF"bordercolordark="#F6B83B"bgcolor="#FFFFFF">
<tralign="center"bgcolor="#e3F4F7">
<tdwidth="24%"height="25"bgcolor="#FFF9D9">图书名称</td>
<tdwidth="12%"bgcolor="#FFF9D9">借阅时间</td>
<tdwidth="13%"bgcolor="#FFF9D9">应还时间</td>
<tdwidth="13%"bgcolor="#FFF9D9">超期天数</td>
<tdwidth="13%"bgcolor="#FFF9D9">罚金</td>
<tdwidth="14%"bgcolor="#FFF9D9">现存量</td>
<tdwidth="12%"bgcolor="#FFF9D9">库存量</td>
<tdwidth="12%"bgcolor="#FFF9D9"><inputname="Button22"type="button"class="btn_grey"value="完成归还"onClick="window.location.href='bookBack.jsp'"></td>
</tr>
<%
List<BookBorrow>allbookborrow=(List<BookBorrow>)session.getAttribute("allbookborrow");
for(intj=0;j<allbookborrow.size();j++){
BookBorrowbookborrow=allbookborrow.get(j);
%>
<tr>
<inputname="borrowid"type="hidden"value="<%=bookborrow.getId()%>"/>
<inputname="bookid"type="hidden"value="<%=bookborrow.getBookid()%>"/>
<tdheight="25"style="padding:5px;">&nbsp;<%=bookborrow.getBookname()%></td>
<tdstyle="padding:5px;">&nbsp;<%=bookborrow.getBborrowtime()%></td>
<tdstyle="padding:5px;">&nbsp;<%=bookborrow.getBytime()%></td>
<%intover1=bookborrow.getOver();
if(over1<0){
over1=-over1;
doublefine=over1*1.5;%>
<tdstyle="padding:5px;">&nbsp;<fontcolor="red">已超期<%=over1%>天</font></td>
<tdstyle="padding:5px;">&nbsp;<fontcolor="red"><%=fine%></font></td>
<%}else{%>
<tdstyle="padding:5px;">&nbsp;<fontcolor="blue"><%=over1%>天后超期</font></td>
<tdstyle="padding:5px;">&nbsp;</td>
<%}%>
<tdwidth="12%"align="center"><ahref="BookReturnServlet?borrowid=<%=bookborrow.getId()%>&bookid=<%=bookborrow.getBookid()%>">归还</a>&nbsp;</td>
</tr>
<%}%>
</table>
</td>
</tr>
<%}%>
</table></td>
</tr>
<tr>
<tdheight="19"background="Images/main_booksort_2.gif">&nbsp;</td>
</tr>
</table></td>
</tr>
</table>
<%@includefile="copyright.jsp"%></td>
</tr>
</table>
</body>
</html>

5.bookcase_queryall.jsp
<body>     
<%@include file="banner.jsp" %>     
<%@include file="navigation.jsp" %>     
<table width="778"  border="0" cellspacing="0" cellpadding="0" align="center">      
<tr>         
<td height="385" valign="top" bgcolor="#FFFFFF">
<table width="99%" height="341"  border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="tableBorder_gray">       
<tr>         
<td height="341" valign="top" style="padding:5px;">
<table width="98%" height="295"  border="0" cellpadding="0" cellspacing="0">      
<tr>          
<td height="22" valign="top" class="word_orange">当前位置:书架管理信息 &gt; 书架类型设置 &gt;&gt;&gt;
</td>      
</tr>      
<tr>        
<td height="273" align="center" valign="top">          
<table width="100%"  border="0" cellspacing="0" cellpadding="0">            
<tr>           
<td>
<a href="bookcase_add.jsp" >添加书架类型信息
</a> 
</td>                   
</tr>          
</table>   
<table width="91%"  border="1" cellpadding="0" cellspacing="0" bordercolor="#FFFFFF" bordercolordark="#F6B83B" bordercolorlight="#FFFFFF">  
<tr align="center" bgcolor="#e3F4F7">    
<td width="30%" bgcolor="#F9D16B">书架类型编号
</td>    
<td width="40%" bgcolor="#F9D16B">书架类型名称
</td>    
<td width="16%" bgcolor="#F9D16B">修改
</td>    
<td width="14%" bgcolor="#F9D16B">删除
</td>  
</tr>
<!-- 取值显示 allBookcase(List) 会话  for——Bookcase——bookcaseid  bookcasename -->
<%    List
<bookcase> allbookcase = (List
<bookcase>) session.getAttribute("allbookcase");    
for(int i=0;i
<allbookcase.size();i++){    bookcase bookcase=allbookcase.get(i); %>  
<tr>   
<td style="padding:5px;">
<%=bookcase.getBookcaseid()%>
</td>   
<!-- 显示 -->    
<td style="padding:5px;">
<%=bookcase.getBookcasename()%>
</td>    
<td align="center">
<a href="BookcaseSearchServlet?bookcaseid=
<%=bookcase.getBookcaseid()%>">修改
</a>
</td>    
<td align="center">
<a href="BookcaseDeleteServlet?bookcaseid=
<%=bookcase.getBookcaseid()%>">删除
</a>
</td>   
</tr>
<%} %> 
</table>
</td>      
</tr>    
</table>
</td>  
</tr>
</table>
<%@ include file="copyright.jsp"%>
</td>  
</tr>
</table>  
</body>

6.bookcase_add.java
<table width="292" height="175" border="0" cellpadding="0" cellspacing="0" background="Images/subBG.jpg">
<tr>
<td valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="3%" height="25">&nbsp;</td>
<td width="94%">&nbsp;</td>
<td width="3%">&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td><table width="100%" height="131"  border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center" valign="top">
<form name="form1" method="post" action="BookcaseAddServlet">
<table width="100%" height="114"  border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="74" align="center">书架类型编号:
<input name="bookcaseid" case="text"><br>
书架类型名称:
<input name="bookcasename" case="text"></td>
</tr>
<tr>
<td align="center" style="width: 177px; "><input name="Submit3" case="submit" class="btn_grey" value="保存">
&nbsp;
<input name="Submit22" case="button" class="btn_grey" value="关闭" onClick="window.close();"></td>

7.bookcase_update.jsp
<form name="form1" method="post" action="BookcaseUpdateServlet">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="50" align="center">  书架类型名称:
<%    List<bookcase> updatebookcase=new ArrayList<bookcase>();
updatebookcase=(List<bookcase>)session.getAttribute("updatebookcase"); 
for(int i=0;i<updatebookcase.size();i++){
bookcase  bookcase=updatebookcase.get(i);	
%>  <input name="bookcaseid" case="hidden" value="<%=bookcase.getBookcaseid() %>">
<input name="bookcasename" case="text" value="<%=bookcase.getBookcasename() %>"/>
<%
} %>    
</td> 
</tr>
<tr>
<td height="35" align="center"><input name="Submit" case="submit" class="btn_grey" value="保存">
&nbsp;
<input name="Submit2" case="reset" class="btn_grey" value="重置">
&nbsp;
<input name="Submit3" case="button" class="btn_grey" onClick="window.close()" value="关闭"></td>
</tr>
</table>
</form>

8.BookcaseAddServlet.java
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentcase("text/html;charset=gb18030");
request.setCharacterEncoding("gb18030");
bookcase bookcase=new bookcase();
bookcase.setBookcaseid(Integer.parseInt(request.getParameter("bookcaseid")));
bookcase.setBookcasename(request.getParameter("bookcasename"));
try {
if(DAOFactory.getBookcaseDAOInstance().doCreate(bookcase)){
request.getRequestDispatcher("BookcaseQueryAllServlet").forward(request, response);
}
} catch (Exception e) {
e.printStackTrace();
}
}

9.BookCaseUpdteServlet.java
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentcase("text/html;charset=gb18030");
request.setCharacterEncoding("gb18030");
String bookcasename = request.getParameter("bookcasename");
int bookcaseid = Integer.parseInt(request.getParameter("bookcaseid"));
bookcase bookcase=new bookcase();
bookcase.setBookcaseid(bookcaseid);
bookcase.setBookcasename(bookcasename);
try {
if(DAOFactory.getBookcaseDAOInstance().doUpdate(bookcase)){
request.getRequestDispatcher("BookcaseQueryAllServlet").forward(request, response);
}
} catch (Exception e) {
e.printStackTrace();
}}

10.BookCaseDeleteServlet.java
throws ServletException, IOException {
response.setContentcase("text/html;charset=gb18030");
request.setCharacterEncoding("gb18030");
int bookcaseid=Integer.parseInt(request.getParameter("bookcaseid"));
try {
if(DAOFactory.getBookcaseDAOInstance().doDelete(bookcaseid)){
request.getRequestDispatcher("BookcaseQueryAllServlet").forward(request, response);
}
} catch (Exception e) {
e.printStackTrace();
}
}
11.BookCaseQueryAllServlet.java
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("gb18030");
response.setContentcase("text/html;charset=gb18030");
try {
List<bookcase> allbookcase=DAOFactory.getBookcaseDAOInstance().findAllbookcase();
request.getSession().setAttribute("allbookcase", allbookcase);
request.getRequestDispatcher("bookcase_queryall.jsp").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}

12.BookBorrow Servlet.java 
response.setContentcase("text/html;charset=gb18030");
request.setCharacterEncoding("gb18030");
int readerid=Integer.parseInt(request.getParameter("readerNo"));
try {
String bookid=request.getParameter("inputkey");
if(bookid.equals(null)==false&&bookid.equals("")==false){
int bookid1=Integer.parseInt(request.getParameter("inputkey"));
DAOFactory.getBookBorrowDAOInstance().borrowBook(bookid1, readerid);
}
ReaderInfo readerinfo=DAOFactory.getReaderInfoDAOInstance().findReaderInfoById(readerid);
List<BookBorrow> allbookborrow=DAOFactory.getBookBorrowDAOInstance().findBookBorrowByReaderId(readerid);
request.getSession().setAttribute("allbookborrow", allbookborrow);
request.getSession().setAttribute("readerinfo", readerinfo);
request.getSession().setAttribute("readerid", readerid);
response.sendRedirect("book_borrow.jsp?i=2");
} catch (Exception e) {
e.printStackTrace();
}
}

13.BookBackServlet.java 
throws ServletException, IOException {
response.setContentType("text/html;gb18030");
request.setCharacterEncoding("gb18030");
int readerid=Integer.parseInt(request.getParameter("barcode"));
try {
ReaderInfo readerinfo=DAOFactory.getReaderInfoDAOInstance().findReaderInfoById(readerid);
List<BookBorrow> allbookborrow=DAOFactory.getBookBorrowDAOInstance().findBookBorrowByReaderId(readerid);
request.getSession().setAttribute("readerinfo", readerinfo);
request.getSession().setAttribute("allbookborrow", allbookborrow);
request.getRequestDispatcher("book_back.jsp?i=2").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
}}

14.BookborrowDAO.java 
public List<BookBorrow> findAllBookBorrow() throws Exception;
public List<BookBorrow> findBookBorrowByReaderId(int readerid) throws Exception;
public boolean borrowBook(int bookid,int readerid) throws Exception;
public boolean returnBook(int id,int bookid) throws Exception;
public boolean borrowNumber(int readerid) throws Exception;

15.BookborrowDAOImpl.java
public List<BookBorrow> findAllBookBorrow() throws Exception {
String sql="select * from bookborrow";
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();
while(rs.next()){
BookBorrow bookborrow=new BookBorrow();
bookborrow.setBookid(rs.getInt("bookid"));
bookborrow.setBbacktime(rs.getDate("bbacktime"));
bookborrow.setBborrowtime(rs.getDate("borrowtime"));
bookborrow.setReaderid(rs.getInt("readerid"));
bookborrow.setId(rs.getInt("id"));
bookborrow.setBytime(rs.getDate("bytime"));
bookborrow.setRenew(rs.getInt("renew"));
bookborrow.setFine(rs.getDouble("fine"));
allbookborrow.add(bookborrow);
}
return allbookborrow;
}
@Override
public List<BookBorrow> findBookBorrowByReaderId(int readerid)
throws Exception {
String sql="select b.*,bookinfo.bookname,DATEDIFF(dd,bborrowtime,bytime)as'over',bookinfo.nownumber,bookinfo.total from bookborrow b join bookinfo on b.bookid=bookinfo.bookid where readerid=?";
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1, readerid);
rs=pstmt.executeQuery();
while(rs.next()){
BookBorrow bookborrow=new BookBorrow();
bookborrow.setBookid(rs.getInt("bookid"));
bookborrow.setBbacktime(rs.getDate("bbacktime"));
bookborrow.setBborrowtime(rs.getDate("bborrowtime"));
bookborrow.setReaderid(rs.getInt("readerid"));
bookborrow.setId(rs.getInt("id"));
bookborrow.setBytime(rs.getDate("bytime"));
bookborrow.setRenew(rs.getInt("renew"));
bookborrow.setFine(rs.getDouble("fine"));
bookborrow.setBookname(rs.getString("bookname"));
bookborrow.setBorrownumber(rs.getInt("nownumber"));
bookborrow.setTotal(rs.getInt("total"));
bookborrow.setOver1(rs.getInt("over1"));
allbookborrow.add(bookborrow);
}
return allbookborrow;
}
@Override
public boolean Bookborrow(int bookid,int readerid) throws Exception {
String sql="insert into bookborrow values(?,?,convert(varchar(100),getdate(),102),DATEADD(day,30,convert(varchar(100),getdate(),102)),null,'',null)";
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1, bookid);
pstmt.setInt(2, readerid);
int i=pstmt.executeUpdate();
String sql1="update bookinfo set nownumber=nownumber-1 where bookid=?";
pstmt=conn.prepareStatement(sql1);
pstmt.setInt(1, bookid);
String sql2 = "update readerinfo set borrownumber = borrownumber + 1 where readerid = ?";
pstmt = conn.prepareStatement(sql2);
pstmt.setInt(1, readerid);
i=pstmt.executeUpdate();
if(i==1)
flag=true;
return flag;
}

16.BookCaseDAO.java
public  List<bookcase> findAllbookcase() throws  Exception;
public boolean  doCreate(bookcase  bookcase)throws  Exception;
public boolean  doDelete(int  bookcaseid)throws  Exception; 
public boolean doUpdate(bookcase bookcase)throws Exception;
List<bookcase> findupdate(int bookcaseid) throws Exception;

17.BookCaseDAOImpl.java
public List<bookcase> findAllbookcase() throws Exception {
List<bookcase> allbookcase=new ArrayList<bookcase>();
try{
String sql="select * from bookcase";
conn=dbc.getConnection();
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();
while(rs.next()){
bookcase bookcase=new bookcase();
bookcase.setBookcaseid(rs.getInt("bookcaseid"));
bookcase.setBookcasename(rs.getString("bookcasename"));
allbookcase.add(bookcase);
}
rs.close();
pstmt.close();
}
catch(Exception e){e.printStackTrace();}
finally{dbc.closed();
}
return allbookcase;
}
@Override
public boolean doCreate(bookcase bookcase) throws Exception {
try{
String sql="insert into bookcase values(?,?)";
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1, bookcase.getBookcaseid());
pstmt.setString(2, bookcase.getBookcasename());
int i=pstmt.executeUpdate();
if(i>0){
flag=true;
}
pstmt.close();
}catch(Exception e){e.printStackTrace();}
finally{
dbc.closed();
}	
return flag;
}
@Override
public boolean doDelete(int bookcaseid) throws Exception {
try{
String sql="delete  from bookcase where bookcaseid=?";
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1,bookcaseid);
int i=pstmt.executeUpdate();
if(i>0){
flag=true;
}
pstmt.close();
}catch(Exception e){}
finally{
dbc.closed();
}
return flag;
}
@Override
public List<bookcase> findupdate(int bookcaseid) throws Exception {
List<bookcase> updatebookcase=new ArrayList<bookcase>();
try{
String sql="select bookcaseid,bookcasename from bookcase where bookcaseid=?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, bookcaseid);
rs=pstmt.executeQuery();
while(rs.next()){
bookcase bookcase=new bookcase();
bookcase.setBookcaseid(rs.getInt("bookcaseid"));
bookcase.setBookcasename(rs.getString("bookcasename"));
updatebookcase.add(bookcase);
}
pstmt.close();
}catch(Exception e){
e.printStackTrace();
}finally{
dbc.closed();
}
return updatebookcase;
}
@Override
public boolean doUpdate(bookcase bookcase) throws Exception {
try{
String sql="update bookcase set bookcasename=? where bookcaseid=?";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,bookcase.getBookcasename());
pstmt.setInt(2, bookcase.getBookcaseid());
int i=pstmt.executeUpdate();
if(i>0){
flag=true;
}
pstmt.close();
}
catch(Exception e){e.printStackTrace();}
finally{
dbc.closed();
}
return flag;
}
}
18.web.xml
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>BookCaseAddServlet</servlet-name>
<servlet-class>servlet.BookCaseAddServlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>BookCaseQueryAllServlet</servlet-name>
<servlet-class>servlet.BookCaseQueryAllServlet</servlet-class>
</servlet>
<servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>BookCaseDeleteServlet</servlet-name>
<servlet-class>servlet.BookCaseDeleteServlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>BookCaseUpdateServlet</servlet-name>
<servlet-class>servlet.BookCaseUpdateServlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>BookBorrowServlet</servlet-name>
<servlet-class>servlet.BookBorrowServlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>BookBackServlet</servlet-name>
<servlet-class>servlet.BookBackServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BookBorrowServlet</servlet-name>
<url-pattern>/BookBorrowServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>BookBackServlet</servlet-name>
<url-pattern>/BookBackServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>BookCaseAddServlet</servlet-name>
<url-pattern>/BookCaseAddServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>BookCaseQueryAllServlet</servlet-name>
<url-pattern>/BookCaseQueryAllServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>BookCaseDeleteServlet</servlet-name>
<url-pattern>/BookCaseDeleteServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>BookCaseUpdateServlet</servlet-name>
<url-pattern>/BookCaseUpdateServlet</url-pattern>
 </servlet-mapping>

实验结果(数据分析与结论):

1.查看书架信息

2.添加书架信息

3.查看添加后的书架信息

4.修改图书信息

5.查看修改后的书架信息

6.查看删除后的书架信息

7.图书借阅信息

8.图书续借信息

9.图书归还信息

问题讨论:

  1. 问:出现class not found错误

答:

1.经调试发现问题出于web.xml里<servlet>的 <servlet-class>中;

2.原因是改完包名后忘记了进web.xml里修改;

3.解决方法为进web.xml里把<servlet>的 <servlet-class>中包名进行修改。

  1. 问:在DAOFactory里return new后报错。

答:

  1. 经排查发现问题出现于在DAOFactory里实现类的名字与创建的实现类名字不符
  2. 解决方法为修改实现类的名字并且import
  1. 书架信息查看功能的实现

在主页点击书架设置得到书架设置界面,在主页点击书架设置通过menu.JS界面<a href=”BookCaseQueryAllServlet”>跳转到BookCaseQueryAllServlet,获取表单信息设置会话,通过工厂类DAOFctory中静态方法getBookcaseDAOInstance(),得到BookCaseDAOImpl实现类的对象,通过BookCaseDAO接口来执行数据库中的操作,然后使用vo中findAllbookcase(),通过DBConnection,执行SQL语句,跳转到bookcase_queryall.jsp,将查询到的书架信息显示出来。

  1. 书架信息添加功能的实现

在书架设置界面点击添加书架信息,通过bookcase_queryall.jsp里的<a href="bookcase_add.jsp" >语句,跳转到bookcase_add.jsp,添加信息后通过<form>表单的action属性,跳转到BookCaseAddServlet控制器,在BookCaseAddServlet中使用 request 请求对象的 getParameter()方法获取表单中bookcaseid,bookcasename对应的信息的信息,设置vo后,执行BookCaseDAOImpl实现类的方法doCreate,通过DBConnection,执行SQL语句,使用get()方法跳转到BookCaseQueryAllServlet,使用 List 方法获取书架信息,在设置会话跟踪后跳转到 bookcase_queryall.jsp,最后展现出添加后的书架信息。

  1. 书架信息修改功能的实现

在书架设置界面点击修改,通过bookcase_queryall.jsp里的href语句,跳转到BookCaseSearchServlet,在BookCaseSearchServlet中使用 request 请求对象的 getParameter()方法获取表单中bookcaseid对应的信息,跳转到bookcase_update.jsp,修改完成信息后通过<form>表单的action属性,跳转到BookCaseUpdateServlet控制器,在BookCaseUpdateServlet中使用 request 请求对象的 getParameter()方法获取表单中使用 request 请求对象的 getParameter()方法获取表单中bookcaseid,bookcasename对应的信息的,设置vo后,执行BookCaseDAOImpl实现类的方法findupdate和doUpdate,通过DBConnection,执行SQL语句,使用get()方法跳转到BookCaseQueryAllServlet,使用 List 方法获取书架信息,在设置会话跟踪后跳转到 bookcase_queryall.jsp,最后展现出修改后的书架信息。

  1. 书架信息删除功能的实现

在书架设置界面点击删除,通过bookcase_queryall.jsp里的href语句,跳转到BookCaseDeleteServlet,在BookCaseDeleteServlet中使用 request 请求对象的 getParameter()方法获取表单中bookcaseid对应的信息,执行BookCaseDAOImpl实现类的方法doDelete,通过DBConnection,执行SQL语句,使用get()方法跳转到BookCaseQueryAllServlet,使用 List 方法获取书架信息,在设置会话跟踪后跳转到 bookcase_queryall.jsp,最后展现出删除后的书架信息。

  1. 图书借阅功能的实现

在主页点击图书借阅得到图书借阅界面,通过menu.JS界面的<a href=”BookBorrowServlet”>跳转到BookBorrowServlet,在BookBorrowServlet中使用 request 请求对象的 getParameter()方法获取表单中inputkey对应的信息的信息,设置vo后,执行BookBorrowDAOImpl实现类的方法doCreate,通过DBConnection,执行SQL语句,使用get()方法跳转到 bookborrow.jsp,最后展现出添加后的图书借阅信息。

  1. 图书续借功能的实现

在主页点击图书续借得到图书续借界面,通过menu.JS界面的<a href=”BookReturnServlet”>跳转到BookReturnServlet,在BookReturnServlet中使用 request 请求对象的 getParameter()方法获取表单中borrowid,bookid对应的信息的信息,设置vo后,执行BookReturnDAOImpl实现类的方法doCreate,通过DBConnection,执行SQL语句,使用get()方法跳转到BookReturnServlet, BookBackServlet,最后展现出添加后的图书续借信息。

  1. 图书归还功能的实现

在主页点击图书归还得到图书归还界面,通过menu.JS界面的<a href=”BookBackServlet”>跳转到BookBackServlet,在BookBackServlet中使用 request 请求对象的 getParameter()方法获取表单中borrowid,bookid对应的信息的信息,设置vo后,执行BookBackDAOImpl实现类的方法doCreate,通过DBConnection,执行SQL语句,使用get()方法跳转到bookback.jsp,最后展现出添加后的图书归还信息。

  • 8
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轩辕椿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值