欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年商城系统开发文档参照 .pdf

    • 资源ID:40342448       资源大小:944.58KB        全文页数:30页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年商城系统开发文档参照 .pdf

    商城系统开发文档名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 30 页 -商城系统开发文档2/30目录目录.2 第一章系统简介 .3 1.1背景 .3 1.2 系统建设的目标.3 第二章技术分析 .4 2.1 系统分析.4 2.1.1 系统结构.4 2.1.1 组件.4 2.1.2 用户角色.6 2.2 关键技术.6 2.2.1 编写规范.6 2.2.2 URL重写.10 2.2.3 Velocity模板引擎.12 2.2.4 Spring配置.17 2.3 开发指南.20 2.3.1 入口.20 2.3.2 目录结构.20 2.3.3 web.xml解析.21 第三章开发实践 .24 3.1 商品删除.24 3.1.1 后台代码流程操作.24 3.1.2 后台代码分析.26 3.1.3 前台代码流程操作.28 3.1.4 前台代码分析.29 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 30 页 -商城系统开发文档3/30第一章系统简介1.1 背景电子商务就是指以电子方式在网上完成产品或服务的一种销售,或购买和电子支付等业务交易的过程叫电子商务。电子商务的通常缩写为EC(Electronic Commerce),是一种全新的商务活动模式,它充分利用互联网的易用性、广域性和互通性,实现了快速可靠的网络化商务信息交流和业务交易。电子商务根据各种参与交易的方式不同可以分为企业对企业和企业对公司,而电子商务网站可以根据功能设置的不同可以分为电子市场(E-marketplace)网站、电子销售(E-distributor)网站、电子购买(E-procurement)网站。其中,电子商务网站的设计就是在中立的立场上的,不但要考虑到购买方的不同和需求,也要考虑到销售方的利益。电子商务网站的主要服务对象是销售商,而电子购买网站的主要服务对象是买主,其目的说白了就是通过在网站上聚集大量的买主,在通过大宗的购买降低价格。有利于加速企业信息流通,为保证企业稳定发展奠定基础。1.2 建设目标构建传统电子商务的基础上实现多用户电子商务平台,从管理到店铺,从店铺到产品的多维度管理模式,提炼出更可靠的盈利模式,主要为了满足顾客的需求,为企业(公司)赢得利润;与其他组织形成电子伙伴关系,向顾客提供更好的服务是一个商务网站的目标;在系统中能够使企业实现全国化与全球化经营战略;通过网络建立战略性的资源外包联盟,原来复杂的工作现在只需按几下鼠标就能在国际互联网上逐一地拓展出几百万个潜在的客户。因此,系统是实现改善经营管理、开拓市场、提高企业竞争力等。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 30 页 -商城系统开发文档4/30第二章技术分析2.1 系统分析2.1.1 系统结构2.1.1 组件我们的系统目前主要分为多组件,其中组件主要有:组件名称描述是否可用(可用、不可用)Base 提供系统最基本能力支持,数据库表的持久化对象,各个表基本操作的接口以及文件上传功能。Core 整个系统的核心组件,在此组件当中包含了缓存、安全、使用Spring 通过orm 组件来代理 hibernate做数据库操作、构造统一名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 30 页 -商城系统开发文档5/30的 DAO、QueryService等等。Buyer 针对买家管理实现用户中心、消息、收藏夹、购买订单等业务。Admin 基于管理员的能力对系统进行管理,此组件主要包含管理员所能操作的业务。Login-plug 系统中可使用其他登录方式,如 QQ、新浪微博等,都在此组件进行接入。Lucene 提供快速对系统、店铺、产品进行全文索引功能。Pay 系统提供多种订单支持方式,其中有支付宝、网银在线、Paypal、财付通。Seller 卖家业务管理统一在这组件内实现,主要有:宝贝管理、订单管理。Timer 实现系统中的一些定时任务,统计任务等后台运行机制。Uc 支持 ucenter 整合,实现用户的一站式注册、登录、退出以及社区其他数据的交互。View 实现浏览查看功能,主要名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 30 页 -商城系统开发文档6/30针对查询业务独立封装出来组件便于以后优化2.1.2 用户角色目前在整个系统中用户大体分为四种角色:管理员、买家、卖家、匿名用户。匿名用户买家卖家管理员2.2 关键技术2.2.1 编写规范命名规则1)包:命名应该都是名词或名词性词组,全部小写,单词之间用.分开;一般使用本公司组织网站域名的逆序后跟具体的软件内部模块名包命名举例:package com.sun.java;package com.mycompany.db;2)类:名词或名词性词组,每个单词首字母大写;一般不使用缩写,除非其缩写更通用和便于理解,如 HTML;当要区别接口和实现类的时候,可以在类的后面加上 Impl,例如:interface Container与 class ContainerImpl;Exception 类用Exception做为类命名的结尾,例如:DataNotFoundException;抽象类用 Abstract名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 30 页 -商城系统开发文档7/30做为类命名的开头,例如:AbstractBeanDefinition,AbstractBeanFactory;Test类最好能用 Test做为类命名的结尾。例如:ContainerTest 类命名举例:class Person;class SpringRain 3)接口:同类的命名规则接口命名举例:interface Runner;4)方法:动词或动词性词组,首字母小写,第二个及以后的单词首字母大写;方法命名举例:run();displayInformation();5)变量:名词或名词性词组,首字母小写,第二个及以后的单词首字母大写;不提倡使用下画线 _和美元符$作为变量开头;单词间可以使用下画线分隔;变量名不宜过长但也应有意义,除非是临时使用(例如只涉及几行代码)后即丢弃的情况,不建议使用单个字母做变量名,常用的临时使用的变量名包括表示整数的 i,j,k,m,n 和表示字母的 c 以及表示异常对象的e等。变量命名举例:int age;int student_age;String studentName;Exception e;6)常量:每一个单词都要大写,单词之间用_分开。常量命名举例:final static int MIN_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 页,共 30 页 -商城系统开发文档8/307)方法定义顺序按照public 方法(类自己的方法),实现接口的方法,重载的 public方法,受保护方法,包作用域方法和私有方法。注意:一般类中每个方法的代码行数不要超过100 行。分隔和缩进1.使用空行在下述情况下使用单行的空白行来分隔:1)在方法之间2)在方法内部代码的逻辑段落小节之间3)在方法中声明局部变量之后,具体的Java语句之前4)在注释行之前5)在同一个源文件中定义的多个类/接口之间使用双行的空白行来分隔2.使用空格符除正常的成分之间以空格符分隔名(如数据类型和变量名之间),在下述情况下也应使用一个空格符来分隔:1)运算符和运算符之间,如:c=a+b;2)在参数列表中的逗号后面,如:void m1(int year,int month)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 Code Style Formatter 点右边的Edit,按钮,切换到第一个选项卡 Indentation,在 General settings 组将 Tab policy 由 Table only 改为 Space only,同时把Indentation size 和 Tab size 改为4,最后把最上面的Profile name 取一个名字,名字任意,再点 OK 按钮就可以名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 30 页 -商城系统开发文档9/30了。以后按Tab 键或者Ctrl+Shift+F 会自动采用4 个空格作为一个层次的缩进。在 eclipse开发工具中,把代码写好之后,可以用快捷键:CTRL+SHIFT+F 来自动格式化代码。声明语句1.变量声明:每行声明一个变量,并加注释。例如:int count;/number of containers int count,size;/AVOID THIS!数组声明应该采用前缀方式。例如:int table;String args;2.类或接口声明1)和声明语句在同一行。2)如果不能在同一行显示,就将extends或implements进行拆行,并放在两个缩进级别后。3)符号应该独自占一行。例如:public class ChiefExecutiveOfficer extends Manager implements Person .3.方法声明 和声明语句在同一行。符号应该独自占一行。总结:每行声明一个变量,并尽量在声明变量的同时对其进行初始化,除非其初值尚不确定。局部变量应在其所在的方法或语句块的开头集中声明,而不应随用随声明。注释Java有两种注释方法。/*This is a comment*/或/This is a comment 第一种应该被用到写JavaDoc上,并且都用/*开头。第二种适合于在做部分代码的注释,但只适合做非常短内容的注释。另外,对于HTML、XML、CSS、JavaScript 我要遵守的编码规范如下:1)HTML、XML 由于层次缩进比较多,建议采用两个空格作为一层缩进;2)CSS 和 JavaScript 为了与 HTML 配合,也采用两个空格作为一层缩进;3)HTML、XML 的标签名、属性称全部使用小写字母,HTML 尽量能符合XHTML 的规范,避免使用XHTML 不推荐使用的标签,比如:font、applet 等等;4)HTML 的属性值采用双引号界定;名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 30 页 -商城系统开发文档10/305)JavaScript 在尽量使用标准的语法、对象等,变量声明能加上var.字符串常量统一采用单引号界定2.2.2 URL 重写简介UrlRewriteFilter 是一个用于改写URL 的 Web 过滤器,类似于Apache 的mod_rewrite。适用于任何 Web 应用服务器(如 Resin,Orion,Tomcat 等)。其典型应用就把动态URL 静态化,便于搜索引擎爬虫抓取你的动态网页。基本原理JSP 页面地址-服务器 Filter过滤 -调用 urlrewrite.xml映射规则 -服务器响应-转换成伪地址安装在其主页下载该包文件,把其jar 包放在 lib 目录下,在 web.xml 中添加下面内容Xml 代码:UrlRewriteFilter org.tuckey.web.filters.urlrewrite.UrlRewriteFilter UrlRewriteFilter *.htm 参数介绍web.xml 下的 filter 参数设置介绍Xml 代码:UrlRewriteFilter org.tuckey.web.filters.urlrewrite.UrlRewriteFilter 名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 30 页 -商城系统开发文档11/30 confReloadCheckInterval 60 confPath /WEB-INF/urlrewrite.xml logLevel DEBUG statusPath /status statusEnabled true statusEnabledOnHosts localhost,dev.*,* modRewriteConfText RewriteRule/(/+)/?(.*)/u/$1/$2 R RewriteRule/(uge)/(/+)$/$1/$2/R UrlRewriteFilter *.htm 名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 30 页 -商城系统开发文档12/30 urlrewrite.xml 配置文件参数Xml 代码:id参数文章管理/article_(0-9+).htm$/article.htm?param=$1 mark参数文章管理/article_(A-Za-z+).htm$/article.htm?param=$1 2.2.3 Velocity 模板引擎简介Velocity 是一个基于 java 的模板引擎(template engine),它允许任何人仅仅简单的使用模板语言(template language)来引用由 java 代码定义的对象。作为一个比较完善的模板引擎,Velocity 的功能是比较强大的,但强大的同时也增加了应用复杂性。基本语法1、#用来标识 Velocity 的脚本语句,包括#set、#if、#else、#end、#foreach、#end、#iinclude、#parse、#macro等;如:#if($info.imgs)#else 名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 30 页 -商城系统开发文档13/30#end 2、$用来标识一个对象(或理解为变量);如:$i、$msg、$TagUtil.options(.)等。3、用来明确标识 Velocity 变量;比如在页面中,页面中有一个$someonename,此时,Velocity 将把 someonename作为变量名,若我们程序是想在 someone这个变量的后面紧接着显示name字符,则上面的标签应该改成$someonename。4、!用来强制把不存在的变量显示为空白。如当页面中包含$msg,如果 msg对象有值,将显示msg 的值,如果不存在msg对象同,则在页面中将显示$msg 字符。这是我们不希望的,为了把不存在的变量或变量值为 null 的对象显示为空白,则只需要在变量名前加一个“!”号即可。如:$!msg 我们提供了五条基本的模板脚本语句,基本上就能满足所有应用模板的要求。这四条模板语句很简单,可以直接由界面设计人员来添加。在当前很多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 上面的脚本表示当对象msg对象存在时,输出 等后面的内容。C)、#foreach($info in$list)$info.someList#end循环读取集合 list 中的对象,并作相应的处理。如:EasyJF开源论坛系统中论(0.3)坛首页显示热门主题的html 界面模板脚本:#foreach($info in$hotList1)名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 30 页 -商城系统开发文档14/30$!info.title#end 上面的脚本表示循环遍历hotList1 集合中的对象,并输出对象的相关内容。D)、#macro(macroName)#end 脚本函数(宏)调用,不推荐在界面模板中大量使用。如:在使用 EasyJWeb Tools 快速生成的添删改查示例中,可以点击列表的标题栏进行升降排序显示,这是我们在EasyJWeb应用中经常看到的一个排序状态显示的模板内容。函数(宏)定义,一般放在最前面#macro(orderPic$type)#if($orderField.equals($type)#end#end具体的调用如:头衔#orderPic(title)5、包含文件#inclue(模板文件名)或#parse(模板文件名)主要用于处理具有相同内容的页面,比如每个网站的顶部或尾部内容。使用方法,可以参考EasyJF开源 Blog 及 EasyJF开源论坛中的应用!如:#parse(/blog/top.html)或#include(/blog/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)左边可以是以下的内容名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 30 页 -商城系统开发文档15/30Variable reference String literal Property reference Method reference Number literal#set($i=1)ArrayList#set($arr=yt1,t2)算术运算符2、注释:单行#XXX 多行#*xxx xxxx xxxxxxxxxxxx*#3、变量 Variables 以$开头,第一个字符必须为字母。character followed by a VTL Identifier.(a.z or A.Z).变量可以包含的字符有以下内容:alphabetic(a.z,A.Z)numeric(0.9)hyphen(-)underscore(_)4、Properties$Identifier.Identifier$user.name hashtable user 中的的 name值.类似:user.get(name)5、Methods object user.getName()=$user.getName()6、Formal Reference Notation 用 把变量名跟字符串分开如#set($user=csy$username 返回 csyname$username$!username$与$!的区别当找不到 username的时候,$username返回字符串$username,而$!username返回空字符串 名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 30 页 -商城系统开发文档16/307、双引号与 引号#set($var=helo)test$var 返回 testhello test$var 返回 test$var 可以通过设置stringliterals.interpolate=false改变默认处理方式8、条件语句#if($foo)Velocity!#end#if($foo)#elseif()#else#end 当$foo 为 null 或为 Boolean对象的 false值执行.9、逻辑运算符:=&|!10、循环语句#foreach($var in$arrays)/集合包含下面三种Vector,a Hashtable or an Array#end#foreach($product in$allProducts)$product#end#foreach($key in$allProducts.keySet()Key:$key-Value:$allProducts.get($key)#end#foreach($customer in$customerList)$velocityCount$customer.Name#end 11、velocityCount 变量在配置文件中定义#Default name of the loop counter#variable reference.directive.foreach.counter.name=velocityCount#Default starting value of the loop#counter variable reference.directive.foreach.counter.initial.value=1 12、包含文件#include(one.gif,two.txt,three.htm)名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 30 页 -商城系统开发文档17/3013、Parse导入脚本#parse(me.vm)14、#stop 停止执行并返回15、定义宏 Velocimacros,相当于函数支持包含功能#macro(d)#end 调用#d()16、带参数的宏#macro(tablerows$color$somelist)#foreach($something in$somelist)$something#end#end 17、Range Operator#foreach($foo in 1.5)2.2.4 Spring 配置简介Spring 框架是一个分层架构,由7 个定义良好的模块组成(分别为Core、AOP、ORM、DAO、Context、Web、WebMVC)。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理bean 的方式。主要解决企业应用开发的复杂性组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:核心容器:核心容器提供Spring 框架的基本功能。核心容器的主要组件是BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。Spring 上下文:Spring 上下文是一个配置文件,向Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如JNDI、EJB、电子邮件、国际化、校验和调度功能。Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了Spring 框架中。所以,可以很容易地使Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于Spring 的应用程序中的对象提供了事务管理服务。通过使用Spring AOP,不用依赖EJB 组件,就可以将声明性事务管理名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 30 页 -商城系统开发文档18/30集成到应用程序中。Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的DAO 异常层次结构。Spring ORM:Spring 框架插入了若干个ORM 框架,从而提供了ORM 的对象关系工具,其中包括JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从Spring 的通用事务和DAO 异常层次结构。Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于Web 的应用程序提供了上下文。所以,Spring 框架支持与Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。Spring MVC 框架:MVC 框架是一个全功能的构建Web 应用程序的MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括JSP、Velocity、Tiles、iText 和 POI。Spring 框架的功能可以用在任何J2EE 服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定J2EE 服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同J2EE 环境(Web 或EJB)、独立应用程序、测试环境之间重用。配置 10485760 名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 30 页 -商城系统开发文档19/30/UTF-8 UTF-8 text/html;charset=UTF-8 名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 30 页 -商城系统开发文档20/302.3 开发指南2.3.1 入口通过权限的访问者有不同的页面访问路径,如下表:用户类型访问 URL 对应 Action 匿名用户http:/host:port/shopping/index.html IndexViewAction.index 普通用户http:/host:port/shopping/user/login.htm LoginViewAction.login 卖家用户http:/host:port/shopping/user/login.htm LoginViewAction.login 管理员http:/host:port/shopping/admin/login.htm BaseManageAction.login 2.3.2 目录结构在 2.1.1章节已经对系统当中各个java组件进行详细描述,那么就不再叙述,这里只对 WebContent下的目录结构进行详解。WebContent|-META-INF|-resources-资源目录|-data-sql 文件以及相关字典文件|-editor-在线编辑器|-flash-存放系统中所用的flash 文件|-other-存放其他组件文件,如:flash 跨域策略文件|-style-存放系统中所有样式,一共三类(公共类、店铺类、管理类)|-upload-文件上传目录,存放已经上传到系统中的文件|-WEB-INF|-lib-存放系统所依赖的第三方的开源jar 包|-templates-模板,目前只定义了中文模板,可以定义更多语言类的模板|-zh_cn|-shop-商城模板|-system-系统模板|-urlrewrite.xml-URL 重写配置文件|-web.xml-总所周知的web.xml|-shopping-servlet.xml-配置 Spring AOP 进行自动代理|-index.html-系统入口文件名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共 30 页 -商城系统开发文档21/302.3.3 web.xml 解析web.xml 配置两个 serlvet、三个 listener、七个 filter。Servlet配置:shopping org.springframework.web.servlet.DispatcherServlet 1 shopping *.htm UploadServlet com.shopping.foundation.servlet.UploadServlet UploadServlet /image/upload Listener 配置:org.springframework.web.context.ContextLoaderListener 名师资料总结-精品资料欢迎下载-名师精心整理-第 21 页,共 30 页 -商城系统开发文档22/30 com.shopping.core.loader.ServletContextLoaderListener org.springframework.web.util.WebAppRootListener Filter 配置:jpaFilter org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter singleSession false entityManagerFactory entityManagerFactory jpaFilter*.htm encoding-filter org.springframework.web.filter.CharacterEncodingFilter 名师资料总结-精品资料欢迎下载-名师精心整理-第 22 页,共 30 页 -商城系统开发文档23/30 encoding UTF-8 ForceEncoding true encoding-filter*.htm springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy springSecurityFilterChain*.htm UrlRewriteFilter org.tuckey.web.filters.urlrewrite.UrlRewriteFilter UrlRewriteFilter*.htm 名师资料总结-精品资料欢迎下载-名师精心整理-第 23 页,共 30 页 -商城系统开发文档24/30 GZIPEncoder com.shopping.core.zip.CompressionFilter GZIPEncoder/shopping secondDomainFilter org.springframework.web.filter.DelegatingFilterProxy targetFilterLifecycle true secondDomainFilter*.htm 第三章开发实践3.1 商品删除3.1.1 后台代码流程操作1)开发者登陆后台管理系统:商品-商品管理,如图:3-1-1 名师资料总结-精品资料欢迎下载-名师精心整理-第 24 页,共 30 页 -商城系统开发文档25/30图 3-1-1 2)任意选着复选框,可多选可单选3)右键“删除”按钮使用Firebug 查看元素(图 3-1-2),查看以下代码(图 3-1-3)图 3-1-2 图 3-1-3 4)获 取 商 品 删 除Action地 址,如 上 图3-1-3可 以 看 出 请 求 删 除 商 品 请 求URl为:http:/localhost:8080/shopping/admin/goods_del.htm,根据所属URL 查找 java 文件,可通过搜索查找出所对应的Java文件:com/shopping/manage/admin/action/GoodsManageAction.java 5)准确获取商品删除对应代码块,需要满足2 个条件,一、明确对应的Java文件,2、明确Action 请求地址,目前这两个条件均以明确。那么在 GoodsManageAction.java 文件中可以清晰定位请求业务处理代码块如图3-1-4。名师资料总结-精品资料欢迎下载-名师精心整理-第 25 页,共 30 页 -商城系统开发文档26/30图3-1-4 3.1.2 后台代码分析/*管理员视图商品删除流程处理功能 *param request 请求过程中所携带的参数 *param mulitId 存放所需删除多个商品的ID,已字符串的方式以逗号隔开进行存放 *return *throws Exception */SecurityMapping(title=商 品 删除 ,value=/admin/goods_del.htm*,rtype=admin,rname=商 品 管 理 ,rcode=admin_goods,rgroup=商 品 ,display=false,rsequence=0)/访问请求 URL,这个地址已在绑定商品删除按钮RequestMapping(/admin/goods_del.htm)publicString goods_del(HttpServletRequest request,String mulitId)throws Exception /切割 mulitId获取商品 ID 数组 String ids=mulitId.split(,);/多个 ID 逐个执行删除名师资料总结-精品资料欢迎下载-名师精心整理-第 26 页,共 30 页 -商城系统开发文档27/30for(String id:ids)if(!id.equals()Goods goods=this.goodsService.getObjById(CommUtil.null2Long(id);/如果所要删除的商品在购物车当中那么删除购物车次条商品 Map map=new HashMap();map.put(gid,goods.getId();/根据商品 ID 查找此商品所加入的购物车 List goodCarts=this.goodsCartService .query(select obj from GoodsCart obj where obj.goods.id=:gid,map,-1,-1);/如果存在于购物车当中,那么从购物车中删除此商品记录 Long of_id;for(GoodsCart gc:goodCarts)of_id=gc.getOf().getId();this.goodsCartService.delete(

    注意事项

    本文(2022年商城系统开发文档参照 .pdf)为本站会员(C****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开