基于JAVA与JSP下的网上商城设计Word格式.docx
《基于JAVA与JSP下的网上商城设计Word格式.docx》由会员分享,可在线阅读,更多相关《基于JAVA与JSP下的网上商城设计Word格式.docx(50页珍藏版)》请在冰点文库上搜索。
摘要I
目录:
1
1引言2
2高校教材管理系统的需求分析2
2.1用户需求分析2
2.1.1普通用户主要需要:
2
2.1.2系级管理员主要需要:
2.2数据字典的描述2
2.3教材管理系统的数据流图2
3网上商城系统分析与设计3
3.1系统设计总体思想、目标3
3.2网上商城系统的ER模型3
3.3网上商城系统结构、功能设计3
3.3.1系统结构设计3
3.3.2系统功能模块设计3
3.4网上商城系统的数据库设计3
4系统平台、计算模式及技术3
4.1计算模式的进化及本系统选用的模式优越性3
4.1.1集中式管理——主机/终端模式4
4.1.2Client/Server模式4
4.1.3Brower/Server模式4
4.1.4系统采用B/S三层体系结构模式的优越性4
4.2JSP技术4
4.2.2JSP内建对象6
4.3mysql数据库9
4.3.1mysql概述9
4.3.2mysql常用命令9
5系统实现11
5.1用户登陆流程11
5.2买家登陆流程11
5.3卖家登陆流程13
5.4用户注册流程14
5.4.1用户注册流程图14
5.5数据库表单创建语句15
6网上商城系统设计的技术关键15
6.1JSP主要网页代码15
6.2mysql数据库表单截图22
6.3Java语言控制主要类代码23
7系统试运行结果与评价26
1引言
随着计算机的普及以及网络技术的应用,网上商城已经成为一个新的工具和一个新兴的市场,网上商城类似于现实世界当中的商店,差别是利用电子商务的各种手段,达成从买到卖的过程的虚拟商店,从而减少中间环节,消除运输成本和代理中间的差价,造就对普通消费,和加大市场流通带来巨大的发展空间。
尽能的还消费者以利益,带动公司发展和企业腾飞,引导国民经济稳定快速发展,推动国内生产总值。
2高校教材管理系统的需求分析
本网上商城构建初始目标主要是面向广大消费者,由于不同人群对商品的需求不同,因而购物网站应在具有自己特色的同时应适合不同人士的需要。
2.1用户需求分析
用户主要是买家和卖家以及网站的管理人员:
卖家:
上传商品、注册用户、更改商品、删除商品、增加商品、管理已有商品等
买家:
查看所有商品、搜索某一商品、查看具体的产品以及厂家信息等
主要是维护网站秩序,比如说终止某一买家或者卖家的使用权限等
2.2数据字典的描述
数据字典是关于数据的信息的集合,也就是对数据流图包含的所有元素的定义的集合。
任何字典最重要的用途都是供人查阅对不了解的条目的解释,数据字典的作用也正是在软件分析和设计的过程中给人提供关于数据的描述信息。
限于篇幅,下面给出本系统的部分数据字典描述:
⑴买家信息的数据字典的描述:
表名:
mall_Buyers
表内元组:
BuyIdBuyNameBuySexBuyPassBuyLevelBuyAddressBuyAge
⑵卖家信息的数据字典的描述:
表名:
mall_Sellers
SeIdSeNameSeSexSePassSeLevelSeAddressSeAge
⑶商品信息的数据字典的描述:
mall_Goods
GoodIdGoodNameGoodPriceGoodintroductionSeIdGoodkindsGoodinventory
2.3教材管理系统的数据流图
下面简要介绍部分需求的数据流图:
2.3.1教材库存查询的数据流图(DFD)
用户操作数据流程图:
图2-1商品库查询的数据流图
2.3.5用户信息管理的数据流图(DFD)
⑴增加、修改和删除用户资料,具体的过程的数据流图(DFD)表示如下:
:
3网上商城系统分析与设计
3.1系统设计总体思想、目标
3.2网上商城系统的ER模型
经过对网上商城系统的分析,我们将系统划分出了买家用户、卖家用户、商品信息三个实体,其各个实体的属性如下:
本系统的具体ER模型如下:
图3-1普通用户ER图
3.3网上商城系统结构、功能设计
3.3.1系统结构设计
网上商城系统结构主要是JAVA代码用作控制语句、JSP用于数据接收及显示、mysql用于术语的存储,采用常用的Brower/Server模式。
3.3.2系统功能模块设计
功能模块主要有:
登录验证模块、登陆显示模块、数据库操作模块、信息显示模块等
3.4网上商城系统的数据库设计
由于此网上商城属于网上商城的简易模式,所以基本数据库表的建立有mall_Goods、mall_Buyers、mall_Sellers。
4系统平台、计算模式及技术
⑴系统的硬件平台:
普通PC机
⑵系统的软件平台:
MyEclipse、mysql、NavicatforMySQL、tomcat
4.1计算模式的进化及本系统选用的模式优越性
回顾计算机的发展史,计算模式有过三次质的飞跃:
4.1.1集中式管理——主机/终端模式
以主机为中心的计算环境,数据管理,事务处理高度集中,起始成本高,系统维护升级只涉及主机,管理成本低,但用户端缺乏个人定置,无任何处理功能。
适用于大规模集中式应用,具有较高的效率和安全性,但存在执行效率及容量不足问题。
4.1.2Client/Server模式
它把集中管理模式转化为一种服务器与客户机负荷均衡的分布式计算模式,解决了执行效率及容量不足的问题。
该结构以PC为主,适合部门级应用。
初级成本低,但随着应用规模扩展,网络上异种资源类型的增多,开发、管理、维护的复杂程度加大,频繁的软硬件升级,后期成本骤升,缺乏关键事物处理的安全性与并发处理能力。
4.1.3Brower/Server模式
以网络中心计算为特征的BPS结构恰到好处地取长补短,兼容并蓄,使计算体系真正成为企业生存发展的生命力。
BPS结构使数据及应用可通过不同平台、不同网络存取,与平台无关,伸缩性大,为企业、行业提供了开放的基于标准的综合性服务计算环境,它将处理、储存、通讯能力移入网络,集中主机P终端和CPS的优点,管理集中,只涉及网络服务器,NC通过下载获得升级功能;
同时信息高度分散,通过HTTP、JAVA可访问联接任何URL资源和应用,共享程度高,可伸缩扩展性强,具有高度开放性和灵活性,同时具备高速率和安全性,使用户真正投资于应用而不是计算机本身。
4.1.4系统采用B/S三层体系结构模式的优越性
1、开放的标准2、分布计算的基础结构3、较低的开发和维护成本4、使用简单,界面友好5、系统灵活6、保障系统的安全性7、信息共享度高
4.2JSP技术
4.2.1JSP概述
JSP(JavaServerPages)是一种基于Java的脚本技术。
在JSP的众多优点之中,其中之一是它能将HTML编码从Web页面的业务逻辑中有效地分离出来。
用JSP访问可重用的组件,如Servlet、JavaBean和基于Java的Web应用程序。
JSP还支持在Web页面中直接嵌入Java代码。
可用两种方法访问JSP文件:
浏览器发送JSP文件请求、发送至Servlet的请求。
1.JSP文件访问Bean或其它能将生成的动态内容发送到浏览器的组件。
图5-1说明了该JSP访问模型。
当Web服务器接收到一个JSP文件请求时,服务器将请求发送至WebSphere应用服务器。
WebSphere应用服务器对JSP文件进行语法分析并生成Java源文件(被编译和执行为Servlet)。
Java源文件的生成和编译仅在初次调用Servlet时发生,除非已经更新了原始的JSP文件。
在这种情况下,WebSphere应用服务器将检测所做的更新,并在执行它之前重新生成和编译Servlet。
图5-1:
浏览器发送JSP文件请求
2.发送至Servlet的请求生成动态内容,并调用JSP文件将内容发送到浏览器。
图5-2说明了该访问模型。
该访问模型使得将内容生成从内容显示中分离出来更为方便。
WebSphere应用服务器支持HttpServiceRequest对象和HttpServiceResponse对象的一套新方法。
这些方法允许调用的Servlet将一个对象放入(通常是一个Bean)请求对象中,并将该请求传递到另一个页面(通常是一个JSP文件)以供显示。
调用的页面从请求对象中检索Bean,并用JSP来生成客户机端的HTML。
图5-2:
发送至Servlet的请求
5.2JSP示例
浏览器通过一个Web页面中的HTML表单请求一个servlet(PopulateBeanServlet),该servlet创建一个名为dataBean的DataBean实例,并调用JSP文件将内容发送到浏览器。
Servlet示例和JSP文件示例说明了启用内容分离的JSP访问模型。
A.Servlet是由下列Web页面中的HTML表单来调用的。
<
HTML>
BODY>
H1>
运行PopulateBeanServlet<
/H1>
P>
您是否希望运行PopulateBeanServlet?
FORMaction="
/servlet/PopulateBeanServlet"
method="
GET"
>
INPUTtype="
SUBMIT"
value="
Yes"
No"
/FORM>
/BODY>
/HTML>
B.被请求的servlet为PopulateBeanServlet,其源代码如下:
/******************************************************************
*Servlet示例:
PopulateBeanServlet.java
*这个servlet创建一个名为dataBean的DataBean实例,设置dataBean的若干个属性,
*将dataBean放置在当前“请求”对象中,
*调用JSP文件(DisplayData.jsp)来格式化并显示dataBean的数据
********************************************************************/
importjava.io.*;
importjava.beans.Beans;
importjavax.servlet.*;
importjavax.servlet.http.*;
importjavax.ejb.CreateException;
publicclassPopulateBeanServletextendsHttpServlet{
publicvoidService(HttpServletRequestreq,HttpServletResponseres)
throwsServletException,IOException{
try{
dataBean=(DataBean)Beans.instantiate(this.getClass().getClassLoader(),"
DataBean"
);
}
catch(Exceptionex){
thrownewServletException("
Can'
tcreateBEANofclassDataBean:
"
metaData.setSQL(getSQLString());
//SetsomeBeanproperties(contentgeneration)
dataBean.setProp1("
Value1"
dataBean.setProp2("
Value2"
dataBean.setProp3("
Value3"
//TosendtheBeantoaJSPfileforcontentformattinganddisplay
//1)将dataBean放置在当前“请求”对象中,
((com.sun.server.http.HttpServiceRequest)req).setAttribute("
dataBean"
dataBean);
//2)使用callPage方法调用JSP文件,文件名为DisplayData.jsp,并把请求对象传递给JSP。
((com.sun.server.http.HttpServiceResponse)res).callPage("
/DisplayData.jsp"
req);
}//endofservicemehtod
}/*endofclassPopulateBeanServlet*/
C.被调用的JSP文件为DisplayData.jsp,其内容如下:
!
--该JSP文件获得在请求对象中传递的dataBean,并显示该Bean的属性。
-->
html>
head>
title>
BeanDataDisplay<
/title>
/head>
--GettheBeanusingtheBEANtag-->
beanname="
type="
introspect="
no"
create="
scope="
request"
/bean>
body>
--TherearethreewaystoaccessBeanproperties-->
--UsingaJSPscriptlet-->
%out.println("
ThevalueofBeanproperty1is"
+dataBeans.getProp1());
%>
--UsingaJSPexpression-->
p>
ThevalueofBeanproperty2is
%=dataBean.getProp2()%>
<
/p>
--UsingtheINSERTtag-->
ThevalueofBeanproperty3is
insertbean=dataBeanproperty=prop3default="
Nopropertyvalue"
>
/insert>
<
/body>
/html>
4.2.2JSP内建对象
1.request对象
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。
它是HttpServletRequest类的实例。
序号方法说明
1objectgetAttribute(Stringname)返回指定属性的属性值
2EnumerationgetAttributeNames()返回所有可用属性名的枚举
3StringgetCharacterEncoding()返回字符编码方式
4intgetContentLength()返回请求体的长度(以字节数)
5StringgetContentType()得到请求体的MIME类型
6ServletInputStreamgetInputStream()得到请求体中一行的二进制流
7StringgetParameter(Stringname)返回name指定参数的参数值
8EnumerationgetParameterNames()返回可用参数名的枚举
9String[]getParameterValues(Stringname)返回包含参数name的所有值的数组
10StringgetProtocol()返回请求用的协议类型及版本号
11StringgetScheme()返回请求用的计划名,如:
http.https及ftp等
12StringgetServerName()返回接受请求的服务器主机名
13intgetServerPort()返回服务器接受此请求所用的端口号
14BufferedReadergetReader()返回解码过了的请求体
15StringgetRemoteAddr()返回发送此请求的客户端IP地址
16StringgetRemoteHost()返回发送此请求的客户端主机名
17voidsetAttribute(Stringkey,Objectobj)设置属性的属性值
18StringgetRealPath(Stringpath)返回一虚拟路径的真实路径
2.response对象
response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。
它是HttpServletResponse类的实例。
1StringgetCharacterEncoding()返回响应用的是何种字符编码
2ServletOutputStreamgetOutputStream()返回响应的一个二进制输出流
3PrintWritergetWriter()返回可以向客户端输出字符的一个对象
4voidsetContentLength(intlen)设置响应头长度
5voidsetContentType(Stringtype)设置响应的MIME类型
6sendRedirect(java.lang.Stringlocation)重新定向客户端的请求
3.session对象
session对象指的是客户端与服务器的一次会话,从客户端连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。
它是HttpSession类的实例.
1longgetCreationTime()返回SESSION创建时间
2publicStringgetId()返回SESSION创建时JSP引擎为它设的惟一ID号
3longgetLastAccessedTime()返回此SESSION里客户端最近一次请求时间
4intgetMaxInactiveInterval()返回两次请求间隔多长时间此SESSION被取消(ms)
5String[]getValueNames()返回一个包含此SESSION中所有可用属性的数组
6voidinvalidate()取消SESSION,使SESSION不可用
7booleanisNew()返回服务器创建的一个SESSION,客户端是否已经加入
8voidremoveValue(Stringname)删除SESSION中指定的属性
9voidsetMaxInactiveInterval()设置两次请求间隔多长时间此SESSION被取消(ms)
4.out对象
out对象是JspWriter类的实例,是向客户端输出内容常用的对象
1voidclear()清除缓冲区的内容
2voidclearBuffer()清除缓冲区的当前内容
3voidflush()清空流
4intgetBufferSize()返回缓冲区以字节数的大小,如不设缓冲区则为0
5intgetRemaining()返回缓冲区还剩余多少可用
6booleanisAutoFlush()返回缓冲区满时,是自动清空还是抛出异常
7voidclose()关闭输出流
5.page对象
page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例
1classgetClass返回此Object的类
2inthashCode()返回此Object的hash码
3booleanequals(Objectobj)判断此Object