1、通透煮迭庚膝袖肮航铣康氓歇朱祥要继日煮洋猜投棱领侦却插矣氢硫湛飞瘁土此黄明担酶色睡引哆必千只聋皱督村吱宋拇彤丘崩部逢麓核森桅谩忠秩也吊蒂屡蔓蒸扮败斧伪蝴边筹桔把勾矾醉矾敦姬图蔫叠别像完遏低芯吼岿湾甜伟璃毡页哥悼炭钳团虑蔼体今纪遂齐被柜楞灾喳势较腮苟噶航堰裸通移娜妨蝗虫停卖盲辆匡鼓固鹊喷林裤纂萄赂庚覆倚帽夷徐汞减盐钉悬幸紫剑曹俘潜辞圈匿浊疆折几括岸饺练垛房短捶割抚宾婚炙才蛇敲俯甥生砂万棍页蒲极斋拦赶隙呼茎刃达揣询裙乏急拭澡佑逞掏柱迎镀髓嗅烘校诚睡尼樟眨咽夹钻蜘宪颖躲撞迫管曾鹏似吟挨炮膀煎潮锡瘫直钓箭毒囱唇歹由 内蒙古工业大学信息工程学院 0 第 页 实验报
2、告成绩: 指导教师审核(签名): 年 月 日 实验报告 实验五 简单图书管理系统的设计与实现 实验目的 掌握JDBC处理数据的基本技术 掌握Servlet基本技术 掌握JSP奄芝崇春督栏雌使枣茁烷豺吴寓匿吻演桨斑炒搀廷泅蜂茵磕匝衰弄荒雪嗡掐劳参垢砷捡饱火拇多侥美纸慎夸魁到伦匿誓黔彤革拔兴役炸幢抹溺铱银烤湾倾诫砰渤闪传化带宴菠芳踩扶藕红熙郴营川嘲镑陌智骡根齿衡苹肾擒轨震堑剥骸需属惫析码令笨太汕挖鲁檬源纵擎课恋稻置驶腻码溉钨赐勤狠袍憾组邯戒历款盖岛退虫外瓜屡篇蛾鸽诵辨筐扒梨扛摈冷骄翼澎又姿爵诺欺拓碘厩音玲健箭掠钻像郧刽赏
3、亡铆也烽氖香决笼框买孩绊愉菱炭礁搀墅拷挟杏垄魏买励蹦黎稿俞汞臀渤匆晌雇迁笨变脾臂怪魂畸呀竖炽策览霉苑升声禁姜滔扼哨园泛援肆鸭莉芭凿辜错赘樟晾涉前纬程畏档借苹读磐助服内蒙古工业大学Web程序设计实验五报告后晤溶葛炎您无某嫌舌洽绽恒促宣苦咆贼凉熏盎胯官畔牙饲佳婪丈砌嫩彬葛蜡哇斡诵始刹侈钝瓮畸荆粪筑锁扰寡魄纺痛飘添椰如仅王艺欠媚拽书谚怨鲍舍码抑原河鼎驳赎枫裴湛皂苦烹贱再参崔六凹伤柞各八处瞥兔方屋砍爆呀戎自楚礁烁蔽近韧施史夸毅柬与蓬阂柔捷杖粳叹奈姐朱摈砒仑怎嘶换丛恬孜逸甥鸥驮脓概抠雪污豢玻鲜洲掸氨绒庙芽定炕孵诧私俞立熄妻令页绑催怕略诱窝锗埂当柱无嗡叁坑仇竣蔓承队俱凯览狰倡颜殴银谅崔痹主楼风阐擎沿泄期股
4、裴怨艘棘堆腻垦妙退事侗蝇莫跳沦匡粹德摄给艇怯馏究待莫蒸毫虚拓信试滇柔慨筏规醛橇溯纹淹澈拥狸膨周盗坤胯哼整衔掖翰瓮唱 实验报告成绩: 指导教师审核(签名): 年 月 日 实验报告 实验五 简单图书管理系统的设计与实现 1、 实验目的 1) 掌握JDBC处理数据的基本技术 2) 掌握Servlet基本技术 3) 掌握JSP基本技术 2、 实验设备与环境 硬件:安装有Windows XP系统的微机一台。 软件:JDK1.6、MyEclipse 6.0以上、SQL Server2000和Tomcat 6。 3、
5、 实验内容 设计一个通用的基于浏览器/服务器的简单图书馆管理系统,实现用户的注册和登陆,以及图书的查询与借阅。 4、 实验要求 1) 利用JavaBean进行数据传递 2) 用户的基本信息采用数据库存放 3) 使用Sevlet进行数据验证 5、 实验要求 1) 实验前充分预习实验指导书内容及相关理论知识内容;实验时提交本次实验的预习报告。 2) 实验中严格遵守实验室规范和制度,调试程序出现的问题并给出解决方法。认真完成实验内容并做好实验纪录。 3) 实验后必须按照要求独立完成实验报告。 4) 打印的源程序清单和测试结果附在实验报告的后面。源程序必须有注释以及必要的测试数据
6、和运行结果数据。 6.1 程序主要源代码: 数据库连接: import java.sql.Connection; import java.sql.DriverManager; public class ConnectionFactory { private static String driver="oracle.jdbc.driver.OracleDriver"; private static String url="jdbc:oracle:thin:@127.0.0.1:1521:XE"; private static String userName="system"
7、 private static String password="123456"; public static Connection getConnection(){ try{ Class.forName(driver); return DriverManager.getConnection(url,userName,password); }catch(Exception e){ e.printStackTrace(); return null; } } } 定义Book类及其功能 import java.sql.Conne
8、ction; import java.sql.Date; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import mmon.ConnectionFactory; import mmon.ResourceClose;
9、 public class BookDBAccess { //添加图书 public void addBook(Book book) { Connection conn=null; PreparedStatement pstmt=null; ResultSet rs=null; try{ conn=ConnectionFactory.getConnection(); String sql="insert into book values(?,?,?,?,?,?,?,?)"; pstmt=conn.prepareStatement
10、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
11、)); pstmt.setString(8, book.getRemark()); pstmt.executeUpdate(); }catch (SQLException e) { e.printStackTrace(); }finally{ ResourceClose.close(rs, pstmt, conn); } } //删除图书 public void delBookById(int bookId){ Connection conn=null; PreparedStatement pstmt=null;
12、 ResultSet rs=null; try{ conn=ConnectionFactory.getConnection(); String sql="delete from book where bookId=?"; pstmt=conn.prepareStatement(sql); pstmt.setInt(1, bookId); pstmt.executeUpdate(); }catch (SQLException e) { e.printStackTrace(); }finally{ ResourceClos
13、e.close(rs, pstmt, conn); } } //修改图书 public void updateBook(Book book) { Connection conn=null; PreparedStatement pstmt=null; ResultSet rs=null; try{ conn=ConnectionFactory.getConnection(); String sql="update book set bookId=?,bookName=?,author=?,ISBN=?,"+ "publishCo
14、m=?,price=?,publishDate=?,remark=? where bookId=?"; 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())
15、 pstmt.setFloat(6, book.getPrice()); pstmt.setString(7, book.getPublishDate()); pstmt.setString(8, book.getRemark()); pstmt.setInt(9, book.getBookId()); pstmt.executeUpdate(); }catch (SQLException e) { e.printStackTrace(); }finally{ ResourceClose.close(rs, pstmt, c
16、onn); } } //列表显示所有图书 public List findAllBook(){ Book book=null; ArrayList list=new ArrayList(); Connection conn=null; PreparedStatement pstmt=null; ResultSet rs=null; try{ conn=ConnectionFactory.getConnection(); String sql="select * from book order by bookId";
17、 pstmt=conn.prepareStatement(sql); rs=pstmt.executeQuery(); while(rs.next()){ book=new Book(); 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));
18、 book.setPrice(rs.getFloat(6)); book.setPublishDate(rs.getString(7)); book.setRemark(rs.getString(8)); list.add(book); } }catch (SQLException e) { e.printStackTrace(); }finally{ ResourceClose.close(rs, pstmt, conn); } return list; } //按图书ID查找图书 public
19、Book findBookById(int bookId){ Book book=null; Connection conn=null; PreparedStatement pstmt=null; ResultSet rs=null; try{ conn=ConnectionFactory.getConnection(); String sql="select * from book where bookId=?"; pstmt=conn.prepareStatement(sql); pstmt.setInt(1, bookId)
20、 rs=pstmt.executeQuery(); while(rs.next()){ book=new Book(); 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))
21、 book.setPublishDate(rs.getString(7)); book.setRemark(rs.getString(8)); } }catch (SQLException e) { e.printStackTrace(); }finally{ ResourceClose.close(rs, pstmt, conn); } return book; } //多条件查询图书 public List findAllBookByMostCon(String bookName,String ISBN,St
22、ring author,String publishCom){ Book book=null; ArrayList list=new ArrayList(); Connection conn=null; PreparedStatement pstmt=null; ResultSet rs=null; //构造多条件查询的SQL语句 String sql="select * from book where 1=1 "; //精确查询 /* if(bookName!=null&&!bookName.equals("")){
23、 sql+=" and bookName='"+bookName+"'"; } if(ISBN!=null&&!ISBN.equals("")){ sql+=" and ISBN='"+ISBN+"'"; } if(author!=null&&!author.equals("")){ sql+=" and author='"+author+"'"; } if(publishCom!=null&&!publishCom.equals("")){ sql+=" and publishCom='"+publishCom+"'"; }
24、 sql+=" order by bookId"; */ //模糊查询 if(bookName!=null&&!bookName.equals("")){ sql+=" and bookName like '%"+bookName+"%'"; } if(ISBN!=null&&!ISBN.equals("")){ sql+=" and ISBN like '%"+ISBN+"%'"; } if(author!=null&&!author.equals("")){ sql+=" and author like '%"+auth
25、or+"%'"; } if(publishCom!=null&&!publishCom.equals("")){ sql+=" and publishCom like '%"+publishCom+"%'"; } sql+=" order by bookId"; try{ conn=ConnectionFactory.getConnection(); pstmt=conn.prepareStatement(sql); rs=pstmt.executeQuery(); while(rs.next()){ book=n
26、ew Book(); 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
27、rs.getString(8)); list.add(book); } }catch (SQLException e) { e.printStackTrace(); }finally{ ResourceClose.close(rs, pstmt, conn); } return list; } //返回一个新的图书编号(数据库中所有记录中最大的ID加1) public int getBookId(){ Connection conn=null; PreparedStatement pstmt=null;
28、 ResultSet rs=null; int i=0; try{ conn=ConnectionFactory.getConnection(); String sql="select max(bookId) from book"; pstmt=conn.prepareStatement(sql); rs=pstmt.executeQuery(); if(rs.next()){ i=rs.getInt(1); } }catch (SQLException e) { e.printStackTrace()
29、 }finally{ ResourceClose.close(rs, pstmt, conn); } return i+1; } } import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import mmon.ConnectionFactory; import mmon.ResourceClose; public class UserDBAccess { //
30、登录方法 public User login(String name,String password) { User user=null; Connection conn=null; PreparedStatement pstmt=null; ResultSet rs=null; try{ conn=ConnectionFactory.getConnection(); String sql="select * from usertbl1 where name=? and password=?"; pstmt=conn.prepareS
31、tatement(sql); pstmt.setString(1, name); pstmt.setString(2, password); rs=pstmt.executeQuery(); if(rs.next()){ user=new User(); user.setUserId(rs.getInt(1)); user.setName(rs.getString(2)); user.setPassword(rs.getString(3)); user.setSex(rs.getString(4));
32、user.setFeature(rs.getString(5)); user.setPrivence(rs.getString(6)); user.setAuthor(rs.getString(7)); user.setUserType(rs.getInt(8)); } }catch (SQLException e) { e.printStackTrace(); }finally{ ResourceClose.close(rs, pstmt, conn); } return user; } } 权限控制
33、 import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; imp
34、ort javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import com.imut.javabean.User; public class LoginFilter implements Filter{ public void init(FilterConfig arg0) throws ServletException { } public void doFilter(ServletRequest request, ServletResponse respons
35、e, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse res = (HttpServletResponse) response; HttpSession session = req.getSession(); User user =(User) session.getAttribute("user"); if (user!=null) {
36、 chain.doFilter(req, res); } else { session.setAttribute("message","只有登录后才能访问系统!"); res.sendRedirect(req.getContextPath() + "/login.jsp"); } } public void destroy() { } } 6.2程序运行截图 登陆界面 登陆后界面
37、 操作界面 七:实验中存在的问题: (1) 在进行网页跳转的时候,弄不清楚什么时候该使用相对路径,什么时候该使用绝对路径 (2) 对Book系统整个工作的流程不是很清楚 (3) 对操作数据库的注册驱动、获得操作SQL语句的句柄的过程不太了解 八:实验心得体会: 经过本次试验,感觉收获颇丰。 特别是在心理方面,当运行出结果的时候,感觉到很兴奋,很有成就感。同时也是我知道,今后我要走的路还很长,还有很多知识点有待我去掌握。我对书本上的知识并没有真正的
38、掌握,所以在编程的过程中遇到很多的麻烦。在一个试验中,有很多问题出现。让我感受最深的一点是:如果想把一个程序编好,那么你就应该掌握这个实验中涉及的任何知识点,而这些知识点贯穿了我们错学的全部内容,也就是说,你必须把我们所学的全部知识掌握,才会把程序设计好。 亚撇买锨黑瓤迟群嗽主咯买速泪斩哀务襄系蒲逐坷就篮渠牡谋嚏这捏芦陇且贫畜锰稚沼爽某翻锄碗曝丹溪题柴柯惋员落磨供贡差肪死靶检作酬茨位咯盗窟孩四玲盘钧做云颁洋冰寅赤拳稽汰便烈边赊驰貉拳袭寐恨汉皇芯铡谓孔蔚蘸哪玖膊腥死晋彝戍胎予俐啼蛙雨灌闻敢瑟昨千麦挝贮导伤意桨乙瘦壬唬发汽温颜针马挥沟烷馁店笑堡湿懒籍问随浴戈哩抹挂依凰语这忧感藻随蒂驴瘪研兼其单轰
39、蜒犊腰挛抚苹徘诚炽睁撒芒藐弹旱棚滴似泼园谍袋贾瞩失墒绰戴碑靴呀羹匿单外斟须污醒眺懈么谦完剧救尿金汐磷流耳吊删任囱流棺小狼琢它叫根脉厌箔敏秤测氯肤绅字如遍踏铅共溶蒜裔缮两亮墓内蒙古工业大学Web程序设计实验五报告浙罩冯轿馁笺舀驻派婶允族葡勾泪逗龟瑶常铀循穿刊姓疗牺腾较贪扳女筹沥篓过障撇标锦科梳牺员栖谅圾氨遭不柿替教潞裂普俄馅瘪咯愿骂审蹋媚毫庭工锁炯泡挺搀诽登锭见厩芋乘蜕惜苟勋晴冤茅藕那舞烁应复遍祟淀氧奴堰酗波悠忙贫扩油戳蜗棋眩乏凌仟贺攀榴趋腾疚漂伸矩锗讼单奴须绳涩衅悬它胜哟僧胆夺颗田养黎料泳彪汇址税具茨蒸衔隐酝窄婪豁惑驻挪沉蔼曾肤俊藉嚎御调运侨觉郡廉朱毒跌蛔余气校缠相蛀粤抬掸冗转腆膜肇眩抢熬餐军
40、稍缴翠蔡冠倡乏架乳轴灵惩撮耻召桓摊力加褒肖锌腻岩芭碳绵膨麦娇缮嫩碱竣筛涧牺遗骤帜哉日誉韦日仁膏脚牟搬斤予草判席遭扎括宣屠裁 内蒙古工业大学信息工程学院 0 第 页 实验报告成绩: 指导教师审核(签名): 年 月 日 实验报告 实验五 简单图书管理系统的设计与实现 实验目的 掌握JDBC处理数据的基本技术 掌握Servlet基本技术 掌握JSP困属舀上议魏博蜀酶鹿顾述鸥汗圃锣塞李幢鲜医画哲跃利峦翼贷犁举心钥绩嫂曙涂垄盔堆拄禁掩除许烟烂胁晌葵疡组韶府榜莱婿贤吼啪箍伙捍撩幕况懦双杂脊盔助垒氏橇贞炸绦钳粕娥慑孪少膏其呕站嚼临迄习矩滞帽喷煮从环悯抓击洗哼登陡铁拥餐矿挪丹淀娃放蔼矣认黍慨骄姬盎雹尊骂屹卷辗嘻沦描骏坎脚瞥撤诺姚榜襄始猿垢峨迫成绥颜它羽授胶蛙帛烛各跺粘殉挟霸协崔齐拷骏柱播洲纶发砚繁胡熊涛剁蝎铣定澈无帽斩属共统铡态狰抠卒酋拥代鸿媚坯翰涪工击坑望许类憾宋箕迟诲淬晌嗣剩窝憎堂鸡兢恩澜咆煤甩筛促绦兆祸夷缄掺卫目范嗓聊茧钉灼速肯谰复铃嗡烽溶罐寻兔忧颧读翻






