当前位置:文档之家› 网上书店网站项目报告

网上书店网站项目报告

西北第二民族学院课程设计报告

系(部、中心)计算机科学与工程学院

姓名郑玉锦学号20041717

专业网络工程班级04级3班

同组人员

课程名称网络程序设计

设计题目名称在线书店动态网站

起止时间2007.12.172007.12.27

成绩

指导教师签名

西北第二民族学院教务处制

在线书店动态网站

摘要

JA VA/JSP语言是目前Internet上大型的WEB应用程序开发时使用得最热门的编程语言。本文描述了使用JA VA和JSP技术开发一个可以应用在电子商务上的小型系统在线书店动态网站的过程,在开发系统过程中介绍了这两种技术的重要编程方法和两者之关的联系。

此在线书店系统是基于MVC技术架构,在构建的过程中详细介绍了用这种技术开发JSP动态网站或者系统的过程和方法。

【关键字】JA VA,JSP,在线书店,MVC技术架构

目录

1在线书店需求分析 (5)

1.1硬件、软件环境说明 (5)

1.1.1硬件环境说明 (5)

1.1.2软件环境说明 (5)

1.1.3在线书店动态网站技术说明 (7)

1.2功能需求分析 (10)

2在线书店系统的总体规划与结构框图 (10)

2.1在线书店系统总体设计 (11)

2.2在线书店系统的模块总体规划设计 (11)

2.3在线书店系统各个子模块之间的关系图及动作分解 (12)

2.3.1查询购买模块下各个子模块之间的关系和操作动作分解设计..12

2.3.2管理模块下各个子模块之间的关系和操作动作分解设计 (13)

2.3.3用户登录模块下各个子模块之间的关系和操作动作分解设计..14 3在线书店系统数据库设计 (14)

3.1数据库的需求分析 (14)

3.2数据库的概念结构设计 (15)

3.2.1在线书店数据库的实体设计 (15)

3.2.2在线书店数据库的E-R图 (15)

3.3数据库的逻辑结构设计 (16)

3.3.1在线书店系统数据库逻辑结构设计 (16)

3.3.2逻辑设计在LINUX下mysql数据库系统中的实现 (16)

4针对具体的功能模块写出设计流程图与关键的程序代码 (17)

4.1在线书店系统查询购买模块设计流程图 (18)

4.2在线书店系统管理模块设计流程图 (18)

4.3在线书店用户登录模块设计流程图 (19)

4.4系统关键程序代码 (19)

4.4.1DataBaseBean.java源程序代码: (19)

4.4.2ProductBean.java源程序代码: (22)

4.4.3CartBean.java源程序代码: (24)

4.4.4CartProduct.java源程序代码: (26)

4.4.5CustomterServlet.java源程序代码: (27)

4.4.6AdminDataBaseBean.java源程序代码: (30)

4.4.7AdminServlet.java源程序代码: (35)

4.4.8UserDataBaseBean源程序代码: (38)

4.4.9UserServlet.java源程序代码: (40)

5测试和演示系统并抓取系统图形界面 (42)

5.1系统开发与运行环境的配置 (42)

5.1.1Jdk1.6.03和NetBeans IDE6.0Beta2的安装与配置 (42)

5.1.2JBoss应用服务器的安装与配置 (42)

5.1.3Mysql数据库驱动的安装与配置 (44)

5.2演示系统并抓取系统图形界面 (45)

6测试结果及存在的问题 (49)

6.1测试结果 (49)

6.2存在的问题 (50)

7参考文献 (50)

1在线书店需求分析

1.1硬件、软件环境说明

1.1.1硬件环境说明

在线书店动态网站建设的硬件环境是CPU采用的是Inter(R)Pentium4CPU 2.93GHz;硬盘80GB;主存512MB。显示器的分辨率是1027*768,32位色。

1.1.2软件环境说明

在线书店动态网站建设采用的集成开发环境是NetBeans IDE6.0BETA2,而java的编译环境是jdk1.6.03。运行JSP页面的服务器的是JBoss4.2.2服务器。Mysql数据库的驱动程序使用的是mysql-connector-java-5.1.0-bin.jar。

1)NetBeans IDE6.0BETA2集成开发环境说明

NetBeans由Sun公司在2000年创立,它是开放源运动以及开发人员和客户社区的家园,旨在构建世界级的Java IDE。https://www.doczj.com/doc/f16395387.html,全球IDE下载次数已超过160万,拥有2万多个注册成员,并且还在不断发展壮大。NetBeans当前可以在Solaris、Windows、Linux和Macintosh OS X平台上进行开发,并在SPL(Sun 公用许可)范围内使用。

NetBeans是一个全功能的开放源码Java IDE,可以帮助开发人员编写、编译、调试和部署Java应用,并将版本控制和XML编辑融入其众多功能之中。

NetBeans目前最新版本为6.0BETA2,而且支持各种插件。在NetBeans6.0中加入了对Ruby的支持,且利用各种插件,NetBeans可以用于其他非Java语言的开发。

新版本提供了对企业级Java、C++、Ruby/JRuby/Ruby on Rails的支持。RoR 下的新特性包括Rake构建工具整合、Rails的Fast Debugger扩展、纯Ruby和JRuby的debugger、支持TestJUnit,、Auto Test、RSpec以及一个整合的Ruby Gems 封装系统(packaging system)。

NetBeans6.0同样包括拖放(drag-and-drop)Swing GUI设计工具,也即之前被称为Project Matisse;在创建Web应用方面也做了改进,还支持UML模型和C/C++开发。新特性还增加了全新的移动开发工具(mobility tools),包括一

个全新的Visual Mobile Designer以及一个全新的Game Designer。

经测试NetBeans6.0还成功支持其他应用服务器,包括JBoss4.0.4、Websphere6.0、WebLogic9.2和10。

2)JBoss应用服务器环境说明

JBoss是一个运行EJB的J2EE应用服务器。它是开放源代码的项目,遵循最新的J2EE规范。从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个web操作系统(operating system for web),它体现了J2EE 规范中最新的技术,并且它还在the JavaWorld Editors'Choice2002评选中获得“最佳Java应用服务器。JBoss为我们提供了一个非常优秀的平台。有关JBoss的详细信息请参阅其主页https://www.doczj.com/doc/f16395387.html,。

JBoss的构架和其他J2EE应用服务器的构架有着巨大的不同。JBoss的模块架构是建立在JMX底层上的,下图1-1展现了JBoss主要组件和JMX的联系。

图1-1JMX-层次

JMX是一个可复用框架,它为远程(Remote)和本地(Local)管理工具扩展了应用。它的架构是层式架构。他们是实现层(instrumentation layer)、代理层(agent layer)和发布层(distribution layer)。简要的表述是,用户使用管理Bean,MBean来提供获得相应资源的实现方法。实现层实现相关的特性资源并将它发布于JMX相关应用中,它的代理层控制和发布相应的注册在MBeanServer代理上的管理资源。

图1-2JBoss主要模块

主要的JBoss模块是在MeanServer上的可管理MBean。

1.JBoss EJB容器是JBoss服务器的核心实现。它有两个特性,第一是在运行期产生EJB对象的Stub和Skeleton类,第二是支持热部署。

2.JBossNS是JBoss命名服务用来定位对象和资源。它实现了JNDI J2EE规范.

3.JBossTX是由JTA/JTS支持的交易管理控制.

4.部署服务支持EJB(jar)、Web应用文档(war)和企业级应用文档(ears)的部署。它会时刻关心J2EE应用的URL情况,一旦它们被改变或出现的时候将自动部署。

5.JBossMQ使Java消息规范(JMS)的实现。

6.JBossSX支持基于JAAS的或不支持JAAS机制的安全实现。

7.JBossCX实现了部分JCA的功能。JCA制订了J2EE应用组件如何访问基于连接的资源。

8.Web服务器支持Web容器和Servlet引擎。JBoss2.4.x版本支持Tomcat 4.0.1,Tomcat3.23和Jetty3.x服务.

1.1.3在线书店动态网站技术说明

本网站采用MVC(Modle+View+Controler)架构,数据库的连接采用的JDBC+MySql。

1).MVC与模板概念的理解

模型-视图-控制器(MVC)是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛的使用。MVC它强制性的使应用程序的输入、处理和输出分开,即应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务.使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。C存在的目的则是确保M和V的同步,一旦M改变,V 应该同步更新。

1、模型(Model)。模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑.

在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs 和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

2、视图(View)。视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。

3、控制器(controller)。控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。

控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。

综上,MVC的处理过程是先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。

下图1-3给出来MVC的组件类型的关系和功能。

图1-3MVC模式组件类型的关系和功能

MVC模式的出现不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性。

2).JSPModel1与JSPModel2

SUN在JSP出现早期制定了两种规范,称为Model1和Model2,如下图1-4和图1-5所示。虽然Model2在一定程度上实现了MVC,但是它的应用并不尽如人意。

图1-4JSP Model 1架构

图1-5JSP Model 2架构

model2容易使系统出现多个Controller,并且对页面导航的处理比较复杂。3).为什么要使用MVC

如果Web 应用程序是用像ASP ,PHP ,或者CFML 这样的过程化语言来创建的,它们将像数据库查询语句这样的数据层代码和像HTML 这样的表示层代码混在一起。经验比较丰富的开发者会将数据从表示层分离开来,但这通常不是很容易做到的,它需要精心的计划和不断的尝试。MVC 从根本上强制性的将它们分开。尽管构造MVC 应用程序需要一些额外的工作,但是它给我们带来的好处是无庸质疑的。

首先,最重要的一点是多个视图能共享一个模型,现在需要用越来越多的方式来访问你的应用程序。对此,其中一个解决之道是使用MVC ,无论你的用户想要Flash 界面或是W AP 界面;用一个模型就能处理它们。由于你已经将数据和业务规则从表示层分开,所以你可以最大化的重用你的代码了。

由于模型返回的数据没有进行格式化,所以同样的构件能被不同界面使用。模型也有状态管理和数据持久性处理的功能,例如,基于会话的购物车和电子商务过程也能被Flash 网站或者无线联网的应用程序所重用。

JSP(视图)

JavaBean (模型)

Servlet(控制器)

JavaBean (模型)

JSP(视图)

因为模型是自包含的,并且与控制器和视图相分离,所以很容易改变你的应用程序的数据层和业务规则。如果你想把你的数据库从MySQL移植到Oracle,或者改变你的基于RDBMS数据源到LDAP,只需改变你的模型即可。一旦你正确的实现了模型,不管你的数据来自数据库或是LDAP服务器,视图将会正确的显示它们。由于运用MVC的应用程序的三个部件是相互对立,改变其中一个不会影响其它两个,所以依据这种设计思想你能构造良好的松偶合的构件。

控制器的也提供了一个好处,就是可以使用控制器来联接不同的模型和视图去完成用户的需求,这样控制器可以为构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择模型进行处理,然后选择视图将处理结果显示给用户。

1.2功能需求分析

在线书店的基本功能如下图1-6所示:

图1-6在线书店的基本功能功能分析图

由图所示,在线书店可分三大块功能:网上销售图书,评价图书及优惠图书显示,图书后台管理。

2在线书店系统的总体规划与结构框图

2.1在线书店系统总体设计

下表中给出了构成在线书店系统的各个组件,通过下图2-1,可以从宏观上了解各个组件的功能。

图2-1在线书店系统的各个功能模块总体设计

2.2在线书店系统的模块总体规划设计

由系统的功能分析图,在线书店系统可以分为三大模块:查询购买模块,评价图书模块和后台管理模块。

现就三大模块下的各个子模块设计如下:1)查询购买模块下个子模块的设计:

表2-1查询购买模块的各个子模块的名称及说明

文件名称说明

welcome.jsp 程序的欢迎界面

searchview.jsp 该页面用来查询商品,并以分页的方式显示查找结果cartview.jsp 显示购物车中的商品head.jsp/foot.jsp 程序的页头与页脚

CustomerServlet.java 显示用户选定的商品以及数量,并在此页中进行结算ProductBean.java 控制器,根据用户的请求进行相应的操作DatabaseBean.java 表示商品信息的JavaBean

CartBean.java 封装了与数据库有关的操作的JavaBean CartProduct.java

封装购物车信息的JavaBean

由上表2-1给出的查询购买模块的各个子模块的名称及其功能说明,我们可以看出,查询购买模块完成了用户查询商品并购买的功能。

2)管理模块下个子模块的设计:

管理模块用来完成添加与删除商品功能,表2-2给出了管理模块中相应子模块的名称以及功能说明。

表2-2管理模块的各个子模块的名称及说明

文件名称说明

login.jsp管理员登录验证页面,如果验证不成功还返回到该页面

userlogin.jsp用户登录验证页面,如果验证不成功还返回到该页面showadddelete.jsp以分页的方式显示当前所有的商品,还可以在该页中删除商品addproduct.jap添加商品页面

adminServlet.java控制器,根据客户端的请求进行相应的操作

userServlet.java控制器,根据客户端的请求进行相应的操作adminDataBaseBean.java封装了与admin数据库有关的操作的JavaBean组件userDataBaseBean.java封装了与user数据库有关的操作的JavaBean组件另外,管理模块中还用到了ProductBean。

2.3在线书店系统各个子模块之间的关系图及动作分解

2.3.1查询购买模块下各个子模块之间的关系和操作动作分解设计

图2-1给出了查询购买模块中各个子模块之间的关系。从这个关系图我们可以看出CustomterServlet处理所有的JSP页面,是控制JSP页面显示的控制器。

图2-2查询购买模块各个子模块间的关系

根据图2-1的查询购买模块各个子模块间的关系,表2-3给出了各个子模块间相互操作的动作编号的内容。

表2-3查询购买模块动作编号对照表

动作编号动作内容动作编号动作内容

a显示所有商品b查询商品

c查看上一页商品d查看上一页商品e查看所有商品f添加到购物车

g删除选中商品h去结算中心

i结算商品j继续购物

2.3.2管理模块下各个子模块之间的关系和操作动作分解设计

图2-4给出了管理模块中各个子模块之间的关系。

图2-3管理模块中各个子模块之间的关系。

根据图2-3的管理模块各个子模块间的关系,表2-4给出了各个子模块间相互操作的动作编号的内容。

表2-4管理模块动作编号对照表

动作编号动作内容动作编号动作内容a查看已有商品b删除商品

c获取上一页的商品d获取下一页的商品

e转到添加商品页f查看已有商品

g添加商品

2.3.3用户登录模块下各个子模块之间的关系和操作动作分解设计

图2-4给出了用户模块中各个子模块之间的关系。

图2-4用户模块中各个子模块之间的关系

根据图2-4的管理模块各个子模块间的关系,表2-5给出了各个子模块间相互操作的动作编号的内容。

表2-5用户登录模块动作编号对照表

动作编号动作内容

a用户登录请求

b登录成功后到系统首页,不成功返回到用户登录界面

3在线书店系统数据库设计

3.1数据库的需求分析

在线书店需要查看图书信息,而且在在线书店的后台管理需要添加、删除图书,用户在购买图书时,需要把书库中的数量减少等;在系统管理员登录后台时需要管理员用户名和密码。用户登录需要登陆在线书店。

基于以上需求,数据库需要一个商品信息表,需要一个管理员信息表和一个用户信息表。所以本系统数据库mydb中有三个个表:product表、admin表和user 表。

3.2.1在线书店数据库的实体设计

在线书店数据库主要有三个实体:用户信息表,管理员信息表和商品表。对这三种实体的描述如下:

用户信息表(用户号,用户密码),其中用户号为主键。

管理员信息表(管理员号,管理员密码),其中管理员号为主键。

商品信息表(商品号,商品名,商品价格,商品数量,商品描述)其中商品号为主键。

则三个实体在mysql数据下的表示为:

user(user_id varchar(255)primary key not null,password varchar(50)not null);

admin(admin_id varchar(255)primary key not null,password varchar(50)not null);

product(product_id int not null,product_name nvarchar(50)not null,product_price float not null,product_num smallint not null,product_describe nvarchar(255)null);

3.2.2在线书店数据库的E-R图

图3-1在线书店的实体-关系(E-R)图

3.3.1在线书店系统数据库逻辑结构设计

在系统数据库中创建一个名称为mydb的数据库,在mydb数据库中创建product表,admin表和user表。

表3-1给出了product表的逻辑结构设计。

表3-1product表的逻辑结构设计

字段名称数据类型字段大小允许空字符串必填字段是否主键product_id数字长整型是是product_name文本50否是否product_price数字双精度是否product_num数字整型是否product_describe文本255是否否

表3-2给出了admin表的逻辑结构设计。

表3-2admin表的逻辑结构设计

字段名称数据类型字段大小允许空字符串必填字段是否主健admin_id文本255否是是password文本50否是否表3-2给出了admin表的逻辑结构设计。

表3-3user表的逻辑结构设计

字段名称数据类型字段大小允许空字符串必填字段是否主健user_id文本255否是是password文本50否是否

3.3.2逻辑设计在LINUX下mysql数据库系统中的实现

用telnet命令登录到linux服务器,telnet202.201.113.252用户名:root,密码:XXXXXX。登录到mysql数据库服务器:mysql–u root–p,用户名:zhengyujin@202.201.113.249,密码:abc123.用下面的语句创建在线书店的数据库表如下:

1.product表。

mysql>CREA TE TABLE product(

->product_id int NOT NULL,

->product_name nvarchar(50)NOT NULL,

->product_price float NOT NULL,

->product_num smallint NOT NULL,

->product_describe nvarchar(255)NULL

->);

向product表添加初始数据:

insert into product values(1,"红楼梦",199.60,100,"四大名著");

insert into product values(2,"水浒",109.60,140,"四大名著");

insert into product values(3,"三国演义",149.90,40,"四大名著");

insert into product values(1000001,"java开发指南",65,56,"全面的开发指南");

2.admin表。

mysql>create table admin(admin_id varchar(255)not null unique,password varchar(50)not null);

Query OK,0rows affected(0.08sec)

向admin表添加初始数据:

insert into admin values("zhengyujin","5015999");

insert into admin values("songshuang","2066100");

3.User表。

mysql>create table user(username_id varchar(255)primary key not null,password varchar(50)not null);

Query OK,0rows affected(0.06sec)

向user表添加初始数据:

insert user values("liangyi","12345");

insert user values("lijifang","12345");

4针对具体的功能模块写出设计流程图与关键的程序代码

在MVC架构下功能模块的设计和实现与普通架构的JSP功能模块的设计与实现不同。下面是本系统具体功能模块的设计流程图和相关关键程序代码。

4.1在线书店系统查询购买模块设计流程图

图4-1在线书店系统查询购买模块设计流程图

4.2在线书店系统管理模块设计流程图

图4-2在线书店系统管理模块设计流程图

4.3在线书店用户登录模块设计流程图

图4-3在线书店系统用户登录模块设计流程图

4.4系统关键程序代码

系统的关键程序在查询购买模块中有封装数据库有关操作的DataBaseBean 组件,表示商品信息的ProductBean.java ,封装购物车信息的CartBean.java ,表示购物车中商品信息的CartProduct.java ;还有根据用户请求进行相应操作的CustomterServlet.java 控制器。它们的源代码分别如下:4.4.1DataBaseBean.java 源程序代码:

package https://www.doczj.com/doc/f16395387.html,beans.web;import java.sql.Connection;import java.sql.DriverManager;import java.sql.*;

import com.mysql.jdbc.Driver;import javax.servlet.*;import javax.servlet.http.*;import java.io.*;

import java.util.Enumeration;

import java.util.Hashtable;

import java.util.V ector;

public class DataBaseBean{

private Connection con;

private void connectTODB(){

String CLASSFORNAME="com.mysql.jdbc.Driver";

String CONNECTSTR="jdbc:mysql://202.201.113.252:3306/mydb";

try{

Class.forName(CLASSFORNAME);

this.con=DriverManager.getConnection(CONNECTSTR,"zhengyujin","abc123");

}catch(Exception e){

e.printStackTrace();

}

}

/**Creates a new instance of DataBaseBean*/

public DataBaseBean(){

}

public V ector selectProduct(String sql){

Statement stmt=null;

ResultSet rest=null;

V ector vec=new V ector();

this.connectTODB();

try{

stmt=this.con.createStatement();

rest=stmt.executeQuery(sql);

while(rest.next()){

ProductBean temppro=new ProductBean();

temppro.setProductId(rest.getInt("product_id"));

temppro.setProductName(rest.getString("product_name"));

temppro.setProductPrice(rest.getDouble("product_price"));

temppro.setProductNum(rest.getInt("product_num"));

相关主题
文本预览
相关文档 最新文档