ImageVerifierCode 换一换
格式:DOCX , 页数:39 ,大小:536.06KB ,
资源ID:9436548      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9436548.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(商城系统开发文档.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

商城系统开发文档.docx

1、商城系统开发文档商城系统开发文档第一章系统简介1.1背景电子商务就是指以电子方式在网上完成产品或服务的一种销售,或购买和电子支付等业务交易的过程叫电子商务。电子商务的通常缩写为EC(Electronic Commerce),是一种全新的商务活动模式,它充分利用互联网的易用性、广域性和互通性,实现了快速可靠的网络化商务信息交流和业务交易。电子商务根据各种参与交易的方式不同可以分为企业对企业和企业对公司,而电子商务网站可以根据功能设置的不同可以分为电子市场(E-marketplace)网站、电子销售(E-distributor)网站、电子购买(E-procurement)网站。其中,电子商务网站的

2、设计就是在中立的立场上的,不但要考虑到购买方的不同和需求,也要考虑到销售方的利益。电子商务网站的主要服务对象是销售商,而电子购买网站的主要服务对象是买主,其目的说白了就是通过在网站上聚集大量的买主,在通过大宗的购买降低价格。有利于加速企业信息流通,为保证企业稳定发展奠定基础。1.2建设目标构建传统电子商务的基础上实现多用户电子商务平台,从管理到店铺,从店铺到产品的多维度管理模式,提炼出更可靠的盈利模式,主要为了满足顾客的需求,为企业(公司)赢得利润;与其他组织形成电子伙伴关系,向顾客提供更好的服务是一个商务网站的目标;在系统中能够使企业实现全国化与全球化经营战略;通过网络建立战略性的资源外包联

3、盟,原来复杂的工作现在只需按几下鼠标就能在国际互联网上逐一地拓展出几百万个潜在的客户。因此,系统是实现改善经营管理、开拓市场、提高企业竞争力等。 第二章 技术分析2.1系统分析2.1.1 系统结构 2.1.1 组件我们的系统目前主要分为多组件,其中组件主要有:组件名称描述是否可用(可用、不可用)Base提供系统最基本能力支持,数据库表的持久化对象,各个表基本操作的接口以及文件上传功能。Core整个系统的核心组件,在此组件当中包含了缓存、安全、使用Spring通过orm组件来代理hibernate做数据库操作、构造统一的DAO、QueryService等等。Buyer针对买家管理实现用户中心、消

4、息、收藏夹、购买订单等业务。Admin基于管理员的能力对系统进行管理,此组件主要包含管理员所能操作的业务。Login-plug系统中可使用其他登录方式,如QQ、新浪微博等,都在此组件进行接入。Lucene提供快速对系统、店铺、产品进行全文索引功能。Pay系统提供多种订单支持方式,其中有支付宝、网银在线、Paypal、财付通。Seller卖家业务管理统一在这组件内实现,主要有:宝贝管理、订单管理。Timer实现系统中的一些定时任务,统计任务等后台运行机制。Uc支持ucenter整合,实现用户的一站式注册、登录、退出以及社区其他数据的交互。View实现浏览查看功能,主要针对查询业务独立封装出来组件

5、便于以后优化2.1.2 用户角色 目前在整个系统中用户大体分为四种角色:管理员、买家、卖家、匿名用户。 2.2 关键技术2.2.1 编写规范命名规则1)包:命名应该都是名词或名词性词组,全部小写,单词之间用.分开;一般使用本公司组织网站域名的逆序后跟具体的软件内部模块名包命名举例: package com.sun.java; package com.mycompany.db;2)类:名词或名词性词组,每个单词首字母大写;一般不使用缩写,除非其缩写更通用和便于理解,如HTML;当要区别接口和实现类的时候,可以在类的后面加上Impl,例如:interface Container与class Con

6、tainerImpl;Exception类用Exception做为类命名的结尾,例如:DataNotFoundException;抽象类用Abstract做为类命名的开头,例如:AbstractBeanDefinition,AbstractBeanFactory;Test类最好能用Test做为类命名的结尾。例如:ContainerTest类命名举例:class Person; class SpringRain3)接口:同类的命名规则接口命名举例:interface Runner;4)方法:动词或动词性词组,首字母小写,第二个及以后的单词首字母大写;方法命名举例:run(); displayIn

7、formation();5)变量:名词或名词性词组,首字母小写,第二个及以后的单词首字母大写;不提倡使用下画线_和美元符$作为变量开头;单词间可以使用下画线分隔;变量名不宜过长但也应有意义,除非是临时使用(例如只涉及几行代码)后即丢弃的情况,不建议使用单个字母做变量名,常用的临时使用的变量名包括表示整数的i,j,k,m,n和表示字母的c以及表示异常对象的e等。变量命名举例:int age; int student_age; String studentName; Exception e;6)常量:每一个单词都要大写,单词之间用_分开。常量命名举例:final static int MIN_WI

8、DTH = 47)文件的命名:java源程序文件以.java结尾,编译后的文件以.class结尾。例如:Container.java,Container.class。文件组织1. 一个文件由被空行分割而成的段落以及标识每个段落的可选注释共同组成。超过2000行的程序难以阅读,所以一个java程序文件中的代码行数不能超过2000行,除非有特殊原因。每个Java源文件都包含一个单一的公共类或接口。若私有类和接口与一个公共类相关联,可以将它们和公共类放入同一个源文件。公共类必须是这个文件中的第一个类或接口。Java源文件还遵循以下规则,这个规则规定了java程序段落的顺序:- 开头注释- 包和引入语

9、句- 类和接口声明2.在一个Java类中,各部分顺序:1)属性声明2)构造方法声明3)static语句4)普通方法声明5)main方法声明6)内部类的声明总结:一般一个完整的java文件内容如下:1) 包的定义2) impot类(输入包的顺序、避免使用*)输入包应该按照java.*.*,javax.*.*,org.*.* ,com.*.*的顺序import;在import的时候不应该使用* (例如: java.util.*)3) 类或接口的定义4)静态变量定义,按public,protected,private顺序5)实例变量定义,按public,protected,private顺序6)构造

10、方法7)方法定义顺序按照public方法(类自己的方法),实现接口的方法,重载的public方法,受保护方法,包作用域方法和私有方法。注意:一般类中每个方法的代码行数不要超过100行。分隔和缩进1.使用空行在下述情况下使用单行的空白行来分隔:1)在方法之间2)在方法内部代码的逻辑段落小节之间3)在方法中声明局部变量之后,具体的Java语句之前4)在注释行之前5)在同一个源文件中定义的多个类/接口之间使用双行的空白行来分隔2.使用空格符除正常的成分之间以空格符分隔名(如数据类型和变量名之间),在下述情况下也应使用一个空格符来分隔:1)运算符和运算符之间,如:c = a + b;2)在参数列表中的

11、逗号后面,如: void m1(int year, int month) 3)在if,for,while待语句之后如: if (a b) 3.使用换行符不建议在一行中写多条语句,一条语句的长度一般超过了80个字符时,应该换行;当一行表达式不能在一行内显示,请按下列顺序要求拆行:1)在(或=符号后拆行2)在,拆行3)在一个操作符后拆行4)把并发的拆行放到同一级别上的缩进5)如果在拆行中再次拆分的时候遇到(,应该新拆出来的行放在更远的一个缩进级别上4.使用小括号可以使用小括号来强行规定运算顺序5.使用花括号开始位置可以位于当前内容的尾部,也可以另起一行6.使用缩进在下述情况下应用缩进1)类中的成分

12、2)方法体或语句块中的成分3)换行时的非起始行缩减量一般为在上一级成分的基础上再缩进四个空格,而 Eclipse 默认格式化是采用 1 个制表符的,可以采用下面的方式更改一下:Window Preferences Java Code Style Formatter 点右边的Edit按钮,切换到第一个选项卡Indentation,在 General settings 组将 Tab policy 由 Table only 改为 Space only,同时把 Indentation size 和 Tab size 改为 4,最后把最上面的 Profile name 取一个名字,名字任意,再点 OK

13、按钮就可以了。以后按 Tab 键或者 Ctrl + Shift + F 会自动采用 4 个空格作为一个层次的缩进。在eclipse开发工具中,把代码写好之后,可以用快捷键:CTRL + SHIFT + F来自动格式化代码。声明语句1.变量声明:每行声明一个变量,并加注释。例如:int count; / number of containersint count, size; / AVOID THIS!数组声明应该采用前缀方式。例如:int table;String args;2.类或接口声明1) 和声明语句在同一行。2)如果不能在同一行显示,就将extends或implements进行拆行,并

14、放在两个缩进级别后。3) 符号应该独自占一行。例如:public class ChiefExecutiveOfficerextends Managerimplements Person .3.方法声明和声明语句在同一行。符号应该独自占一行。总结:每行声明一个变量,并尽量在声明变量的同时对其进行初始化,除非其初值尚不确定。局部变量应在其所在的方法或语句块的开头集中声明,而不应随用随声明。注释Java有两种注释方法。/* This is a comment */或 / This is a comment第一种应该被用到写JavaDoc上,并且都用/*开头。第二种适合于在做部分代码的注释,但只适合做

15、非常短内容的注释。另外,对于 HTML、XML、CSS、JavaScript 我要遵守的编码规范如下:1) HTML、XML 由于层次缩进比较多,建议采用两个空格作为一层缩进;2) CSS 和 JavaScript 为了与 HTML 配合,也采用两个空格作为一层缩进;3) HTML、XML 的标签名、属性称全部使用小写字母,HTML 尽量能符合 XHTML 的规范,避免使用 XHTML 不推荐使用的标签,比如:font、applet 等等;4) HTML 的属性值采用双引号界定;5) JavaScript 在尽量使用标准的语法、对象等,变量声明能加上 var.字符串常量统一采用单引号界定2.2

16、.2 URL重写简介UrlRewriteFilter是一个用于改写URL的Web过滤器,类似于Apache的mod_rewrite。适用于任何Web应用服务器(如Resin,Orion,Tomcat等)。其典型应用就把动态URL静态化,便于搜索引擎爬虫抓取你的动态网页。基本原理JSP页面地址- 服务器Filter过滤 - 调用urlrewrite.xml映射规则 - 服务器响应 - 转换成伪地址安装在其主页下载该包文件,把其jar包放在lib目录下,在web.xml中添加下面内容Xml代码: UrlRewriteFilterorg.tuckey.web.filters.urlrewrite.U

17、rlRewriteFilter UrlRewriteFilter *.htm 参数介绍web.xml下的filter参数设置介绍Xml代码: UrlRewriteFilterorg.tuckey.web.filters.urlrewrite.UrlRewriteFilter confReloadCheckInterval 60 confPath /WEB-INF/urlrewrite.xml logLevel DEBUG statusPath /status statusEnabled true statusEnabledOnHosts localhost, dev.*, * modRewri

18、teConfText RewriteRule /(/+)/?(.*) /u/$1/$2 R RewriteRule /(uge)/(/+)$ /$1/$2/ R UrlRewriteFilter *.htm urlrewrite.xml 配置文件参数Xml代码: id参数文章管理 /article_(0-9+).htm$ /article.htm?param=$1 mark参数文章管理 /article_(A-Za-z+).htm$ /article.htm?param=$12.2.3 Velocity模板引擎简介Velocity是一个基于java的模板引擎(template engine),

19、它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。作为一个比较完善的模板引擎,Velocity的功能是比较强大的,但强大的同时也增加了应用复杂性。基本语法1、#用来标识Velocity的脚本语句,包括#set、#if 、#else、#end、#foreach、#end、#iinclude、#parse、#macro等;如:#if($info.imgs)#else#end2、$用来标识一个对象(或理解为变量);如:$i、$msg、$TagUtil.options(.)等。3、用来明确标识Velocity变量;比如在页面中,页面中有一个$som

20、eonename,此时,Velocity将把someonename作为变量名,若我们程序是想在someone这个变量的后面紧接着显示name字符,则上面的标签应该改成$someonename。4、!用来强制把不存在的变量显示为空白。如当页面中包含$msg,如果msg对象有值,将显示msg的值,如果不存在msg对象同,则在页面中将显示$msg字符。这是我们不希望的,为了把不存在的变量或变量值为null的对象显示为空白,则只需要在变量名前加一个“!”号即可。如:$!msg我们提供了五条基本的模板脚本语句,基本上就能满足所有应用模板的要求。这四条模板语句很简单,可以直接由界面设计人员来添加。在当前很

21、多EasyJWeb的应用实践中,我们看到,所有界面模板中归纳起来只有下面四种简单模板脚本语句即可实现: A)、$!obj 直接返回对象结果。 如:在html标签中显示java对象msg的值。$!msg 在html标签中显示经过HtmlUtil对象处理过后的msg对象的值$!HtmlUtil.doSomething($!msg)$!HtmlUtil.doSomething($!msg)B)、#if($!obj) #else #end 判断语句 如:在EasyJWeb各种开源应用中,我们经常看到的用于弹出提示信息msg的例子。 #if($msg) alert($!msg); #end上面的脚本表示

22、当对象msg对象存在时,输出等后面的内容。C)、#foreach( $info in $list) $info.someList #end循环读取集合list中的对象,并作相应的处理。 如:EasyJF开源论坛系统中论(0.3)坛首页显示热门主题的html界面模板脚本:#foreach( $info in $hotList1) $!info.title#end 上面的脚本表示循环遍历hotList1集合中的对象,并输出对象的相关内容。 D)、#macro(macroName)#end 脚本函数(宏)调用,不推荐在界面模板中大量使用。 如:在使用EasyJWeb Tools快速生成的添删改查示例

23、中,可以点击列表的标题栏进行升降排序显示,这是我们在EasyJWeb应用中经常看到的一个排序状态显示的模板内容。 函数(宏)定义,一般放在最前面#macro(orderPic $type)#if ($orderField.equals($type) #end#end具体的调用如:头衔#orderPic(title)5、包含文件#inclue(模板文件名)或#parse(模板文件名)主要用于处理具有相同内容的页面,比如每个网站的顶部或尾部内容。使用方法,可以参考EasyJF开源Blog及EasyJF开源论坛中的应用!如:#parse(/blog/top.html)或#include(/blog/

24、top.html)parse与include的区别在于,若包含的文件中有Velocity脚本标签,将会进一步解析,而include将原样显示。关于#set的使用在万不得已的时候,不要在页面视图自己声明Velocity脚本变量,也就是尽量少使用#set。有时候我们需要在页面中显示序号,而程序对象中又没有包含这个序号属性同,可以自己定义。如在一个循环体系中,如下所示:#set ($i=0)#foreach($info in $list)序号:$i#set($i=$i+1)#endVelocity脚本语法摘要1、声明:#set ($var=XXX)左边可以是以下的内容Variable referenceString literalProperty referenceMethod referenceNumber literal #set ($i=1)ArrayList #set ($arr=yt1,t2)算术运算符2、注释:单行# XXX多行#* xxx xxxx xxxxxxxxxxxx*#3、变量 Variables以 $ 开头,第一个字符必须为字母。character followed by a VTL Identifier. (a .

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1