求ssh框架的网上商城系统,要struts2 ssh的,满意追加100分

求ssh框架的网上商城系统,要struts2的,满意追加100分_百度知道&&&&SSH网上购物系统。Struts2.3.4_Hibernate4.1.4_Spring3.1.1
&SSH网上购物系统。Struts2.3.4_Hibernate4.1.4_Spring3.1.1
使用Struts2.3.4 Hibernate4.1.4 Spring3.1.1开发的一个网上商城,仿京东界面。请使用UTF-8编码。项目太大。附件是下载地址,里面包含部署说明,绝对可以用
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
关注并绑定CSDNID,送10个下载分
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
开发技术下载排行
您当前C币:0&&&可兑换 0 下载积分
兑换下载分:&
消耗C币:0&
立即兑换&&
兑换成功你当前的下载分为 。前去下载资源
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
SSH网上购物系统。Struts2.3.4_Hibernate4.1.4_Spring3.1.1
所需积分:10
剩余积分:0
扫描微信二维码精彩活动、课程更新抢先知
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
SSH网上购物系统。Struts2.3.4_Hibernate4.1.4_Spring3.1.1
剩余次数:&&&&有效期截止到:
你还不是VIP会员VIP会员享免积分 . 专属通道极速下载
VIP下载次数已满VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员
你的VIP会员已过期VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员SSH框架网上商城项目第7战之整合Struts2和Json
作者:eson_15
字体:[ ] 类型:转载 时间:
SSH框架网上商城项目第7战之整合Struts2和Json,打通EasyUI和Struts2之间的交互,感兴趣的小伙伴们可以参考一下
上篇我们完成了DataGrid显示json数据,但是没有和后台联系在一起,只是单纯地显示了我们自己弄的json数据,这一节我们将json和Struts2整合,打通EasyUI和Struts2之间的交互。
1. json环境的搭建
json环境搭建很简单,导入json的jar包即可,如下:
(注:json-lib-2.4的jar包下载地址: )
2. 完善Action
在DataGrid控件中有个属性是url,可以指定请求数据的url地址,在上一节我们将这个地址直接设置成了一个具体的json文件,这里我们将这个url设置成一个action,如url:'category_queryJoinAccount.action',表示会去请求categoryAction的queryJoinAccount方法(文章最后会给出query.jsp的代码)。所以我们需要去完成categoryAction中的queryJoinAccount方法。
在Struts2和json整合前,我们先看一下之前显示一次json数据都发了哪些请求:
因为type是Category类的一个属性,我们在BaseAction中已经实现了ModelDriven&Category&接口,所以这个type会被封装到model中,我们不需要管它,可以通过model来获取,但是EasyUI自动发过来的page和rows参数我们需要自己获取了,所以我们可以在BaseModel中增加两个成员变量page和rows并实现get和set方法,最后还要考虑一点,这些参数都获得了后,我们根据这些参数去数据库中查询数据,那么我们查出来的数据放到哪呢?而且还要打包成json格式发到前台才能被DataGrid显示。我们先不考虑将查询到的数据如何打包成json格式,我们先考虑把这些数据放到一个地方,很自然的想到了使用Map,因为json格式的数据就是key-value形式的。想到这里,我们继续完善BaseAction:
@Controller("baseAction")
@Scope("prototype")
public class BaseAction&T& extends ActionSupport implements RequestAware,SessionAware,ApplicationAware,ModelDriven&T& {
//page和rows和分页有关,pageMap存放查询的数据,然后打包成json格式用的
//page和rows实现get和set方法,pageMap只需要实现get方法即可,因为pageMap不是接收前台参数的,是让struts获取的
protected I
protected I
protected Map&String, Object& pageMap =//让不同的Action自己去实现
//省略get和set方法……
/******************* 下面还是原来BaseAction部分 *************************/
//service对象
protected CategoryService categoryS
protected AccountService accountS
protected Map&String, Object&
protected Map&String, Object&
protected Map&String, Object&
public void setApplication(Map&String, Object& application) {
this.application =
public void setSession(Map&String, Object& session) {
this.session =
public void setRequest(Map&String, Object& request) {
this.request =
//ModelDriven
protected T
public T getModel() {
ParameterizedType type = (ParameterizedType)this.getClass().getGenericSuperclass();
Class clazz = (Class)type.getActualTypeArguments()[0];
model = (T)clazz.newInstance();
} catch (Exception e) {
throw new RuntimeException(e);
&好,完善了BaseCategory后,我们可以写categoryAction中的queryJoinAccount方法了,我们将categoryAction中原来的方法全删掉,因为那些都是之前搭建环境时候测试用的,都不用了,现在真正开始项目代码了:
@Controller("categoryAction")
@Scope("prototype")
public class CategoryAction extends BaseAction&Category& {
public String queryJoinAccount() {
//用来存储分页的数据
pageMap = new HashMap&String, Object&();
//根据关键字和分页的参数查询相应的数据。这个方法我们在Service中写过了,当时完成级联查询
List&Category& categoryList = categoryService.queryJoinAccount(model.getType(), page, rows);
pageMap.put("rows", categoryList); //存储为JSON格式,从上一节的json文件可以看出,一个key是total,一个key是rows,这里先把rows存放好
//根据关键字查询总记录数
Long total = categoryService.getCount(model.getType()); //这个方法没写,我们等会儿去Service层完善一下
System.out.println(total);
pageMap.put("total", total); //存储为JSON格式,再把total存放好
return "jsonMap";
&&&&&&& 这样Action我们就写好了,现在Action拿到前台传来的参数,然后根据参数查询了指定type的总记录数,以及指定type的所有商品,并且按照json中指定的key(即total和rows)进行存放,放在HashMap中了,之后只要将这个HashMap中的数据打包成json格式发送到前台就可以被DataGrid显示了。我们先把这个HashMap放这,先去完善了Service层的代码后,再来打包这个HashMap中的数据。
3. 完善categoryService
从上面的categoryAction中可知,需要在categoryService中增加一个getCount方法,并且要在具体实现类中实现好,实现如下:
//CategoryService接口
public interface CategoryService extends BaseService&Category& {
//查询类别信息,级联管理员
public List&Category& queryJoinAccount(String type, int page, int size); //使用类别的名称查询
//根据关键字查询总记录数
public Long getCount(String type);
//CategoryServiceImpl实现类
@SuppressWarnings("unchecked")
@Service("categoryService")
public class CategoryServiceImpl extends BaseServiceImpl&Category& implements CategoryService {
public List&Category& queryJoinAccount(String type, int page, int size) {
String hql = "from Category c left join fetch c.account where c.type like :type";
return getSession().createQuery(hql)
.setString("type", "%" + type + "%")
.setFirstResult((page-1) * size) //从第几个开始显示
.setMaxResults(size) //显示几个
public Long getCount(String type) {
String hql = "select count(c) from Category c where c.type like :type";
return (Long) getSession().createQuery(hql)
.setString("type", "%" + type + "%")
.uniqueResult(); //返回一条记录:总记录数
到现在为止,这个数据库中数据的获取这条路就打通了,前面两步完成了从前台--&数据库--&取数据,接下来就开始打包HashMap中存放的数据,然后发给前台了。
4. 配置struts.xml
在struts.xml中通过配置就可以完成对指定数据的打包,我们先看一下struts.xml中的配置:
&constant name="struts.devMode" value="true" /&
&package name="shop" extends="json-default"&&!-- jason-default继承了struts-default --&
&global-results&
&result name="aindex"&/WEB-INF/main/aindex.jsp&/result&
&/global-results&
&!-- class对应的是Spring中配置该Action的id值,因为要交给Spring管理 --&
&action name="category_*" class="categoryAction" method="{1}"&
&!-- 必须要先添加json包,然后上面继承json-default --&
&result name="jsonMap" type="json"&
&!-- 要转换成json对象的数据 --&
&param name="root"&pageMap&/param&
&!-- 配置黑名单,过滤不需要的选项 ,支持正则表达式
json格式:{total:3,rows:[{account:{id:2,login:"user",name:"客服A",pass:"user"},hot:true,id:3,…}]}
&param name="excludeProperties"&
&!-- rows[0].account.pass--&
&!-- 这里显示不了正则表达式, CSDN的一个bug,我接个图放下面 --&
&action name="account_*" class="accountAction" method="{1}"&
&result name="index"&/index.jsp&/result&
&!-- 用来完成系统 请求转发的action,所有的请求都交给execute--&
&action name="send_*_*" class="sendAction"&
&result name="send"&/WEB-INF/{1}/{2}.jsp&/result&
&/package&
从上面的配置可以看出,首先package要继承json-default,因为json-default继承了struts-default,因为在json的jar包里有个struts2-json-plugin-2.3.24.1.jar,打开即可看到里面有个struts-plugin.xml,打开即可看到json-default是继承了struts-default:
接下来我配置&result&,name是刚刚action返回的字符串,type一定要配成json。然后就是result中的参数了,首先必须要配的就是name为root的参数,这个参数要配成刚刚需要转换的HashMap对象,即我们定义的pageMap,有了这个参数的配置,struts才会将pageMap中的数据打包成json格式。然后就是配置黑名单,黑名单的意思就是告诉struts在打包的时候,哪些字段不需要打包,比如管理员密码之类的信息,由上面注释中的jason格式可以看出rows[0].account.pass表示密码字段,但是数据肯定不止一条,所以我们得用正则表达式来表示,这样所有密码都不会被打包到json中。
5. 修改query.jsp内容
到此,我们已经将数据打包成了json格式了,接下来我们完善一下前台query.jsp的内容就可以让DataGrid正确显示了:
&%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&
&!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&
&%@ include file="/public/head.jspf" %&
&script type="text/javascript"&
$(function(){
$('#dg').datagrid({
//url地址改为请求categoryAction
url:'category_queryJoinAccount.action',
loadMsg:'Loading......',
queryParams:{type:''},//type参数,这里不需要传具体的type,因为我们要显示所有的
//width:300,
fitColumns:true,
striped:true,
nowrap:true,
singleSelect:true,
pagination:true,
rowStyler: function(index,row){
("index" + index + "," + row)
if(index % 2 == 0) {
return 'background-color:#';
return 'background-color:#ff0;';
frozenColumns:[[
{field:'checkbox',checkbox:true},
{field:'id',title:'编号',width:200}
//这里的field字段要和数据库中的一样,也就是要跟json数据中的一样
columns:[[
{field:'type',title:'类别名称',width:100, //字段type
formatter: function(value,row,index){
return "&span title=" + value + "&" + value + "&/span&";
{field:'hot',title:'热卖',width:100, //字段hot
formatter: function(value,row,index){
if(value) { //如果是hot,该值为true,value是boolean型变量
return "&input type='checkbox' checked='checked' disabled='true'"; //勾选
return "&input type='checkbox' disable='true'"; //不勾选
{field:'account.login',title:'所属管理员',width:200, //account.login管理员登录名
formatter: function(value,row,index){
if(row.account != null && row.account.login != null) {
return row.account. //如果登录名不为空,显示登录名
return "此类别没有管理员";
&table id="dg"&&/table&
6.& 测试显示结果
最后我们测试一下DataGrid的显示结果,如下:
到这里,我们成功整合了Struts2和json,现在可以和前台传输json格式的数据了。
(注:到最后我会提供整个项目的源码下载!欢迎大家收藏或分享)
原文地址:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具项目基本完成了,加上这个总结,与这个项目相关的博客也写了30篇了,积少成多,写博客的过程是固化思路的一个过程,对自己很有用,同时也能帮助别人。顺便说个题外话,在学习的过程中肯定会遇到很多异常出现,我们要做的首先是定位这个异常,一般异常的后面都会跟一个或多个Caused by:xxx,这些都是引起异常的原因,一般我们找最下面的一个Caused by,那里往往才是问题的根源。如果自己解决不了,可以去谷歌、百度搜索(搜索的时候别一大堆异常往上一贴,注意搜关键的部分!),一般我们遇到的问题,99.9%前人都遇到过,基本都能解决,我遇到不能解决的问题基本都是这么干的,自己解决的多了,就有感觉了~最后希望大家在阅读我的博客时会有所收获!  &  废话就不说了,下面总结一下这个网上商城的项目,我不会面面俱到,主要分为几个模块来总结,包括 用到了哪些技术等等,具体的细节我会在文章中附上快速链接,大家可以查看具体的某篇博文。&  回忆一下这个项目,总共可以分为这些主要的模块:
项目环境的搭建
搭建后台管理系统
搭建前台显示页面
购物车相关功能
在线支付功能
邮件和短信的发送功能
域名的申请和项目的部署
表单验证和报表的显示
下面针对每个模块,做一下具体的分析。
1. 项目环境的搭建
& & &&这是每个工程都少不了的环节,而且也会出现很多乱七八糟的问题,刚开始学SSH的时候,总是苦于搭建环境,因为不太熟练,但是熟练了就好了,主要是要&有节奏的&去搭建,也就是说搭建一个环境工程得一步步来,一点点的搭,很多人上来就把jar包啪叽一下全导进去了,然后什么配置文件啊啪叽一下全写好或者从其他地方粘贴来,然后一运行,挂了&&然后各种去找问题,何苦呢?这样的话就算搭建10次也不能得心应手。饭要一口口的吃,路要一步一步的走。&  &  SSH的环境搭建,我个人遵循的流程是:
& & &&&&&&&& Spring整合Hibernate && Struts2 && Spring整合Struts2
每一步做完写个测试类测试一下,这很重要,因为一步步往下走的话,出错了也知道错在哪一步,去哪找问题,最重要的是,这种流程熟练了,下次再搭环境的时候就易如反掌了。关于SSH环境搭建的详细信息请看下面的博文:&
2. 搭建后台管理系统
 后台管理系统我用的是EasyUI搭建的,说真的,EasyUI我也是一知半解,前端的东西我了解的都不深,但是懂一点,具体用的时候也是各种去查的,也没系统的学过,所以没有一个良好的知识体系,但是也不影响去玩。程序猿都喜欢说玩一个技术啥的,听起来好像挺高大上的,慢慢的我也受到一些影响,也喜欢这么说了,不过我对于前端就真的在玩了&&  &  &EasyUI是一组基于jQuery的UI插件集合体,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面。开发者不需要编写复杂的,也不需要对css样式有深入的了解,开发者需要了解的只有一些简单的html标签。  &  EasyUI的请求都是Ajax请求,不会有新的页面出来,全都都在tab选项卡中或者弹出一个窗口之类的。后台管理系统主要分为三部分:商品的类别管理、商品的管理以及销售管理。销售管理放在最后再说。
2.1 商品类别的管理
  该部分主要涉及到了EasyUI环境和后台框架的搭建、的级联查询和分页、DataGrid数据显示、Struts2整合json以及商品类别的添加、删除、更新和搜索。这也是遵循了该部分的一个完成的顺序。  &  DataGrid以表格的形式展示数据,开发人员不需要具备特定的知识就可以操作它,它有个很好的帮助文档,比较详细,在本项目中我也介绍了创建DataGrid的几种方式,并且也简单介绍了一下DataGrid的部分属性,算是入门吧,我也是入门,多多开发才能掌握这个技术。  &  类别的添加、删除、更新和搜索功能,主要都是利用EasyUI自带的验证功能,添加商品类别的时,验证输入框的输入是否正确,是否必填等;删除时是否先选中的某一行或某几行;更新的时候每次只能更新一行等,所有这些都是Ajax请求。  &  关于这部分内容的详细信息,我已经归类了,请参考这些博文:&
&  &  &  &    &  &  &    &  下面是我自己遇到的问题:&  &  
2.2 商品的管理
  商品的管理也有添加删除等操作,跟类别管理道理上是一样的,有个地方就是商品的添加,需要上传商品的照片,这里涉及到了Struts2实现文件上传的功能,我们需要在服务器端建一个文件夹专门用来存储上传文件的,然后写一个model来接收文件,关于文件上传,要专门写一个工具类,项目中开发就是这样的,共性的代码一定要抽取,哪怕只有一句代码也要抽取!这是习惯,也是必须要做的。具体细节参下面列出的这些的博文:&  &    &    &    &    
3.搭建前台显示页面
  该部分具体的技术细节,参见下面这几篇博文:&  当然,前台的页面不是我设计的,这一块内容我总结的是跟前台显示相关的一些后台技术,比如:监听器获取首页数据、定时器同步首页数据、Hibernate二级缓存处理热门商品的缓存等。&  以前在学习serlvet的时候,首页显示数据我是这么干的,用一个frame,右边显示数据,那么index.jsp中右边的部分我跳转到一个servlet,然后servlet中去数据库中取出所有商品,放到request域中带过去新的jsp页面显示。这虽然能实现,但是很笨。在这里我用了监听器来干这件事,首先自己定义一个监听器,在项目启动的时候把数据库中所有商品信息给取出来,放到application域中,然后首页中直接用EL表达式从application域中去取即可。  &  还有个问题,当我在管理系统中添加一个新的商品时,我必须要重启一下tomcat才能将新的商品加到application域中,因为第一次取出来后就一直在application域中了,就定死了,后面新添加的就不在application域里面,为了解决这个问题,我使用了定时器来同步首页数据。于是改写了之前写好的监听器,在监听器中设置一个定时器,获取数据库中商品的数据的代码放到定时器任务中,第一次开启立马执行,然后每6个小时执行一次(时间可以自己随便设定),也就是说每6个小时重新获取一下数据库中的商品,存到application域中。一般网站也是这么干的,像CSDN的个人博客主页也是,每天更新一次排名,大概是晚上10点左右吧,具体时间我忘了。那个时候刷新就会看到数据的更新,这样也减小了服务器的压力。
  &    &   &   &  
4.购物车相关功能
  &  购物车的部分主要涉及到的技术有:后台的处理购物车和购物项的逻辑、过滤器判断登陆、订单的级联入库以及页面缓存的问题。&  购物车的话主要是后台的一些实现逻辑了,购物车里需要有购物项,啥意思呢?我们在天猫上买东西都知道,可以把不同的商品都放到购物车里,然后购物车里有很多商品,每个商品的数量又可以有多个,每个商品及其相关信息就是一个购物项,所以添加购物车的时候,我们首先要完成一个购物项,再将此购物项添加到购物车里。&  当用户想要结算的时候,我们得首先判断用户有没有登陆,这用到了过滤器技术,专门过滤某一类的url,在过滤器中判断当前session中有没有user对象,如果有说明登陆过了,直接放行就行,如果没有则跳转到登陆页面让用户登陆,登陆完成后跳转到用户原来想去的页面。也就相当于门卫一样~看大门的~&  刚刚也提到了,订单信息包含 购物车和购物项,那么我们在订单入库的时候,就要考虑到它们的级联问题,我们可以通过在两者的POJO中设置相应的注解属性即可,但是有个前提,像这种有外键关联的,在入库之前都要将对应的POJO中的外键部分的字段赋好值,比如订单要将订单项加进去,订单项中的订单属性也得赋好值,然后才可以交给Hibernate,Hibernate根据配置好的注解(或者xml文件)将它们一起级联入库。&  页面缓存的问题指的是,当用户确认了订单后,如果点后退,又会回到订单确认页面,刚刚的订单确认页面又出来了,而且session还在,信息还是刚刚的信息,这明显不是我们想要的结果。我们需要在前台和后台同时进行处理才行。&  该部分具体技术细节,请参见下面的几篇博文:
5.在线支付功能
  &  这一部分主要介绍了一些关于易宝支付接口的东西,其实在线支付功能针对不同的第三方都是不一样的,主要是要理解在线支付功能开发的一个流程,具体技术细节得依赖具体的第三方所提供的资料了。但是一般的流程都是:调用第三方的接口 && 第三方调用银行接口 && 完成支付 && 第三方回跳到我们指定的页面。&  这部分中,还涉及到了一个重要的技术,就是struts2如何处理多个model请求。一般struts2实现了ModeDriven&model&后就可以在Action中使用该model,但是现在如果有两个Model咋整呢?在struts2中还有另外一个叫parametersAware接口,只要实现了这个接口,并且定义一个存储参数的Map,就可以接收request请求中的所有参数,我们可以根据不同的参数来判断使用哪个model,这种方法可以很好的解决struts2处理多个model请求问题。&  关于该部分的技术细节,请参考下列博文:
  &  &  &  
6.邮件和短信发送功能
  &email给用户发邮件&  邮件的发送和短信的发送这一部分相对来说比较简单,都是一些固定的API,会用就行,记不住查查即可,我也记不住。邮件发送功能要导入mail.jar包,然后根据流程发送邮件即可,短信功能首先得去申请一下短信发送功能,申请好了后,第三方就会给我们提供一些API接口,我们只要参考他的就可以开发短信发送功能了,跟支付功能有点类似,都是借助于第三方平台。&  这部分也没啥技术难点,主要是流程吧,相关的博文如下:
&7.域名空间的申请和项目的部署发布  这一块主要介绍了如何申请一个免费的域名空间(免费15天而已啦~不过对于学习来说,enough~),虽然不是全部免费的,但是我们主要是要搞清楚这个流程,自己走一遍也好,并不一定要上传完整的工程,一个jsp页面或者html静态页面都行。&
  项目的部署和发布主要有两种方式:一种是使用FTP上传,不过这个比较慢,而且有可能会丢失数据,个人的经验是一点一点的发;还有一种方式就是申请域名空间那里会提供一个部署的环境,我们只要将工程导出为war包,然后把war包部署上去即可。&  在项目部署之前有很多细节需要注意,比如要修改一些路径啊,要修改一些数据啊等等,这些细节在我的博客里都有详细的说明。该部分就一篇博文,如下:
8.表单验证和报表显示
  &  后面补充了一些东西,就是Ajax动态更新购物车中商品的数量、表单的验证和报表的显示。&  Ajax动态更新购物车中商品的数量就是纯粹的Ajax技术,我学习了一下而已,表单的验证主要是登陆表单,这个项目里我没做登陆了,但是登陆表单我做了一个,验证功能也做好了,主要用到的是jQuery的Validate验证插件,这个插件还是很强大的,可以直接将登陆表单加到项目中,设置一下相应的跳转即可。  报表的显示主要用的是JsChart,这款工具很好用,可以生成响应的js代码,我们要做的就是前台发送Ajax请求给后台,根据实际需求从后台取出数据,传到前台用JsChart图表显示出来即可。&  该部分的博文,我列出来放在下面:
阅读(...) 评论()SSH网下商城 基于Struts2 Hibernate Spring J2EE框架结构的电子商务网站 - J2EE当前位置:& &&&SSH网下商城 基于Struts2 Hibernate Spring J2EE框SSH网下商城 基于Struts2 Hibernate Spring J2EE框架结构的电子商务网站&&网友分享于:&&浏览:407次SSH网上商城 基于Struts2 Hibernate Spring J2EE框架结构的电子商务网站
一个基于Struts2 Hibernate Spring框架结构的J2EE网上商城系统 (java网上商城)
后台管理员功能:包括后台商品资源管理、人员管理、订单管理、页面管理、商品评论管理,商城公告管理。人员管理中主要涉及到超级管理员对管理员的管理和对商城注册用户的管理和管理员对商城注册用户的管理,并且根据管理员的权限不同赋予不同的功能;商品资源管理中主要包括商品管理、类别管理;订单管理中主要包括对订单的处理,查看和修改。 网站前台功能:包括会员注册,登陆功能,集成支付宝快捷登陆,QQ快捷登陆实现无需注册的一键式快捷登陆功能(考虑集成新浪微博,腾讯微博、人人网等第三方登陆接口),商品全文查找功能,购物车功能,及下定单购买商品,个人中心等功能。 根据浏览记录推荐商品 显示用户浏览的商品等 根据用户当前浏览商品 推荐当前热卖同类商品等功能
全站生成HTML静态页面搜索引擎收录更容易,强大的SEO设置使您的搜索排名更靠前,并且HTML静态化生成技术和多级缓存技术,使得系统的响应速度和负载能力得到极大的提升。
采用MVC架构开发的电子商务平台,使得用户在统风格修改方面也能得心应手,技术上使用流行的SSH框架 遵循J2EE规范,方便功能扩展,
安全管理权限控制机制,多重安全拦截保护技术,有效的保障数据和系统安全
采用AJAX、Jquery等技术,在系统的易用性和实用性方面都得到了空前的突破,真正达到了只要会打字就能够建设专业水准的电子商务平台。
支持多操作系统(如: Windows、Linux、Solaris等),有利于网店系统的部署与迁移。
支持多数据库(如: MySQL、Oracle、SqlServer等主流数据库),有利于数据库类型的变更和数据的移植。
支持SEO优化,可顺利进行搜索引擎营销,以达到提升产品销量和品牌形象的目的。
商城集成腾讯财付通、快钱、支付宝(担保支付,快捷支付,网银支付)等多家网银支付产品,实现最佳无缝支付功能。
开发支付宝支付接口错误TRADE_NOT_ALLOWED_PAY
错误描述: 抱歉,您不能进行本次支付,请查看该交易是否已超时或已被关闭等。 错误代码: TRADE_NOT_ALLOWED_PAY
Java网上商城调用支付宝网银支付接口时报这个错误,经研究发现是因为发往支付宝接口的参数中订单编号已经被用了,以前的价格跟这个不一样或者是时间超出,一样的订单号对应不同的session购买行为,主要原因就是部署了多个数据库导致的,每个开发机的数据库以及生产服务器上使用了不一样的数据库,但却用了一样的支付宝用户ID和密钥,只要数据库一致就没问题了,或者测试的时候使用多个支付宝收款ID。
支付返回URL中携带bank_seq_no参数,在最新支付宝集成文档中无此参数。但在旧版本集成文档中有提到“开通纯网关或伪网关”的商户将携带该参数,升级为最新的支付宝网银接口并在网银支付中添加参数bank_seq_no
商业源码(点击和我聊天)
用这个系统做了一个java版本的电子商务的购物网站的毕业设计,就是功能太强大了点,有些功能要可以关闭了 ,不然导师也不相信啊& 哈哈 大学那会儿做毕业设计的时候就是下载的网上的源码改的 ,提供给大家下载,有说明,但是功能很差,是06年的时候的程序了 JAVA_网上商城项目视频讲解 /topics/202635/
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有}

我要回帖

更多关于 struts2 ssh 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信