`

java多用户商城系统LegendShop开发指南

    博客分类:
  • Java
阅读更多

  LegendShop是基于JAVA编程语言开发的开源电子商务软件,采用Hibernate、Spring/Spring MVC等开源技术和自主框架技术开发。
  1、LegendShop采用HTML伪静态生成技术和多级缓存技术,使得系统的响应速度和负载能力得到极大的提升。
  2、LegendShop是采用MVC架构开发的电子商务平台,使得用户在系统风格修改方面也能得心应手。
  3、采用AJAX、Jquery等技术,在系统的易用性和实用性方面都得到了空前的突破,真正达到了只要会打字就能够建设专业水准的电子商务平台。
  4、支持多操作系统(如: Windows、Linux、Solaris等),有利于网店系统的部署与迁移。
  5、支持SEO优化,帮助您顺利进行搜索引擎营销,以达到提升产品销量和品牌形象的目的。
  6、LegendShop通过与支付宝等多家网银支付公司合作为用户实现最佳无接缝支付功能。
      7、支持产品的动态属性动态参数,适合各种商品销售。
      8、支持动态属性,能在运行是改变商城的运行模式。
      9、支持国际化功能,支持多国语言,适合做外贸性生意。
     10、支持全文搜索,用户可以查询所有的商城的商品信息。
     11、支持多个地域协同销售,是个类似淘宝商城的微型商城系统。


二. 应用特征
2.1    多用户支持
  一般的网上商城只是支持单个卖家发布产品,只是少数大型的B2C/C2C的大型网站例如淘宝/易趣等等才会支持多个卖家同时发布产品,但淘宝上已经有几十 上百万的卖家在上面做生意,如果在这些卖家中突围而出?如何跟其他商家进行差异化服务?是摆在淘宝等商家面前的一个难题。LegendShop也是支持多个卖家同时发布产品的网购平台,也可以理解为一个小型的“淘宝”的雏形,适用于那些想要打自己品牌的商家或者连锁店,或者用来跟淘宝等 进行配合销售。

 

2.2    良好的系统扩展性
   LegendShop支持多种多种产品销售,每种产品都有固有属性和动态属性二种。而LegendShop采用JCF的代码生成工具进行后台的业务开发,对新需求的反应速度非常的快。

 

2.3    多国语言支持
  整个系统基于UTF8编码,目前LegendShop前端已经实现对中文和英文的支持。如果有扩展需要,只要增加对应的语言包即可实现该语言的支持。适合外贸等将生意做到国外去的行业。

2.4    多模板支持
  由于LegendShop的用户是面向不同的行业,因此对风格上会提出不同的要求。系统采用css和js来控制这个LegendShop前端的页面展示,用户可以在店铺管理中定制某种风格或者轮流使用所有的风格,以给客户带来新鲜感。

 

三.系统构架


 

  运行环境:(操作系统:Windows/Linux/FreeBSD、WEB服务器:Tomcat 6.0以上、JDK 1.6以上 、数据库:MySQL 5.1/Oracle/SQL Server)
  系统类型:B/S系统
  操作系统:支持Linux、Unix、FreeBSD、Windows 2000/2003/XP等操作系统
  数 据 库:支持MySQL、Oracle、SqlServer、Access等常见数据库
  系统架构:MVC构架
  主体框架:Spring、Spring MVC、Hibernate
  安全框架:Spring Security
  缓存框架:Ehcache
  模板框架:Freemarker
  全文检索:lucene
  中文分词:IKAnalyzer
  页面框架:Jquery

四 LegendShop工程的包结构分析

LegendShop的包结构的详细分析如下:
1 Resource
  放置配置文件的地方

2 Config
    放置系统配置文件的地方
2.1.1 common.properties 图片保存路径
2.1.2 global.properties  项目版本
2.1.3 jdbc.properties   数据库连接

3 i18n 国际化语言包


4 spring

4.1 legendshop
4.1.1 plugins 插件,系统在启动时会启动系统已有的插件
4.1.1.1 core
4.1.1.1.1 applicationContext-core-service.xml 核心的服务配置
4.1.1.1.2 captcha-context.xml 验证码服务配置
4.1.1.2 group 团购
4.1.1.2.1 applicationContext-group-service.xml 团购相关的服务
4.1.1.3 security 系统安全框架,采用命令模式实现,流程为Delegate->Processor->Command->Dao
业务代理->处理者->命令处理器->Dao
4.1.1.3.1 applicationContext-command.xml  命令处理器配置
4.1.1.3.2 applicationContext-dao.xml Security Dao配置
4.1.1.3.3 applicationContext-processor.xml Security Processor配置
4.1.1.3.4 applicationContext-service.xml业务代理配置
4.1.1.4 applicationContext-business-plugins.xml 主业务系统插件配置
4.1.1.5 applicationContext-core-plugins.xml 核心插件配置

4.1.1.6 applicationContext-group-plugins.xml  团购插件配置
4.1.1.7 applicationContext-security-plugins.xml 安全框架插件配置
4.1.2 applicationContext-aop.xml  系统面向切面的配置
4.1.3 applicationContext-cache.xml 缓存配置,采用spring3.1 cache + Ehcache
4.1.4 applicationContext-db.xml 数据库相关配置
4.1.5 applicationContext-dwr.xml DWR相关配置,DWR是一个Ajax框架
4.1.6 applicationContext-event.xml 事件配置
4.1.7 applicationContext-quartz.xml     系统定时器配置
4.1.8 applicationContext-search.xml     高级搜索配置,采用Lucence
4.1.9 applicationContext-security.xml    Security安全配置
4.1.10 applicationContext-service.xml 服务配置
4.1.11 applicationContext-util.xml      工具类配置
4.2 applicationContext.xml               Spring配置文件入口
4.3 applicationContext-mvc.xml    Spring MVC配置文件

5 sql

5.1 bizSQL.dal.xml  业务系统动态SQL配置文件
5.2 productSQL.dal.xml   团购系统动态SQL配置文件

6 META-INF

6.1 legendshop-biz-tags.tld   业务相关自定义标签
6.2 legendshop-tags.tld       系统相关自定义标签
6.3 DAL.cfg.xml            系统SQL配置
6.4 displaytag_zh_CN.properties  displaytag中文语言资源
6.5 displaytag.properties        displaytag英文语言资源
6.6 ehcache.xml               缓存配置
6.7 ext_stopword.dic            Lucence分词配置文件
6.8 fckeditor.properties           FckEditor富文本编辑器属性配置
6.9 freemarker.properties        Freemarker配置文件
6.10 IKAnalyzer.cfg.xml          IKAnalyzer配置文件,高级搜索用   
6.11 QQWry.dat               IP地址数据库

7 Java

7.1 com.legendshop.business    主业务系统模块
7.2 com.legendshop.command.framework   Java Command FrameWork(JCF)框架
7.3 com.legendshop.core    核心业务模块
7.4 com.legendshop.event    事件机制模块
7.5 com.legendshop.group     团购模块
7.6 com.legendshop.model     实体对象
7.7 com.legendshop.permission  权限管理模块,采用JCF框架实现
7.8 com.legendshop.search      高级搜索模块,采用Lucence实现
7.9 com.legendshop.spi   Service Provider Interface 公用服务提供接口模块
7.10 com.legendshop.util     工具类模块
 



五.业务流程分析
LegendShop采用Spring MVC + Hibernate进行业务逻辑开发,为了支持多模板,采用Spring MVC返回字符串方式和Apache Tiles的动态匹配方式来路由到不同的页面,用户可于商城级别选择模板。




 
Spring MVC框架结构

package com.legendshop.business.controller;
/**
* 购物车控制器。.
*/
@Controller   ①ß 将UserController变成一个Handler
@RequestMapping("/basket")    ②ß指定控制器映射的URL
public class BasketController extends BaseController {
/** The basket service. */
@Autowired
private BasketService basketService;

@RequestMapping("/query") ③ß处理方法对应的URL,相对于②处的URL                                                    
public String query(HttpServletRequest request, HttpServletResponse response) {
String prodId = request.getParameter("prodId");
return getBasket(request, response, Long.parseLong(prodId));
}
.....
return PathResolver.getPath(request, TilesPage.PAGE_CASH);
}

以上地址即为http://localhost/basket/query.htm, 可以根据URL规则在controller中搜索“/basket”找到逻辑入口点。
系统启动自动扫描com.**.controller"所有的包,并加入spring的applicationcontext。配置如下:
<!-- 自动搜索@Controller标注的类 -->
<context:component-scan base-package="com.**.controller" />

LegendShop支持2种视图:
<bean id="viewResolver1"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/pages" />
<property name="suffix" value=".jsp"></property>
<property name="order" value="2"></property>
</bean>

<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass">
<value>org.springframework.web.servlet.view.tiles2.TilesView</value>
</property>
<property name="order" value="1"></property>
</bean>
 



对于spring返回的字符串,Spring会优先采用TilesView进行匹配,如果匹配不到就找JstlView进行匹配,如果找不到页面则会抛出page not found的错误。

目前LegendShop的页面类型分为5类,可在PageDefinition中找到其对应的定义。

 

/** 前端页面. */
public final int FRONT_PAGE = 1;
/** 后端页面. */
public final int BACK_PAGE = 2;
/** Apache TILES 定义. */
public final int TILES = 3;
/** The FORWARD Action. */
public final int FOWARD = 4;
/** The REDIRECT Action. */
public final int REDIRECT = 5;
 


1) 对于前端页面的计算公式是:"/frontend" + 模板名称, 如果商城没有指定模板则采用默认值。
例如,return PathResolver.getPath(request, FrontPage.ALL);
返回的字符串为 “/frontend/default/all”,根据JstlView的配置,可以得出该前端页面的位置为:
/pages/frontend/default/all.jsp

2) 对于后段页面的计算公式是:"/backend" + 模板名称, 如果商城没有指定模板则采用默认值。
例如, return PathResolver.getPath(request, BackPage.SHOP_DETAIL_EDIT_PAGE);
返回的字符串为“/backend /default/shopDetail/shopDetail,可以得出该后端页面的位置为:
/pages/backend/default/shopDetail/shopDetail.jsp


3) 对于动作类页面的计算公式是:pathValue + template
例如, return PathResolver.getPath(request, TilesPage.PAGE_CASH);
返回的字符串“cash.default”,cash.是Tiles的页面名称,default是模板名称。可到Tiles的定义文件“tiles-definitions.xml”中查看对应的页面位置。

<definition name="cash.*"   template="/pages/frontend/{1}/topFrame.jsp">
<put-attribute name="main" value="/pages/frontend/{1}/cash.jsp" />
</definition>
“cash.*”中的星号将会用“default”值代替,那{1}的值变为“default”,最终的结果为:
template="/pages/frontend/default/topFrame.jsp"
value="/pages/frontend/default/cash.jsp"
 




4) 对于动作类页面的计算公式是actionType + pathValue + WEB_SUFFIX(.htm)
actionType可以是“direct:”和“forward:”。
例如,return PathResolver.getPath(request, FowardPage.INDEX_QUERY);
返回的字符串为“forward:/index”,可以得知该动作会forward到一个叫”/index”的动作,可以在controller中搜索该动作的入口点。


六. LegendShop页面定义

afterOperation.jsp 操作成功后跳转的页面
afterUserUpdate.jsp 更新成功后跳转的页面
all.jsp 高级搜索首页
allnews.jsp 所有新闻列表
basket.jsp 购物车页面
bought.jsp 已经购买的产品列表
buy.jsp 购物车相关页面
cash.jsp 收银台
cashsave.jsp 收银台相关页面
copy.jsp 下方版权信息
copyAll.jsp 搜索页面的下方版权信息,内容要比copy.jsp少一些
error.html 显示错误信息页面
friendlink.jsp 友情链接
gallery.jsp 图片库
header.jsp 最上方的包括首页,论坛等链接信息
hoton.jsp 热门产品列表
hotsale.jsp 热销产品列表
hotview.jsp 热门产品列表
index.jsp B2C商城首页
league.jsp 商家联盟
leaveword.jsp 用户留言
login.jsp 用户登录
loginHint.jsp 用户登录提示
myaccount.jsp 我的帐号
newestProduct.jsp 最新产品
newproducts.jsp 新产品
news.jsp 新闻页面
notice.jsp 公告页面
openShop.jsp 是否开店页面
order.jsp 订单
prodpics.jsp 产品图片
productDetail.jsp 产品详细信息
recommend.jsp 产品推荐
reg.jsp 用户注册
resetpassword.jsp 重置密码
right.jsp 产品详细页面
saveto.jsp 保存订单页面
searchall.jsp 高级搜索首页
searchTopFrame.jsp 高级搜索的顶部文件,内容较top.jsp少
shopContact.jsp 店铺详细信息
smallsort.jsp 二级分类,三级分类产品列表
sort.jsp 一级分类产品列表,Tiles框架页面
sub.jsp 订单订购页面
top.jsp 系统顶部页面
topAll.jsp 高级搜索的顶部页面,top.jsp化简版
topFrame.jsp Tiles框架页面
topnews.jsp 首页新闻列表
topsort.jsp 首页产品分类列表
topsortnews.jsp 首页新闻列表
updateMyAccount.jsp 更新我的帐号
views.jsp 产品详细页面,包括其他页面
visitedHistory.jsp 查看历史
 




七.LegendShop的标签
用法可以参考tags.jsp.
Tags 名称 用法 示例
国际化

com.legendshop.core.tag.I18nTag(i18n) 支持无参数和有参数两种,根据Locale从对应的文件拿到记录
支持参数嵌套,例如message:user.name 

1. 无参数
<ls:i18n key="user.name"/>

2. 有参数,动态参数名,start with message: will replace with locale message
<ls:i18n key="errors.minlength" name="message:user.name" length="8"/>

 

地址化简器

com.legendshop.core.tag.URLTag(url) 主动加上前后缀:ContextPath + address + WEB_SUFFIX <a href="<ls:url address='/index'/>" target="blank">首页</a>
 


资源定位器

com.legendshop.core.tag.TemplateResourceTag(templateResource) 资源定位器,主要针对css js 图片等资源 <img src="<ls:templateResource item='/img/addtocart.jpg'/>" />
 

 

系统配置读取

com.legendshop.core.tag.SettingsTag(settings) 用于显示系统参数配置 <ls:settings key="USE_SCORE" >USE_SCORE is true</ls:settings>
 


权限管理

com.legendshop.core.tag.AuthorizeActionTag(auth) 权限管理 <ls:auth ifAnyGranted="F_VIEW_ALL_DATA">have access right F_VIEW_ALL_DATA</ls:auth>
 


选择框

com.legendshop.core.tag.OptionGroupTag(optionGroup) 选择框 <select id="status" name="status">
<ls:optionGroup type="select" required="true" cache="true"
                beanName="SHOP_STATUS" selectedValue="${bean.status}"/>
         </select>
com.legendshop.business.tag.SortTag(sort) 获取产品分类 <lb:sort var="sort" loadAll="true" sortType="P">
com.legendshop.business.tag.ShopDetailTag(ShopDetailTag) 获取商城详细信息并放入http request中 <lb:shopDetail var="shopDetail" />
com.legendshop.core.tag.CurrentShopTag 获取当前商城名称 <lb:currentShop />
com.legendshop.core.tag.CurrentUserTag 获取当前用户名称 <lb:currentUser />
 



用法:
在JSP页面中导入:

<%@ taglib uri="http://www.legendesign.net/tags" prefix="ls"%>
<%@ taglib uri="http://www.legendesign.net/biz" prefix="lb"%>
具体定义可以参考legendshop-tags.tld和legendshop-biz-tags.tld,
 


处理类位于com.legendshop.core.tag.*

 

  • 大小: 185.7 KB
  • 大小: 108.6 KB
分享到:
评论
10 楼 梦行Monxin商城系统 2016-10-12  
   只要坚持下去,总会有意想不到的收获。
9 楼 threejin 2015-04-26  
代码卖吗?如果有意向,电话:18701421143
8 楼 LinApex 2014-09-19  
能不能说说,插件化是如何实现的。
7 楼 onecan 2014-02-14  
抱歉,因为代码是公司的,所以不能私自外漏。这里主要是做技术探讨和思想交流,系统设计也得到了不少大牛的意见反馈,目前已经可以做到插件化,事件驱动,多模板支持等一些关键的技术要点,但是光有技术没啥用,最后还是得要把业务补上,界面做好。
6 楼 qw1w1w 2014-02-13  
给我发站内信
5 楼 qw1w1w 2014-02-13  
楼主卖legendshop源码吗?我愿意用人民币买。如果有卖的给我信息。
4 楼 zcom2012 2013-11-07  
zcom2012@163.com
3 楼 zcom2012 2013-11-07  
哥们,能发一份源码给我吗?code google上不能checkout了,万分感谢啊
2 楼 a3217130 2013-07-11  
多谢。。。。。
1 楼 zouxinde 2013-03-01  
哥们的代码哪来的

相关推荐

    一步步在Eclipse WTP中安装Java多用户商城系统LegendShop

    NULL 博文链接:https://legendshop.iteye.com/blog/1454929

    LegendShop 技术介绍

    LegendShop商城系统中大型Java电商平台解决方案

    LegendShop2.2 免费的Java商城

    LegendShop是采用JAVA开发的高性能的多用户网购平台。跟一般网上商城的侧重点不一样,一般的网上商城侧重于产品/品牌和产品属性的支持,还有营销的支持和支付的实现,例如BBS,用户评价,营销活动等,LegendShop的...

    legendshop2.1源码

    LegendShop不是一个网店系统那么简单,而是一个多用户Java商城,多商家多语言多风格的大型商城系统。他能带给用户的不只是一个网店而已, 是一个独立配置,风格清爽,完全控制的商城,例如可以自定义产品分类,产品...

    LegendShop3.0.3.6黄金版源代码

    LegendShop是基于JAVA编程语言开发的开源电子商务软件,采用Hibernate、Spring/Spring MVC等开源技术和自主框架技术开发。 1、Legend Shop采用HTML伪静态生成技术和多级缓存技术,使得系统的响应速度和负载能力得到...

    LegendShop3.06黄金完整版文件名为legendshop_core3.0.3.jar

    LegendShop是目前最完善的Java商城之一,功能强大,支持单用户,类似京东等B2C商城模式,也支持类似淘宝等多用户C2C商城模式,采用Lucence技术支持海量数据全文搜索。 是你驰骋电子商务界的利器。由于采用了最新的...

    java开源B2C LegendShop_UTF8_B2C_3.0.3.2 war包

    java开源B2C LegendShop_UTF8_B2C_3.0.3.2 war包

    legendshop3.0.3部署文档.doc

    欢迎使用LegendShop,LegenShop是采用Java/Jsp开发的多用户多商家网上商城系统。 所采用的技术: Spring MVC 3.1 + Spring 3.1 + Hibernate 3.6 JDK版本: 1.6 数据库:MYSQL 5.1 以上 Web服务器:Tomcat6

    LegendShop3.06完整版

    LegendShop 电子商务 B2B B2C ,包含了com.legendshop.core,文件名为legendshop_core3.0.3.jar

    legendshop dao

    NULL 博文链接:https://onecan.iteye.com/blog/2044631

    wx-mall-master.zip

    广州朗尊软件科技有限公司,是中国领先的专业 电商平台提供商,秉承着“专业塑造传奇,用心 成就电商”的理念, 专注于为用户提供一体化的 电商解决方案及服务,搭建垂直行业垂直电商一 站式营销管理工具。...

Global site tag (gtag.js) - Google Analytics