刚开始做,首先要对整个业务有所了解:电子书店就是使用网络技术实现网络间的买书与卖书的过程,真是的情况是这样的 1:来到书店 2:查找自己需要的书籍 3:放入购物车 4:继续购物或者结账
网络中的过程也是一样,只是实现的方式不一样而已:首先登陆电子书店显示所有的书籍名称,当顾客单击书籍名称或图片时以超链接的方式传递书籍的ID或是唯一标识列,显示该书的详细信息,以便用户确认,并显示“放入购物车”按钮,当用户购买结束后进行结账
一:数据库设计:数据库名为 books ,表名为 titles 字段信息为
private String isbn; //isbn编号
private String title;//书名
private int editionNumber;//版本
private String copyright;//版权
private int publisherID;//出版商ID
private String imageFile;//封面图片
private double price;//价格
二:封装表中字段的Bean 名为BookBean 为每个属性创建 set 和 get方法 具体代码如下:
package ShopBean; import java. io. Serializable; public class BookBean implements Serializable{ private String isbn; / / isbn编号 private String title ; / / 书名 private int editionNumber; / / 版本 private String copyright; / / 版权 private int publisherID; / / 出版商ID private String imageFile; / / 封面图片 private double price; / / 价格 public BookBean( ) { } public void setIsbn( String isbn) { this. isbn = isbn; } public void setTitle( String title ) { this. title = title ; } public void setEditionNumber( int editionNumber) { this. editionNumber = editionNumber; } public void setCopyright( String copyright) { this. copyright = copyright; } public void setPublisherID( int publisherID) { this. publisherID = publisherID; } public void setImageFile( String imageFile) { this. imageFile = imageFile; } public void setPrice( double price) { this. price = price; } public String getIsbn( ) { return isbn; } public String getTitle( ) { return title ; } public int getEditionNumber( ) { return editionNumber; } public String getCopyright( ) { return copyright; } public int getPublisherID( ) { return publisherID; } public String getImageFile( ) { return imageFile; } public double getPrice( ) { return price; } }
三:大家在上一步的代码中可以看见,我在定义BookBean的时候,还实现了Serializable接口,这是JAVA语言为我们提供的一种序列化机制,可以把Byte数据恢复 重新构建那个对象。现在说第三步,这步是创建数据库连接类 代码省略..不会的前面有
四:创建TitlesBean.java对象,里面有查询方法 返回Lise集合 具体代码如下:
package ShopBean; import java. sql. * ; import java. util. * ; import java. io. * ; import java. util. Date; import ShopDB. Dblei; import java. util. ArrayList; public class TitlesBean { public TitlesBean( ) { } Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; Dblei db = new Dblei( ) ; public List getTitles( ) { String sql = "select * from titles order by title" ; List TitlesList = new ArrayList( ) ; this. conn = db. getConn( ) ; try { this. pstmt = conn. prepareStatement( sql) ; this. rs = pstmt. executeQuery( ) ; while ( rs. next( ) ) { BookBean ub = new BookBean( ) ; ub. setIsbn( rs. getString( "isbn" ) ) ; ub. setTitle( rs. getString( "title" ) ) ; ub. setEditionNumber( rs. getInt( "editionNumber" ) ) ; ub. setCopyright( rs. getString( "copyright" ) ) ; ub. setPublisherID( rs. getInt( "publisherID" ) ) ; ub. setImageFile( rs. getString( "imageFile" ) ) ; ub. setPrice( rs. getDouble( "price" ) ) ; TitlesList. add( ub) ; } } catch ( SQLException ex) { ex. printStackTrace( ) ; } finally { db. closeResultSet( rs) ; db. closeStatement( pstmt) ; db. closeConn( conn) ; } return TitlesList; } }
五:现在创建显示页面 books.jsp 关键代码如下:
< % @ page contentType= "text/html; charset=GBK" import = "ShopBean.*,java.util.*" % > < html > < head > < title > books< / title > < / head > < body bgcolor = "#ffffff" > < table style = "TEXT-ALIGN:center" width = "590" border = "0" > < tbody > < % TitlesBean titlesBean = new TitlesBean( ) ; //调用访问数据库方法,返回所有的书籍列表 List titles = titlesBean. getTitles( ) ; BookBean currentBook; //把书籍列表保存在session中 session. setAttribute( "titles" , titles) ; //对书籍列表进行遍历 for ( int i = 0; i< titles. size( ) ; i+ + ) { currentBook = ( BookBean) titles. get( i) ; if ( i% 3= = 0) { % > < tr > < % } % > < td > < table cellspacing = "0" width = "180" > < tbody > < tr > < td valign = "bottom" height = "30" > < a href = "displayBook.jsp?isbn=<%=currentBook.getIsbn() %>" > < % = subStr( currentBook. getTitle( ) + "," + currentBook. getEditionNumber( ) ) % > < / a > < / td > < / tr > < tr align = "center" > < td height = "120" > < a href = "displayBook.jsp?isbn=<%=currentBook.getIsbn() %>" > < img height = "110" alt = "" src = "images/<%=currentBook.getImageFile() %>" width = "90" / > < / a > < / td > < / tr > < / tbody > < / table > < br / > < / td > < % if ( i% 3= = 2) { % > < / tr > < % } } % > < / tbody > < / table > < / body > < / html > < % ! public String subStr( String str) { if ( str= = null | | "" . equals( str) ) return "" ; if ( str. length ( ) > 20) return str. substring( 0, 20) + "..." ; else return str; } % >
到目前为止,我们已经实现了在页面上显示数据库表titles中的所有书籍的信息