1、3.2 设计封装了针对书籍表信息进行CRUD操作的工具JavaBean(DAO类);3.3. 利用JSP+JavaBean技术完成显示所有书籍信息的功能;3.4. 利用JSP+JavaBean技术完成对书籍信息的增加功能;5. 调试运行程序。2.3测试数据与实验结果截图2.3.1数据库建立:2.3.2 主界面显示2.3.3 添加2.2.4主界面2.2.5编辑2.2.6删除三、实验分析与小结:(实验过程中遇到的问题分析、产生的原因以及解决方法)3.1.开发模式的选择开始我以为是用JSP+Javabean的模式开发,后来经老师提醒才知道是用dao层的方法写,不是纯JSP代码,又觉得既然用dao写,
2、就干脆用mvc模式开发,JSP页面不在写Java代码,一律用jsp标签和jstl标签和el表达式来完成。这样一来,也为以后的实验打好好维护的基础。3.2.bean的关联。由于表的关联,javabean的设置也做了改变,如下: 这样就带来了麻烦,怎样处理数据库的数据提取后封装到bean内部的问题。经过尝试,解决了问题。Press press=new Press();press.setPressname(rs.getString(pressname);book.setPressname(press);需要在处理之前,先定义一个Press的bean对象,用对象press的方法实现数据封装,然后再把存
3、有数据的press对象封装到另一个Bean对象book中这样就实现的bean的关联和数据的存储。与之相反的,当取出数据时:El表达式有:$book.pressname.pressname 3.3.参数的传递。在做编辑这一块的时候,由于书籍有自增的主键(假设设为int sequence),所以就应该用sequence作为传递参数,可是我以为做删除和添加时,用书号(number)作为参数,觉得可以,最后做编辑的时候才发现出错,于是改为sequence。改了以后,也出了错,主要是参数传递的太频繁,从主页面到编辑界面,然后到dao层,注意dao层的方法要在用到bean的同时,还要将它封装进bean中,
4、以便下一次的参数传递,负责参数值丢失(用插桩法:syso查看sequence的值,为0则丢失),点击编辑提交和删除,主界面会无效。四、其它(附源代码)一、bean:(2个)1、bookbeanpackage cn.hfuu.lv.test1.domain;import java.sql.Date;public class BookInfo private int sequence;private int number;private String name;private String author;private float price;private Press pressname;pub
5、lic int getNumber() return number;public void setNumber(int number) this.number = number;public String getName() return name;public void setName(String name) this.name = name;public String getAuthor() return author;public void setAuthor(String author) this.author = author;public float getPrice() ret
6、urn price;public void setPrice(float price) this.price = price;public Press getPressname() return pressname;public void setPressname(Press pressname) this.pressname = pressname;public int getSequence() return sequence;public void setSequence(int sequence) this.sequence = sequence;2、pressbeanpublic c
7、lass Press private String presscode;private String pressname;public String getPresscode() return presscode;public void setPresscode(String presscode) this.presscode = presscode;public String getPressname() public void setPressname(String pressname) 二、JSP% page import=java.sql.* %include file=/WEB-IN
8、F/inc/taglibs.jsp!DOCTYPE HTML PUBLIC -/W3C/DTD HTML 4.01 Transitional/ENhtml title书籍管理界面script function btnDelete(id) if(confirm(确认删除该条记录吗?) location.href=/beanexample/servlet/BookDeleteServlet?id=+id; /scriptmeta http-equiv=Content-Type content=text/html;charset=utf-8 style table,tr,th,td border:
9、1px #00868B solid; border-collapse: collapse; text-align:center;th background-color: #96CDCD;/style /headbodya href=/beanexample/servlet/bookAddPreServlet添加/beanexample/jsp/pressmanagement.jsp出版社管理 书号书名作者价格出版社操作c:forEach items=$bookList var=book $book.number $book.name $book.author $book.price $book
10、.pressname.pressname /beanexample/servlet/BookCompilePreServlet?id=$book.sequence编辑 javascript:void(0) onclick=btnDelete($book.sequence)删除/table/body/html书籍添加类别信息 书号:td id=inputinput type=text name=number书名:name作者:author价格:price出版社:select name= option value=0-请选择-$pressListpress $press.pressnam
11、e$press.pressname td submit value=提交reset重置/form/beanexample/servlet/BookCompileServlet?$book.number $book.name $book.author $book.price if test=$book.pressname.pressname =press.pressnameselected=selectedif三、Dao(2个) package cn.hfuu.lv.dao;import java.sql.*;import java.util.ArrayList;import java.util
12、.List;import cn.hfuu.lv.test1.domain.BookInfo;import cn.hfuu.lv.test1.domain.Press;import cn.hfuu.lv.util.DBUtil;import cn.hfuu.lv.util.PageModel;public class BookDao private Connection conn = null; private Statement stm = null; private ResultSet rs = null; private PreparedStatement pstm = null; pub
13、lic void addBookInfo(BookInfo book) DBUtil dbUtil = null; try dbUtil = new DBUtil(); conn = dbUtil.getConnection(); String sql = insert into bookinfo(number,name,author,price,presssnum)values(?,?; pstm = conn.prepareStatement(sql); pstm.setInt(1,book.getNumber(); pstm.setString(2,book.getName(); pst
14、m.setString(3,book.getAuthor(); pstm.setFloat(4, book.getPrice(); pstm.setInt(5, book.getPress().getPresssnum(); pstm.executeUpdate(); catch(Exception e) e.printStackTrace(); finally dbUtil.closePreparedStatement(pstm); dbUtil.closeConnection(conn); public void updateBookInfo(BookInfo book)update bo
15、okinfo set number=?,name=?,author=?,price=? ,presssnum=? where sequence=? pstm.setInt(6, book.getSequence(); public List getAllBookInfoList() List bookList = new ArrayList(); String sql=select bookinfo.sequence,bookinfo.number,bookinfo.name,bookinfo.author,bookinfo.price,bookinfo.presssnum,press.pressname from bookinfo,press where bookinfo.presssnum= press.presssnum limit 0,7 stm = conn.createStatement(); rs = stm.executeQuery(sql); while(rs.next() BookInfo book = new BookInfo(); book.setSequence(rs.getInt(sequence book.setNumber(rs.getInt(
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1