内蒙古工业大学Web程序设计实验五报告.docx
- 文档编号:10598011
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:16
- 大小:108.94KB
内蒙古工业大学Web程序设计实验五报告.docx
《内蒙古工业大学Web程序设计实验五报告.docx》由会员分享,可在线阅读,更多相关《内蒙古工业大学Web程序设计实验五报告.docx(16页珍藏版)》请在冰点文库上搜索。
内蒙古工业大学Web程序设计实验五报告
实验报告成绩:
指导教师审核(签名):
年月日
实验报告
实验五简单图书管理系统的设计与实现
1、实验目的
1)掌握JDBC处理数据的基本技术
2)掌握Servlet基本技术
3)掌握JSP基本技术
2、实验设备与环境
硬件:
安装有WindowsXP系统的微机一台。
软件:
JDK1.6、MyEclipse6.0以上、SQLServer2000和Tomcat6。
3、实验内容
设计一个通用的基于浏览器/服务器的简单图书馆管理系统,实现用户的注册和登陆,以及图书的查询与借阅。
4、实验要求
1)利用JavaBean进行数据传递
2)用户的基本信息采用数据库存放
3)使用Sevlet进行数据验证
5、实验要求
1)实验前充分预习实验指导书内容及相关理论知识内容;实验时提交本次实验的预习报告。
2)实验中严格遵守实验室规范和制度,调试程序出现的问题并给出解决方法。
认真完成实验内容并做好实验纪录。
3)实验后必须按照要求独立完成实验报告。
4)打印的源程序清单和测试结果附在实验报告的后面。
源程序必须有注释以及必要的测试数据和运行结果数据。
6.1程序主要源代码:
数据库连接:
import;
import;
publicclassConnectionFactory{
privatestaticStringdriver="";
privatestaticStringurl="jdbc:
oracle:
thin:
@";
privatestaticStringuserName="system";
privatestaticStringpassword="123456";
publicstaticConnectiongetConnection(){
try{
Class.forName(driver);
returnDriverManager.getConnection(url,userName,password);
}catch(Exceptione){
e.printStackTrace();
returnnull;
}
}
}
定义Book类及其功能
import;
import;
import;
import;
import;
import;
import;
import;
import;
import;
import;
publicclassBookDBAccess{
//添加图书
publicvoidaddBook(Bookbook){
Connectionconn=null;
PreparedStatementpstmt=null;
ResultSetrs=null;
try{
conn=ConnectionFactory.getConnection();
Stringsql="insertintobookvalues(?
?
?
?
?
?
?
?
)";
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1,book.getBookId());
pstmt.setString(2,book.getBookName());
pstmt.setString(3,book.getAuthor());
pstmt.setString(4,book.getISBN());
pstmt.setString(5,book.getPublishCom());
pstmt.setFloat(6,book.getPrice());
pstmt.setString(7,book.getPublishDate());
pstmt.setString(8,book.getRemark());
pstmt.executeUpdate();
}catch(SQLExceptione){
e.printStackTrace();
}finally{
ResourceClose.close(rs,pstmt,conn);
}
}
//删除图书
publicvoiddelBookById(intbookId){
Connectionconn=null;
PreparedStatementpstmt=null;
ResultSetrs=null;
try{
conn=ConnectionFactory.getConnection();
Stringsql="deletefrombookwherebookId=?
";
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1,bookId);
pstmt.executeUpdate();
}catch(SQLExceptione){
e.printStackTrace();
}finally{
ResourceClose.close(rs,pstmt,conn);
}
}
//修改图书
publicvoidupdateBook(Bookbook){
Connectionconn=null;
PreparedStatementpstmt=null;
ResultSetrs=null;
try{
conn=ConnectionFactory.getConnection();
Stringsql="updatebooksetbookId=?
bookName=?
author=?
ISBN=?
"+
"publishCom=?
price=?
publishDate=?
remark=?
wherebookId=?
";
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1,book.getBookId());
pstmt.setString(2,book.getBookName());
pstmt.setString(3,book.getAuthor());
pstmt.setString(4,book.getISBN());
pstmt.setString(5,book.getPublishCom());
pstmt.setFloat(6,book.getPrice());
pstmt.setString(7,book.getPublishDate());
pstmt.setString(8,book.getRemark());
pstmt.setInt(9,book.getBookId());
pstmt.executeUpdate();
}catch(SQLExceptione){
e.printStackTrace();
}finally{
ResourceClose.close(rs,pstmt,conn);
}
}
//列表显示所有图书
publicListfindAllBook(){
Bookbook=null;
ArrayListlist=newArrayList();
Connectionconn=null;
PreparedStatementpstmt=null;
ResultSetrs=null;
try{
conn=ConnectionFactory.getConnection();
Stringsql="select*frombookorderbybookId";
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();
while(rs.next()){
book=newBook();
book.setBookId(rs.getInt
(1));
book.setBookName(rs.getString
(2));
book.setAuthor(rs.getString(3));
book.setISBN(rs.getString(4));
book.setPublishCom(rs.getString(5));
book.setPrice(rs.getFloat(6));
book.setPublishDate(rs.getString(7));
book.setRemark(rs.getString(8));
list.add(book);
}
}catch(SQLExceptione){
e.printStackTrace();
}finally{
ResourceClose.close(rs,pstmt,conn);
}
returnlist;
}
//按图书ID查找图书
publicBookfindBookById(intbookId){
Bookbook=null;
Connectionconn=null;
PreparedStatementpstmt=null;
ResultSetrs=null;
try{
conn=ConnectionFactory.getConnection();
Stringsql="select*frombookwherebookId=?
";
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1,bookId);
rs=pstmt.executeQuery();
while(rs.next()){
book=newBook();
book.setBookId(rs.getInt
(1));
book.setBookName(rs.getString
(2));
book.setAuthor(rs.getString(3));
book.setISBN(rs.getString(4));
book.setPublishCom(rs.getString(5));
book.setPrice(rs.getFloat(6));
book.setPublishDate(rs.getString(7));
book.setRemark(rs.getString(8));
}
}catch(SQLExceptione){
e.printStackTrace();
}finally{
ResourceClose.close(rs,pstmt,conn);
}
returnbook;
}
//多条件查询图书
publicListfindAllBookByMostCon(StringbookName,StringISBN,Stringauthor,StringpublishCom){
Bookbook=null;
ArrayListlist=newArrayList();
Connectionconn=null;
PreparedStatementpstmt=null;
ResultSetrs=null;
//构造多条件查询的SQL语句
Stringsql="select*frombookwhere1=1";
//精确查询
/*
if(bookName!
=null&&!
bookName.equals("")){
sql+="andbookName='"+bookName+"'";
}
if(ISBN!
=null&&!
ISBN.equals("")){
sql+="andISBN='"+ISBN+"'";
}
if(author!
=null&&!
author.equals("")){
sql+="andauthor='"+author+"'";
}
if(publishCom!
=null&&!
publishCom.equals("")){
sql+="andpublishCom='"+publishCom+"'";
}
sql+="orderbybookId";
*/
//模糊查询
if(bookName!
=null&&!
bookName.equals("")){
sql+="andbookNamelike'%"+bookName+"%'";
}
if(ISBN!
=null&&!
ISBN.equals("")){
sql+="andISBNlike'%"+ISBN+"%'";
}
if(author!
=null&&!
author.equals("")){
sql+="andauthorlike'%"+author+"%'";
}
if(publishCom!
=null&&!
publishCom.equals("")){
sql+="andpublishComlike'%"+publishCom+"%'";
}
sql+="orderbybookId";
try{
conn=ConnectionFactory.getConnection();
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();
while(rs.next()){
book=newBook();
book.setBookId(rs.getInt
(1));
book.setBookName(rs.getString
(2));
book.setAuthor(rs.getString(3));
book.setISBN(rs.getString(4));
book.setPublishCom(rs.getString(5));
book.setPrice(rs.getFloat(6));
book.setPublishDate(rs.getString(7));
book.setRemark(rs.getString(8));
list.add(book);
}
}catch(SQLExceptione){
e.printStackTrace();
}finally{
ResourceClose.close(rs,pstmt,conn);
}
returnlist;
}
//返回一个新的图书编号(数据库中所有记录中最大的ID加1)
publicintgetBookId(){
Connectionconn=null;
PreparedStatementpstmt=null;
ResultSetrs=null;
inti=0;
try{
conn=ConnectionFactory.getConnection();
Stringsql="selectmax(bookId)frombook";
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();
if(rs.next()){
i=rs.getInt
(1);
}
}catch(SQLExceptione){
e.printStackTrace();
}finally{
ResourceClose.close(rs,pstmt,conn);
}
returni+1;
}
}
import;
import;
import;
import;
import;
import;
publicclassUserDBAccess{
//登录方法
publicUserlogin(Stringname,Stringpassword){
Useruser=null;
Connectionconn=null;
PreparedStatementpstmt=null;
ResultSetrs=null;
try{
conn=ConnectionFactory.getConnection();
Stringsql="select*fromusertbl1wherename=?
andpassword=?
";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,name);
pstmt.setString(2,password);
rs=pstmt.executeQuery();
if(rs.next()){
user=newUser();
user.setUserId(rs.getInt
(1));
user.setName(rs.getString
(2));
user.setPassword(rs.getString(3));
user.setSex(rs.getString(4));
user.setFeature(rs.getString(5));
user.setPrivence(rs.getString(6));
user.setAuthor(rs.getString(7));
user.setUserType(rs.getInt(8));
}
}catch(SQLExceptione){
e.printStackTrace();
}finally{
ResourceClose.close(rs,pstmt,conn);
}
returnuser;
}
}
权限控制:
import;
import;
import;
import;
import;
import;
import;
import;
import;
import;
import;
publicclassLoginFilterimplementsFilter{
publicvoidinit(FilterConfigarg0)throwsServletException{
}
publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,
FilterChainchain)throwsIOException,ServletException{
HttpServletRequestreq=(HttpServletRequest)request;
HttpServletResponseres=(HttpServletResponse)response;
HttpSessionsession=req.getSession();
Useruser=(User)session.getAttribute("user");
if(user!
=null){
chain.doFilter(req,res);
}else{
session.setAttribute("message","只有登录后才能访问系统!
");
res.sendRedirect(req.getContextPath()+"/login.jsp");
}
}
publicvoiddestroy(){
}
}
6.2程序运行截图
登陆界面
登陆后界面
操作界面
七:
实验中存在的问题:
(1)在进行网页跳转的时候,弄不清楚什么时候该使用相对路径,什么时候该使用绝对路径
(2)对Book系统整个工作的流程不是很清楚
(3)对操作数据库的注册驱动、获得操作SQL语句的句柄的过程不太了解
八:
实验心得体会:
经过本次试验,感觉收获颇丰。
特别是在心理方面,当运行出结果的时候,感觉到很兴奋,很有成就感。
同时也是我知道,今后我要走的路还很长,还有很多知识点有待我去掌握。
我对书本上的知识并没有真正的掌握,所以在编程的过程中遇到很多的麻烦。
在一个试验中,有很多问题出现。
让我感受最深的一点是:
如果想把一个程序编好,那么你就应该掌握这个实验中涉及的任何知识点,而这些知识点贯穿了我们错学的全部内容,也就是说,你必须把我们所学的全部知识掌握,才会把程序设计好。
仅供个人用于学习、研究;不得用于商业用途。
Forpersonaluseonlyinstudyandresearch;notforcommercialuse.
NurfürdenpersönlichenfürStudien,Forschung,zukommerziellenZweckenverwendetwerden.
Pourl'étudeetlarechercheuniquementàdesfinspersonnelles;pasàdesfinscommerciales.
толькодлялюдей,которыеиспользуютсядляобучения,исследованийинедолжныиспользоватьсявкоммерческихцелях.
以下无正文
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 内蒙古 工业大学 Web 程序设计 实验 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)