- 浏览: 186411 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
梦行Monxin商城系统:
最困难的事情就是认识自己
分享我的大型Java多用户商城系统开发的心得和困难 -
梦行Monxin商城系统:
只要坚持下去,总会有意想不到的收获。
java多用户商城系统LegendShop开发指南 -
onecan:
听从了大家的意见,LegendShop已经把Hibernate ...
分享我的大型Java多用户商城系统开发的心得和困难 -
onecan:
最新版本已经不是免费的了
Java多用户商城,给你一个创业的平台 -
www314599782:
架构很不错我要把它写到我的项目里去
分享我的大型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.*
评论
发表评论
-
dao2
2014-09-24 09:47 0dao1212 -
resume-mr wang
2014-08-05 15:59 0f aaaaaaaaaaaaaaaaaaaaaaaaaaaaa ... -
legendshop dao
2014-04-14 09:20 0legendshop dao -
ControlDataPopulate
2014-01-06 18:35 0package util; import java.io.B ... -
Excel2SqlConvertor
2014-01-06 18:34 0import java.io.File; import jav ... -
test
2013-01-07 23:26 0dfgdfg -
Java多用户商城LegendShop功能说明
2012-09-08 18:13 1786... -
用Spring Cache 实现Hibernate的二级缓存机制
2012-05-14 12:40 4443因为系统中同时采用Hibernate和Jdbc两种技术, ... -
答复: 大型Java多用户商城系统设计开发的心得和困难
2012-01-04 13:35 2176evanzzy 写道非要拿掉Hiber ... -
分享我的大型Java多用户商城系统开发的心得和困难
2012-01-03 15:37 16408看到别的朋友在ITEYE上发表的“开发电子商务网站技术选型“有 ... -
Java多用户商城,给你一个创业的平台
2011-06-05 11:08 8877现在网上开店的趋 势是越来越多了,一个好的商城系统是如虎添翼。 ... -
关于一个java网购平台的技术方案
2010-05-02 23:38 1772最近用Java做了一个网上购物平台,其技术方案终于写完了 ... -
关于产品动态属性的做法
2010-04-14 14:17 2773最近在做一个电子商务网站( http://www ... -
[Java][JavaScript]字符串数组与字符串之间的互转
2010-02-24 15:49 63321、Java 1-1、字符串数组=>字 ... -
Eclipse WTP 入门
2010-02-24 15:43 2211(转)WTP (Web Tools Platform) 是一个 ... -
JPA annotation 参考
2010-02-24 15:35 1287(转)Table Table用来定义entity主表的name ... -
JMS - javax.jms.IllegalStateException in JBOSS问题之解决
2007-07-07 17:38 4342在jms中的代码如下: java 代码 ... -
设计模式之Command
2007-06-24 12:16 1438原作:板桥里人 Command ... -
struts+spring+hibernate通用分页方法 (2)
2007-06-23 12:07 4124接上: 在struts的Action中: java 代码 ... -
扩展hibernate的主键生成策略
2007-06-23 11:35 7793Hibernate的主键生成策略有好几种:1) assigne ...
相关推荐
《在Eclipse WTP中安装Java多用户商城系统LegendShop的详细步骤》 LegendShop是一款基于Java技术构建的多用户商城系统,适用于电子商务平台的搭建。本文将详细讲解如何在Eclipse Web工具平台(Web Tools Platform...
LegendShop商城系统是一款专为中大型电商设计的Java平台解决方案。该系统由朗尊软件开发,旨在为企业提供全面且高效的电子商务建设方案。 #### 二、核心价值与目标 - **全面解决方案**:朗尊软件致力于为各行各业...
LegendShop是采用JAVA开发的高性能的多用户网购平台。跟一般网上商城的侧重点不一样,一般的网上商城侧重于产品/品牌和产品属性的支持,还有营销的支持和支付的实现,例如BBS,用户评价,营销活动等,LegendShop的...
LegendShop不是一个网店系统那么简单,而是一个多用户Java商城,多商家多语言多风格的大型商城系统。他能带给用户的不只是一个网店而已, 是一个独立配置,风格清爽,完全控制的商城,例如可以自定义产品分类,产品...
1. **Java技术栈**:LegendShop是用Java编程语言开发的,利用了Java的稳定性和跨平台特性,使得系统可以在多种操作系统上运行。它可能采用了Java Servlet和JavaServer Pages(JSP)技术来处理HTTP请求和生成动态网页...
LegendShop是基于JAVA编程语言开发的开源电子商务软件,采用Hibernate、Spring/Spring MVC等开源技术和自主框架技术开发。 1、Legend Shop采用HTML伪静态生成技术和多级缓存技术,使得系统的响应速度和负载能力得到...
LegendShop是目前最完善的Java商城之一,功能强大,支持单用户,类似京东等B2C商城模式,也支持类似淘宝等多用户C2C商城模式,采用Lucence技术支持海量数据全文搜索。 是你驰骋电子商务界的利器。由于采用了最新的...
8. **分组与团购**:`legendshop_group`模块支持商品的分组销售,便于组织团购活动,吸引更多用户参与,提升销售额。 9. **支付插件**:`legendshop_payment`目录包含了各种支付方式的插件,商家可以根据需要选择...
LegendShop V3.0是一款多用户商城系统,其架构说明书详细阐述了系统的各个方面,旨在提供一个稳定、安全、高效的电子商务平台。本架构说明书分为多个部分,涵盖了系统的核心特征、应用特性以及架构的总体描述。 1. ...
NULL 博文链接:https://onecan.iteye.com/blog/2044631
广州朗尊软件科技有限公司,是中国领先的专业 电商平台提供商,秉承着“专业塑造传奇,用心 成就电商”的理念, 专注于为用户提供一体化的 电商解决方案及服务,搭建垂直行业垂直电商一 站式营销管理工具。...
LegendShop可能是一个电子商务平台的源代码,而"code generate"可能指的是在这个项目中应用了代码生成技术,用于快速生成如后台管理系统、订单处理、商品展示等模块的代码。 在实际的开发中,代码生成可以带来以下...
"手机购物网站模板"是一个专为移动设备设计的简洁购物网站模板,旨在提供优秀的用户体验,让用户在手机上也能轻松愉快地进行在线购物。这个模板通常包含精心布局的页面元素、直观的导航、易于操作的购物车功能以及...