5 系统实现 http://www.paper51.com 5.1 编写JavaBean 内容来自www.paper51.com 根据系统的需求编写需要的JavaBean。下面将给出网上图书超市需要的JavaBean的编写过程。 内容来自www.paper51.com
5.1.1数据库操作的JavaBean的实现 内容来自论文无忧网 www.paper51.com 在系统开发过程中经常需要对数据库操作,这就需要连接数据库和操作数据库(包括数据的插入,更新,删除和查询等),数据库操作的JavaBean是一个公共类,通常包括连接数据库的方法getConnection、执行查询语句的方法executeQuery、执行更新操作的方法executeUpdate、关闭数据库连接的方法close。因此程序开发就可以将连接数据库和操作数据库的代码写成了一个JavaBean “connDB.java”,编写完成后将其源代码放到Tomcat5.5\webapps\BookSupermarket\WEB-INF\src\beans文件夹中。 内容来自论文无忧网 www.paper51.com (1)指定JavaBean“connDB”保存的包,并导入所需的类包,并将其保存到“beans”包中。 paper51.com (2)在构造方法connDB中定义该类中所需的变量。通常将方法中常用的变量均放在构造方法中。 内容来自论文无忧网 www.paper51.com (3)创建执行查询语句的方法executeQuery,返回值为ResultSet结果集。 内容来自论文无忧网 www.paper51.com
(4)创建执行更新操作的方法executeUpdate,返回值为int型的整数,代表更新的行数。 http://www.paper51.com (5)创建执行更新操作,并返回该操作中自动编号字段的自动编号的方法executeUpdate_id。 http://www.paper51.com (6)创建关闭数据库连接的方法close。 copyright paper51.com (7)编译connDB.java,用“javac connDB.java”,生成connDB.class,将其放到Tomcat5.5\webapps\BookSupermarket\WEB-INF\classes\beans文件夹中。 paper51.com 5.1.2字符串处理的JavaBean的实现 内容来自论文无忧网 www.paper51.com 字符串处理的JavaBean是解决程序中经常出现的有关字符串处理问题的方法的类。包括将数据库中及页面中有中文问题的字符串进行正确的显示和存储的方法chStr和将字符串中的回车换行、空格及HTML标记符正确显示的方法convertStr两个方法。下面是编写网上图书超市的字符串处理的JavaBean“chStr”的详细过程。 copyright paper51.com (1)编写解决输出中文乱码问题的方法chStr。 paper51.com
(2)接着编写显示文本中的回车换行、空格及保证HTML标记的正常输出的方法convertStr。 http://www.paper51.com 5.1.3保存购物信息的JavaBean的实现 paper51.com 在购物车程序中需要使用一个bookelement对象保存所选图书信息,生成该对象的JavaBean “bookelenent.java”程序代码。 内容来自www.paper51.com 5.2 网站前台主要功能模块实现 http://www.paper51.com 5.2.1网站前台首页设计 http://www.paper51.com 根据前期的分析及客户的要求,网上图书超市的前台主要包括重点推荐展台,新书上架,图书分类,图书查询,用户管理,购物车,订单生成,订单查询和销售排行等模块。在网上超市前台首页的运行结果如下图5所示 内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com 图5首页 copyright paper51.com 5.2.2重点推荐展台的实现过程 copyright paper51.com (1)在网站前台的居中位置,分栏列出了超市推荐的图书信息,主要包括图书封面,名称,出版社,作者及定价等信息。同时列置了“添加至购物车”按钮和“查看”按钮,分别用于将图书添加至购物车和查看图书的详细信息。重点推荐图书信息同图书基本信息同时保存在图书信息表tb_bookinfo中,以字段commend标识,当commend字段的值为1时,代表该图书为重点推荐图书。查询重点推荐图书的代码如下: copyright paper51.com <% 内容来自论文无忧网 www.paper51.com
ResultSet rs_book=connDB.executeQuery("select * from tb_bookinfo wherecommend=1"); paper51.com
%> copyright paper51.com 这里需要注意的是,“添加购物车”按钮只有在用户登录后才可以显示,即是只有登录的用户才可以购买图书。 http://www.paper51.com (2)根据图书的ISBN号查询图书的详细信息,图书详细页面的运行结果如图6所示: 内容来自论文无忧网 www.paper51.com http://www.paper51.com 图6图书简介 http://www.paper51.com
在book_detail.jsp页面中首先查询符合ISBN值的图书信息,关键代码如下: 内容来自论文无忧网 www.paper51.com <% paper51.com ResultSet rs=connDB.executeQuery("select * from tb_bookinfo whereISBN='"+request.getParameter("ISBN")+"'"); copyright paper51.com %> paper51.com
将查询结果显示到页面中,此时需要对“图书简介”进行处理,以便正确显示回车换行和空格符。关键代码如下: paper51.com <% copyright paper51.com
if(rs.next()){ paper51.com //注意:此处只能按照字段的顺序读取 paper51.com StringISBN=rs.getString("ISBN"); http://www.paper51.com Stringbookname=rs.getString("BookName"); 内容来自论文无忧网 www.paper51.com Stringpublisher=rs.getString("publisher"); copyright paper51.com Stringwriter=rs.getString("writer"); copyright paper51.com StringIntroduce=chStr.convertStr(rs.getString("Introduce")); http://www.paper51.com intprice=rs.getInt("Price"); 内容来自www.paper51.com
StringpDate=rs.getString("pDate"); copyright paper51.com
Stringcover=rs.getString("cover"); copyright paper51.com %> copyright paper51.com …… //此处省略了显示图书信息的HTML代码 内容来自www.paper51.com
<%}%> paper51.com 5.2.3新书上架实现过程 http://www.paper51.com 在前台首页中,单击“新书上架”超链接可以进入到新书上架页面newbook.jsp,运行结果如图7 http://www.paper51.com
copyright paper51.com 图7新书上架 内容来自论文无忧网 www.paper51.com 上架新书消息保存在图书信息表tb_bookinfo中,以字段newbook标志,当newbook字段的值为1时,代表该图书为上架新书。上架新书页面关键代码: paper51.com <% paper51.com ResultSet rs_newbook=connDB.executeQuery("select * from tb_bookinfowhere newbook=1 order by INTime desc"); 内容来自www.paper51.com %> copyright paper51.com 5.2.4图书分类实现过程 paper51.com 为了方便用户查询所需图书信息,在网站中设置了图书分类显示模块。单击导航条中的“图书分类”超链接即可进入图书分类显示页面,在该页面左的“图书分类列表”中列出数据库中的全部图书类别,用户单击即可在右显示该图书信息列表,单击书名可以查看相应图书的详细信息,如果用户已经登录,还可以直接将图书信息添加到购物车中,图书分类显示页面的运行结果如图8 copyright paper51.com http://www.paper51.com 图8图书分类 paper51.com 在图书分类页面BookSort.jsp左的“图书分类列表”中列出了数据库中的全部图书类别,查询图书类别主要通过Select语句的Group By字句实现,具体过程: http://www.paper51.com <% http://www.paper51.com
ResultSet rs_Type=connDB.executeQuery("select Type from tb_bookinfogroup by Type");%> 内容来自www.paper51.com
显示图书分类信息时,需要注意的是,不能再使用while语句,而应该使用do…while语句,否则少一条记录,这是因为在指定图书默认类别时,已经应用rs_Type.next()语句将记录指针移动到下一条记录了,显示图书分类信息的关键代码: 内容来自www.paper51.com <%rs_Type.first(); copyright paper51.com do{//此处必须用do...while,否则会少一条记录 copyright paper51.com StringType=rs_Type.getString("Type"); copyright paper51.com %> copyright paper51.com
…… //此处省略填写订单信息代码 http://www.paper51.com <%}while(rs_Type.next());%> http://www.paper51.com 在图书分类页面BookSort.jsp的右侧的图书列表中将显示指定类别的图书信息。当用户没有选择类别,可以通过获取类别结果集rs_Type中的第一条记录的值指定默认类别,否则应用request对象的getParameter方法来获取选择的类别并查询,部分代码: http://www.paper51.com String PType=""; http://www.paper51.com if (request.getParameter("Type")!=null){ copyright paper51.com PType=chStr.chStr(request.getParameter("Type")); 内容来自论文无忧网 www.paper51.com }else{ 内容来自论文无忧网 www.paper51.com if(rs_Type.next()){ 内容来自www.paper51.com PType=rs_Type.getString("Type"); 内容来自www.paper51.com }else{response.sendRedirect("index.jsp"); paper51.com }} 内容来自论文无忧网 www.paper51.com
ResultSet rs_book=connDB.executeQuery("select * from tb_bookinfo whereType='"+PType+"'"); 内容来自论文无忧网 www.paper51.com %> http://www.paper51.com |