商城系统开发文档Word格式文档下载.docx
- 文档编号:22572599
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:39
- 大小:536.06KB
商城系统开发文档Word格式文档下载.docx
《商城系统开发文档Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《商城系统开发文档Word格式文档下载.docx(39页珍藏版)》请在冰豆网上搜索。
Uc
支持ucenter整合,实现用户的一站式注册、登录、退出以及社区其他数据的交互。
View
实现浏览查看功能,主要针对查询业务独立封装出来组件便于以后优化
2.1.2用户角色
目前在整个系统中用户大体分为四种角色:
管理员、买家、卖家、匿名用户。
2.2关键技术
2.2.1编写规范
命名规则
1)包:
命名应该都是名词或名词性词组,全部小写,单词之间用"
."
分开;
一般使用本公司/组织网站域名的逆序后跟具体的软件内部模块名
包命名举例:
packagecom.sun.java;
packagecom.mycompany.db;
2)类:
名词或名词性词组,每个单词首字母大写;
一般不使用缩写,除非其缩写更通用和便于理解,如HTML;
当要区别接口和实现类的时候,可以在类的后面加上"
Impl"
,例如:
interfaceContainer与classContainerImpl;
Exception类用"
Exception"
做为类命名的结尾,例如:
DataNotFoundException;
抽象类用"
Abstract"
做为类命名的开头,例如:
AbstractBeanDefinition,AbstractBeanFactory;
Test类最好能用"
Test"
做为类命名的结尾。
例如:
ContainerTest
类命名举例:
classPerson;
classSpringRain
3)接口:
同"
类"
的命名规则
接口命名举例:
interfaceRunner;
4)方法:
动词或动词性词组,首字母小写,第二个及以后的单词首字母大写;
方法命名举例:
run();
displayInformation();
5)变量:
名词或名词性词组,首字母小写,第二个及以后的单词首字母大写;
不提倡使用下画线"
_"
和美元符"
$"
作为变量开头;
单词间可以使用下画线分隔;
变量名不宜过长但也应有意义,除非是临时使用(例如只涉及几行代码)后即丢弃的情况,不建议使用单个字母做变量名,常用的临时使用的变量名包括表示整数的i,j,k,m,n和表示字母的c以及表示异常对象的e等。
变量命名举例:
intage;
intstudent_age;
StringstudentName;
Exceptione;
6)常量:
每一个单词都要大写,单词之间用"
分开。
常量命名举例:
finalstaticintMIN_WIDTH=4
7)文件的命名:
java源程序文件以.java结尾,编译后的文件以.class结尾。
Container.java,Container.class。
文件组织
1.一个文件由被空行分割而成的段落以及标识每个段落的可选注释共同组成。
超过2000行的程序难以阅读,所以一个java程序文件中的代码行数不能超过2000行,除非有特殊原因。
每个Java源文件都包含一个单一的公共类或接口。
若私有类和接口与一个公共类相关联,可以将它们和公共类放入同一个源文件。
公共类必须是这个文件中的第一个类或接口。
Java源文件还遵循以下规则,这个规则规定了java程序段落的顺序:
-开头注释
-包和引入语句
-类和接口声明
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)构造方法
7)方法定义顺序按照public方法(类自己的方法),实现接口的方法,重载的public方法,受保护方法,包作用域方法和私有方法。
注意:
一般类中每个方法的代码行数不要超过100行。
分隔和缩进
1.使用空行
在下述情况下使用单行的空白行来分隔:
1)在方法之间
2)在方法内部代码的逻辑段落小节之间
3)在方法中声明局部变量之后,具体的Java语句之前
4)在注释行之前
5)在同一个源文件中定义的多个类/接口之间使用双行的空白行来分隔
2.使用空格符
除正常的成分之间以空格符分隔名(如数据类型和变量名之间),在下述情况下也应使用一个空格符来分隔:
1)运算符和运算符之间,如:
c=a+b;
2)在参数列表中的逗号后面,如:
voidm1(intyear,intmonth){}
3)在if,for,while待语句之后 如:
if(a>
b){}
3.使用换行符
不建议在一行中写多条语句,一条语句的长度一般超过了80个字符时,应该换行;
当一行表达式不能在一行内显示,请按下列顺序要求拆行:
1)在"
("
或"
="
符号后拆行
2)在"
"
拆行
3)在一个操作符后拆行
4)把并发的拆行放到同一级别上的缩进
5)如果在拆行中再次拆分的时候遇到"
,应该新拆出来的行放在更远的一个缩进级别上
4.使用小括号
可以使用小括号来强行规定运算顺序
5.使用花括号
开始位置可以位于当前内容的尾部,也可以另起一行
6.使用缩进
在下述情况下应用缩进
1)类中的成分
2)方法体或语句块中的成分
3)换行时的非起始行
缩减量一般为在上一级成分的基础上再缩进四个空格,而Eclipse默认格式化是采用1个制表符的,可以采用下面的方式更改一下:
Window——>
Preferences……——>
Java——>
CodeStyle——>
Formatter点右边的"
Edit……"
按钮,切换到第一个选项卡"
Indentation"
,在Generalsettings组将Tabpolicy由Tableonly改为Spaceonly,同时把Indentationsize和Tabsize改为4,最后把最上面的Profilename取一个名字,名字任意,再点OK按钮就可以了。
以后按Tab键或者Ctrl+Shift+F会自动采用4个空格作为一个层次的缩进。
在eclipse开发工具中,把代码写好之后,可以用快捷键:
CTRL+SHIFT+F来自动格式化代码。
声明语句
1.变量声明:
每行声明一个变量,并加注释。
intcount;
//numberofcontainers
intcount,size;
//AVOIDTHIS!
数组声明应该采用前缀方式。
int[]table;
String[]args;
2.类或接口声明
1)"
{"
和声明语句在同一行。
2)如果不能在同一行显示,就将"
extends"
implements"
进行拆行,并放在两个缩进级别后。
3)"
}"
符号应该独自占一行。
publicclassChiefExecutiveOfficer
extendsManager
implementsPerson{
...
}
3.方法声明
"
每行声明一个变量,并尽量在声明变量的同时对其进行初始化,除非其初值尚不确定。
局部变量应在其所在的方法或语句块的开头集中声明,而不应随用随声明。
注释
Java有两种注释方法。
/*Thisisacomment*/"
或"
//Thisisacomment"
第一种应该被用到写JavaDoc上,并且都用"
/**"
开头。
第二种适合于在做部分代码的注释,但只适合做非常短内容的注释。
另外,对于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.2URL重写
简介
UrlRewriteFilter是一个用于改写URL的Web过滤器,类似于Apache的mod_rewrite。
适用于任何Web应用服务器(如Resin,Orion,Tomcat等)。
其典型应用就把动态URL静态化,便于搜索引擎爬虫抓取你的动态网页。
基本原理
JSP页面地址-->
服务器Filter过滤-->
调用urlrewrite.xml映射规则-->
服务器响应-->
转换成伪地址
安装
在其主页下载该包文件,把其jar包放在lib目录下,在web.xml中添加下面内容
Xml代码:
<
filter>
filter-name>
UrlRewriteFilter<
/filter-name>
<
filter-class>
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
/filter-class>
/filter>
filter-mapping>
url-pattern>
*.htm<
/url-pattern>
/filter-mapping>
参数介绍
web.xml下的filter参数设置介绍
<
!
--设置定时检查配置文件的时间以供重新加载的时间,该参数值为整型,0为每次都检查,-1为从不检查,默认为-1-->
init-param>
param-name>
confReloadCheckInterval<
/param-name>
param-value>
60<
/param-value>
/init-param>
--设置配置文件的路径-->
confPath<
/WEB-INF/urlrewrite.xml<
--设置日志的等级-->
logLevel<
DEBUG<
--设置状态目录,必须以/开始,默认为/rewrite-status-->
statusPath<
/status<
--是否允许状态页面,默认为true-->
statusEnabled<
true<
--设置host的列表,可以使用通配符,多个host用逗号隔开-->
statusEnabledOnHosts<
localhost,dev.*,*<
--重写规则-->
modRewriteConfText<
RewriteRule^/~([^/]+)/?
(.*)/u/$1/$2[R]
RewriteRule^/([uge])/([^/]+)$/$1/$2/[R]
urlrewrite.xml配置文件参数
?
xmlversion="
1.0"
encoding="
utf-8"
>
DOCTYPEurlrewritePUBLIC"
-//tuckey.org//DTDUrlRewrite2.6//EN"
"
http:
//tuckey.org/res/dtds/urlrewrite2.6.dtd"
urlrewrite>
rule>
note>
id参数文章管理<
/note>
from>
^/article_([0-9]+).htm$<
/from>
totype="
forward"
/article.htm?
param=$1<
/to>
/rule>
mark参数文章管理<
^/article_([A-Za-z]+).htm$<
/urlrewrite>
2.2.3Velocity模板引擎
Velocity是一个基于java的模板引擎(templateengine),它允许任何人仅仅简单的使用模板语言(templatelanguage)来引用由java代码定义的对象。
作为一个比较完善的模板引擎,Velocity的功能是比较强大的,但强大的同时也增加了应用复杂性。
基本语法
1、"
#"
用来标识Velocity的脚本语句,包括#set、#if、#else、#end、#foreach、#end、#iinclude、#parse、#macro等;
如:
#if($info.imgs)
imgsrc="
$info.imgs"
border=0>
#else
noPhoto.jpg"
#end
2、"
用来标识一个对象(或理解为变量);
$i、$msg、$TagUtil.options(...)等。
3、"
{}"
用来明确标识Velocity变量;
比如在页面中,页面中有一个$someonename,此时,Velocity将把someonename作为变量名,若我们程序是想在someone这个变量的后面紧接着显示name字符,则上面的标签应该改成${someone}name。
4、"
用来强制把不存在的变量显示为空白。
如当页面中包含$msg,如果msg对象有值,将显示msg的值,如果不存在msg对象同,则在页面中将显示$msg字符。
这是我们不希望的,为了把不存在的变量或变量值为null的对象显示为空白,则只需要在变量名前加一个“!
”号即可。
$!
msg
我们提供了五条基本的模板脚本语句,基本上就能满足所有应用模板的要求。
这四条模板语句很简单,可以直接由界面设计人员来添加。
在当前很多EasyJWeb的应用实践中,我们看到,所有界面模板中归纳起来只有下面四种简单模板脚本语句即可实现:
A)、$!
obj 直接返回对象结果。
如:
在html标签中显示java对象msg的值。
p>
msg<
/p>
在html标签中显示经过HtmlUtil对象处理过后的msg对象的值 <
HtmlUtil.doSomething($!
msg)<
B)、#if($!
obj)#else#end判断语句
在EasyJWeb各种开源应用中,我们经常看到的用于弹出提示信息msg的例子。
#if($msg)
<
script>
alert('
msg'
);
/script>
上面的脚本表示当对象msg对象存在时,输出<
等后面的内容。
C)、#foreach($infoin$list)$info.someList#end 循环读取集合list中的对象,并作相应的处理。
EasyJF开源论坛系统中论(0.3)坛首页显示热门主题的html界面模板脚本:
#foreach($infoin$hotList1)
ahref="
/bbsdoc.ejf?
easyJWebCommand=show&
&
cid=$!
info.cid"
target="
_blank"
$!
info.title<
/a>
br>
上面的脚本表示循环遍历hotList1集合中的对象,并输出对象的相关内容。
D)、#macro(macroName)#end脚本函数(宏)调用,不推荐在界面模板中大量使用。
在使用EasyJWebTools快速生成的添删改查示例中,可以点击列表的标题栏进行升降排序显示,这是我们在EasyJWeb应用中经常看到的一个排序状态显示的模板内容。
函数(宏)定义,一般放在最前面
#macro(orderPic$type)
#if($orderField.equals($type))
/images/ico/${orderType}.gif"
具体的调用如:
fontcolor="
#FFFFFF"
头衔#orderPic("
title"
)<
/font>
5、包含文件#inclue("
模板文件名"
)或#parse("
)
主要用于处理具有相同内容的页面,比如每个网站的顶部或尾部内容。
使用方法,可以参考EasyJF开源Blog及EasyJF开源论坛中的应用!
如:
#parse("
/blog/top.html"
)或#include("
parse与include的区别在于,若包含的文件中有Velocity脚本标签,将会进一步解析,而include将原样显示。
关于#set的使用
在万不得已的时候,不要在页面视图自己声明Velocity脚本变量,也就是尽量少使用#set。
有时候我们需要在页面中显示序号,而程序对象中又没有包含这个序号属性同,可以自己定义。
如在一个循环体系中,如下所示:
#set($i=0)
#foreach($infoin$list)
序号:
$i
#set($i=$i+1)
Velocity脚本语法摘要
1、声明:
#set($var=XXX)左边可以是以下的内容
Variablereference
Stringliteral
Propertyreference
Methodreference
Numberliteral#set($i=1)
ArrayList#set($arr=["
yt1"
t2"
])
算术运算符
2、注释:
单行##XXX
多行#*xxx
xxxx
xxxxxxxxxxxx*#
3、变量Variables
以"
开头,第一个字符必须为字母。
characterfollowedbyaVTLIdentifier.(a..
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 商城 系统 开发 文档