淘淘商城
文章平均质量分 95
寒夕若梦
公众号:Java面试百分百,大家可以关注一下呀!
趁着年轻生猛,我要再和生活死磕几年。要么我就毁灭,要么我就铸就辉煌。如果有一天,你发现我在平庸面前低了头,那么请向我开炮。
展开
-
淘淘商城——实现图片上传功能
上文我们使用FastDFS-Client进行了简单的文件上传操作测试,淘淘商城项目中添加商品时上传图片的功能还没实现,如下图所示。本文将花大量笔墨来教大家如何实现图片上传这个功能。 我们来看下item-add.jsp页面,可以看到上传图片触发的方法是通过叫做picFileUpload的class来处理的,在<a>标签的下方是一个隐藏域,是用来接收图片上传...原创 2018-05-25 14:50:24 · 566 阅读 · 1 评论 -
淘淘商城——解决KindEditor上传图片浏览器兼容性问题
上文我们已实现了图片上传功能,但是有个问题,那就是对浏览器兼容性不够,因为Map类型的返回值在火狐浏览器无法识别,如下图所示。 注意:以上火狐浏览器中添加图片的按钮没出来,即说明火狐浏览器中还没安装Adobe Flash Player插件,如何安装请读者自行百度。 为了解决这个兼容性问题,我们需要修改下返回值类型,将Map类型变为String类型(也就是json串)...原创 2018-05-25 14:51:09 · 268 阅读 · 0 评论 -
淘淘商城——KindEditor富文本编辑器的使用
通过上文的学习,我们知道了怎样解决KindEditor富文本编辑器上传图片时的浏览器兼容性问题,至于本文,我将为大家介绍一下KindEditor富文本编辑器与淘淘商城相结合的使用方法。 我们在发表一篇博客或者微博的时候,都会用到富文本编辑器,因为它提供的功能非常丰富,不仅能写文字,还能设置字体大小、颜色,还能插入图片、音频、视频等等。现在流行的编辑器有三个,第一个是KindEditor,这是国人写...原创 2018-05-25 14:51:52 · 389 阅读 · 0 评论 -
淘淘商城——实现添加商品功能
经过上文的学习,我相信大家都知道富文本编辑器的使用方法了,我们能走到这步,实属不易,本文终于可以来实现商品添加这个功能了。 在item-add.jsp页面当中,当点击提交按钮后,会触发submitForm方法,如下图所示。 在提交表单前需要校验输入的内容是否合法,如下图所示。 下面我们看下数据库中商品表的建表信息,可以看到价格定义的字段类型是long型,单位为分,之...原创 2018-05-25 14:52:25 · 518 阅读 · 0 评论 -
淘淘商城——前台系统工程搭建
通过上文的学习,我相信大家已经实现了商品添加的功能,本文我将来教大家如何搭建前台系统工程。 我们先来看一下淘淘商城的首页,如下图所示。 我们再来看看淘淘商城的系统架构图,我们目前只是完成了后台管理系统和商品服务,还有很多都没有实现,淘淘商城首页的展示需要用到商城门户工程和内容服务工程,本文我们便来学习商城门户的搭建。 现在我们就来新建一个taotao-portal-...原创 2018-05-25 14:53:01 · 297 阅读 · 0 评论 -
淘淘商城——CMS内容管理系统工程搭建
淘淘商城系列——CMS内容管理系统工程搭建上文我们一起搭建了表现层中的商城门户系统——taotao-portal-web,本文我将教大家如何搭建CMS内容管理系统这个工程。在这之前,我们还是一起分析一下商城门户系统中的表的设计。商城门户系统中表的设计我们以京东的首页为例,如下图所示,可以看到内容显示是分组显示的,广告位轮播图是一组,轮播图下面那两张图片是一组,右边的”促销”、”公告”是一组,但是它...原创 2018-05-25 14:53:45 · 301 阅读 · 0 评论 -
淘淘商城——内容分类管理
通过上文的学习,我们已经学会搭建内容管理系统这个工程,本文我们就来学习如何进行内容分类管理。展示内容分类我们到后台管理页面看看关于内容管理的内容,如下图所示。 我们再来看下content-category.jsp页面,这个页面就是内容分类页面,页面中的<ul id="contentCategory" class="easyui-tree">是用来展示内容...原创 2018-05-25 14:54:30 · 544 阅读 · 0 评论 -
淘淘商城——内容管理
上文我们一起学习了内容分类管理,虽说实现了展示内容分类和新增节点这两个功能,但重命名节点和删除节点这两个功能还未开发,主要是时间太紧了,以后我一定会完善这些功能,读者如果有兴趣,也可以实现这些功能,希望大家都能学有所成。废话扯了一大堆,进入主题,本文我们将一起学习内容管理。内容列表查询首先,我们先来看看内容管理后台页面,如下图所示,可以看到页面分为两部分,即分为左侧...原创 2018-05-25 14:55:26 · 315 阅读 · 0 评论 -
淘淘商城——使用JsonView来格式化json字符串
有时从服务端返回的json字符串往往晦涩难懂,就像下面这样,一行显示出来,让人非常头痛。 这时我们就需要对其格式化一下了,关于格式化json字符串有两种方法。第一种:在线转换,这种方法大家用的最多,这里就不啰嗦了。第二种:本地转换。本文我们就只介绍第二张方法。因为在公司里,有可能是不让上网的,这种情况下,有个本地转换工具是必须的。我本人下载的转换工具是JsonVie...原创 2018-05-25 14:56:03 · 196 阅读 · 0 评论 -
淘淘商城——首页轮播图展示
上文我们一起学习了内容管理,由于时间太紧了,好多功能都没实现,在此对读者说声抱歉!以后我一定会完善这些功能,读者如果有兴趣,也可以实现这些功能,希望大家都能学有所成。废话扯了一大堆,进入主题,本文我们将一起学习如何展示商城首页的轮播图。 首先,看一下index.jsp页面代码,如下图所示,首页大广告是采用轮播图的方式显示的。数据需要从后台动态获取,它是从”ad1”这...原创 2018-05-25 14:56:52 · 639 阅读 · 0 评论 -
淘淘商城——单点登录之用户注册页面实现
首先,我们还是先看一下注册页面,如下图所示。 上图箭头指向的链接在register.jsp的代码当中的位置如下图所示。 由于我现在对js不是很熟悉,注册页面对输入合法性的校验就不像正规网站那种校验方式了,我只是在点击”立即注册”的时候统一做下校验,如果不合法就弹出一个alert警告框(注意:实际工作中是绝不允许用alert来提示校验信息的,js好的同学可以自己把校验这块完善一下)。点击”立即注册”...原创 2018-06-03 12:25:46 · 771 阅读 · 0 评论 -
淘淘商城——单点登录之用户登录页面实现
我们来看下login.jsp页面,如下图所示。可以看到<input .../>标签中并没有定义onclick方法,只是定义了个id="loginsubmit",那么onclick事件在哪儿定义了呢? 其实是在js代码当中定义了,如下图所示,页面加载完后就给id为loginsubmit的按钮添加了onclick事件,当点击这个按钮的时候,会触发LOGIN对象的login方法,login方...原创 2018-06-03 12:26:25 · 712 阅读 · 0 评论 -
淘淘商城——js跨域分析
通过上文的学习,我有理由相信大家都实现了用户登录,登录的时候我们把token写入到了cookie当中,登录成功后,我们查看cookie的信息,如下图所示,发现是有token信息的。 我们回到登录页面,可以看到token信息,如下图所示。可以看到与淘淘商城首页的token信息是完全一致的。 虽说域名一样(也即都叫localhost),但不同的端口就已经属于跨域了,而我...原创 2018-06-03 12:27:01 · 412 阅读 · 0 评论 -
淘淘商城——jsonp的原理及两种实现方式
首先,说下什么是跨域?有以下两种方式的跨域:域名不同域名相同,端口不同解决js的跨域问题可以使用jsonp。那接下来说下什么是jsonp? jsonp不是新技术,它只是一种跨域的解决方案,使用js的特性绕过跨域请求,利用的特性便是js可以跨域加载js文件!!举个非常常见的例子,我们在html头部一般都会引入很多js,甚至我们直接引用在线的js,比如我们引用官方网站的...原创 2018-06-03 12:27:35 · 532 阅读 · 0 评论 -
淘淘商城——购物车实现分析及工程搭建
关于购物车模块,京东和淘宝并不一样,京东允许用户在没有登录的情况下就使用购物车,而且加到购物车里面的商品可以一直保存着(其实是放到了Cookie当中,如果清空了Cookie也就清空购物车了)。而淘宝则是必须先登录才能将商品添加到购物车当中,就用户体验来说,京东的购物车模块用户体验更好。 我们看下京东购物车,如下图所示,可以看到域名是cart.jd.com,这与商品详...原创 2018-06-03 12:28:06 · 387 阅读 · 0 评论 -
淘淘商城——商品详情页面对加入购物车进行改造
在上文中,我就讲过,关于购物车模块,京东和淘宝并不一样,京东允许用户在没有登录的情况下就添加商品进购物车,而且加到购物车里面的商品可以一直保存着。这其实是把购物车信息写入到了Cookie中,如果清空了Cookie也就清空购物车了。把购物车信息写入到了Cookie中也有其优缺点,优点有:不占用服务端存储空间。用户体验好。代码实现简单。缺点是:Cookie中保存的容量是...原创 2018-06-03 12:28:46 · 812 阅读 · 0 评论 -
淘淘商城——添加购物车
上文我们一起改造了下商品详情页面关于购物车那块的部分,本文我们将一起实现添加购物车这个功能。 我们以京东为例,比如我们选了一款手机,然后点击”加入购物车”,注意,此时我们并没有登录。 我们会看到如下图所示界面,可以看到,我们并没有直接进入购物车列表,而是到了一个中间页面,只是提醒我们成功加入了购物车。如果想进购物车列表的话,就点击那个”去购物车结算”按钮。 我们模仿...原创 2018-06-03 12:29:23 · 808 阅读 · 1 评论 -
淘淘商城——展示购物车商品列表
通过上文的学习,想必大家都已经实现了添加购物车的功能,本文我们将一起实现展示购物车商品列表的功能。 我们访问淘淘商城首页(前提是启动了所有的服务及工程,虽然有个别工程用不上,不过也没关系),点击“去购物车结算”。 理应跳转到购物车商品列表页面,展示昨天我们添加的商品,但是可以看到会报404的错误,如下图所示,可知我们请求的地址并不正确,因此我们需要对淘淘商城首页中的“去购物车结算”超链接的href...原创 2018-06-03 12:29:57 · 715 阅读 · 0 评论 -
淘淘商城——修改购物车商品数量
上文我们实现了展示购物车商品列表的功能,本文我们将继续完善购物车,实现购物车商品数量的修改功能。 当前购物车列表,如果我们修改商品数量,总价格不变,而且页面刷新后还会回到原来的数字。 我们首先看看上节课我们展示的购物车列表,如下图所示,当前商品数量是5,总价格是14995元。 下面我们点击那个”+”让商品数量加1,发现商品数量变成6了,但是商品总价格依然是14995...原创 2018-06-03 12:30:33 · 941 阅读 · 0 评论 -
淘淘商城——删除购物车商品及购物车总结
删除购物车商品通过上文的学习,想必大家都已实现修改购物车商品数量的这个功能,本文我将带领大家一起实现删除购物车商品的功能。 我们在购物车列表页面点击”删除”链接,如下图所示。 我们会看到如下图所示界面,可以看到请求的url是/cart/delete/{itemId}.html,与购物车列表页面的url地址/cart/cart.html不一致,但是我们点击”删除”链接后页面应该仍然留在当前页面,我们...原创 2018-06-03 12:31:12 · 989 阅读 · 1 评论 -
淘淘商城——Redis的安装
通过上文的学习,我相信大家已经将首页的轮播图展示出来了,接下来我们将进入一个新的领域的学习,希望大家能振作精神,保持乐观向上的心态。本文我会教大家如何在Linux系统上安装Redis。 一般来说,如果我们是做一个互联网项目,通常都要在工程中添加缓存,之所以这样做,是因为在互联网项目中查询功能是非常频繁的,如果每次查询都调用数据库的话,会给数据库造成很大的压力,因此需要在用户和数据库之间加一层缓存,...原创 2018-05-27 18:42:27 · 272 阅读 · 0 评论 -
淘淘商城——redis-desktop-manager的使用
实际工作环境中,redis会安装在服务器上,我们想使用redis服务就要使用redis终端。redis-desktop-manager便是来连接redis服务并可供我们学习使用的。 首先,我们要下载redis-desktop-manager的安装程序,我下载的是下面这个安装程序。 然后,我们双击该安装程序进行安装,是个人都会装,故过程省略。 安装完之后,可以看到如下图所示的界面。我们可以点击”C...原创 2018-05-27 18:43:13 · 231 阅读 · 0 评论 -
淘淘商城——Redis五种数据类型介绍
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。下面我分别介绍之。String(字符串)字符串是Redis中最基本的数据类型,它能够存储任何类型的字符串,包含二进制数据。可以用于存储邮箱,JSON化的对象,甚至是一张图片,一个字符串允许存储的最大容量为512MB。字符串是其他四种类型的基础,与其他几...原创 2018-05-27 18:44:03 · 271 阅读 · 0 评论 -
淘淘商城——Redis持久化方案
Redis中设置key的过期时间Redis中的expire命令用于设置key的过期时间,以毫秒计。key过期后将不再可用。Redis中的expire命令基本语法如下:expire key second1设置成功返回1。当key不存在或者不能为key设置过期时间时返回0。 设置key的过期时间成功后,我们还可使用ttl key命令查看key的有效期,如若返回正数,则说明正在倒计时;返回-1,则说明这...原创 2018-05-27 18:44:46 · 433 阅读 · 0 评论 -
淘淘商城——Redis集群的搭建
本文我将带领大家如何搭建Redis集群。首先说一下,为何要搭建Redis集群。Redis是在内存中保存数据的,而我们的电脑一般内存都不大,这也就意味着Redis不适合存储大数据,适合存储大数据的是Hadoop生态系统的Hbase或者是MogoDB。Redis更适合处理高并发,一台设备的存储能力是很有限的,但是多台设备协同合作,就可以让内存增大很多倍,这就需要用到集群。redis-cluster架构...原创 2018-05-27 18:45:22 · 301 阅读 · 0 评论 -
淘淘商城——使用Jedis操作集群
通过上文的学习,我相信大家应该已经知道如何搭建Redis集群了,本文我将为大家介绍如何测试集群。 首先使用如下命令来启动Redis集群。./redis-trib.rb create --replicas 1 192.168.25.128:7001 192.168.25.128:7002 192.168.25.128:7003 192.168.25.128:7004 192.168.25.128:7...原创 2018-05-27 18:46:08 · 263 阅读 · 0 评论 -
淘淘商城——使用Spring来管理Redis单机版和集群版
我们知道Jedis在处理Redis的单机版和集群版时是完全不同的,有可能在开发的时候使用的是单机版,但是当项目上线后使用的则是集群版,这就需要能够方便的在单机版和集群版之间进行切换。我们的做法便是定义一个JedisClient接口,然后新建两个实现类来分别处理单机版和集群版,最后在spring容器中进行配置管理即可。 首先在taotao-content-service工程下新建一个包com.tao...原创 2018-05-27 18:46:52 · 192 阅读 · 0 评论 -
淘淘商城——在业务逻辑中添加缓存
上文我们一起学习了如何使用Spring容器来管理Redis单机版和集群版实现,本文我们将一起学习如何在业务逻辑中添加缓存。 我们首先应该明了一个道理,在业务逻辑中添加缓存的一个指导思想就是添加缓存不能影响正常业务逻辑。那么应该怎么添加缓存呢?我们可看看首页大广告的展示流程,如下图所示。 从上面的流程图可知,我们应在调用服务层的服务查询首页内容时添加缓存,其实在首页中我们只实现了首页大广告的展示,说...原创 2018-05-27 18:47:29 · 268 阅读 · 0 评论 -
淘淘商城——Solr的安装
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。 Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、...原创 2018-05-27 18:48:04 · 291 阅读 · 0 评论 -
淘淘商城——中文分析器IK-Analyzer的使用
在Solr中默认是没有中文分析器的,需要手工配置,配置一个FieldType,在FieldType中指定使用的中文分析器。另外,Solr中的字段(即业务域)必须先定义后使用。下面我们先把中文分析器配好,这儿使用的中文分析器是IK Analyzer。 我们首先应下载IK Analyzer中文分析器,下面是我所下载的IK Analyzer。 接着要将IK Analyzer 2012FF_hf1目录上传...原创 2018-05-27 18:48:37 · 278 阅读 · 0 评论 -
淘淘商城——订单系统服务端和客户端工程搭建
首先我们还是先看一眼淘淘商城的系统架构,如下图所示,可以看到订单模块是单独的模块,有服务端还有客户端,服务端负责存储订单,客户端负责展示订单。 下面我们便开始搭建工程,首先来搭建订单服务工程——taotao-order。搭建taotao-order工程我们可参考taotao-sso工程的创建来搭建订单服务工程,它是后台的服务层工程。这个工程是个pom(聚合)工程,包...原创 2018-06-04 10:40:17 · 526 阅读 · 0 评论 -
淘淘商城——利用拦截器实现登录功能及订单确认页面展示
我们上文一起搭建了订单的服务工程和web工程。我们参考京东可以知道,京东在没有登录时就可以使用购物车,但是当要真正付款的时候,一定是要求登录的,也就是说由购物车列表页面直接跳转到登录页面去登录。这显然用到了拦截器的功能,本文我们便一起实现登录功能。 下图便是购物车列表页面,我们点击”去结算”,如果当前用户还没登录,是必须要先登录的。也就是说在展示订单确认页面之前,需...原创 2018-06-04 10:40:58 · 757 阅读 · 0 评论 -
淘淘商城——生成订单
本文我们将一起学习下如何生成订单。数据库表分析我们先来看下tb_order表,如下图所示。 可以看到:主键order_id是字符串类型,不是自增长的,因此我们需要自己生成订单编号,我们平时使用京东、天猫等购物网站,发现人家的订单号都是用数字组成的,我们也使用数字作为订单号,但是怎样才能使订单号不重复呢?用时间加随机数的方案生成的订单其实还是可能会重复的,当同一时刻生...原创 2018-06-04 10:41:54 · 2433 阅读 · 1 评论 -
淘淘商城——搜索系统搭建
上文我们一起搭建了搜索服务工程,本文我将带领大家一起搭建搜索系统这个表现层工程。 现在我们就来新建一个taotao-search-web工程,该工程可参考taotao-portal-web工程来搭建哟! 首先点击【File】菜单选项,并在下拉框中选中【New】,接着点击【Other】,如下: 在输入框中输入maven,并选择Maven Project,如下: ...原创 2018-05-28 11:32:55 · 298 阅读 · 0 评论 -
淘淘商城——导入商品数据到索引库——dao层
我们先来看看我们要导入数据的sql语句并且查看查询结果。 从上图可知我们需要从tb_item、tb_item_cat,、tb_item_desc三张表中查询数据。针对来自三张表的数据,我们最好使用一个pojo来接收这些数据,而且这个pojo还会作为查询结果的载体。因为服务层和表现层都会用到这个pojo,我们最好把它放到taotao-common工程的com.taot...原创 2018-05-28 11:33:36 · 329 阅读 · 0 评论 -
淘淘商城——使用solrj来测试索引库
我们使用solrj来操作索引库,一般习惯先建一个单元测试类测试下增删改查方法是否好使,这样可以大大减少出错概率,提升开发效率。 我们的taotao-search-service工程还没有添加对solrj的依赖,因此需要先添加对solrj的依赖,在taotao-search-service工程的pom.xml文件当中添加如下依赖(之所以不用写版本号是因为在taotao...原创 2018-05-28 11:34:11 · 210 阅读 · 0 评论 -
淘淘商城——导入商品数据到索引库——Service层
通过上文的学习,我相信大家已经学会了如何使用Solrj来操作索引库。本文我们将把商品数据导入到索引库中的Service层代码编写完毕! 首先在taotao-search-interface工程中新建一个接口,如下图所示。 可以看到importAllItemToIndex方法的返回值类型是TaotaoResult,当你纠结返回值是什么的时候,你就可以使用TaotaoR...原创 2018-05-28 11:34:51 · 492 阅读 · 0 评论 -
淘淘商城——导入商品数据到索引库
上文我们把商品数据导入到索引库中的Service层代码编写完了,本文我们将再来把商品数据导入到索引库中的表现层代码编写完,从而实现从数据库中导入商品数据到索引库的功能。 我们是要在表现层中调用搜索服务的导入数据功能的,但应在哪个表现层调用呢?很显然应该在后台管理系统——taotao-manager-web工程中调用搜索服务的导入数据功能。既然服务已经发布过了,那么我...原创 2018-05-28 11:35:52 · 339 阅读 · 0 评论 -
淘淘商城——首页跳转到搜索页面
通过上文的学习,我们已经学会如何把商品数据导入到索引库中了,本文我会教大家如何从淘淘商城首页跳转到搜索页面。 我们要访问taotao-portal-web工程就要先启动Redis服务,大家根据自己使用的情况启动,使用的是单机版就启动单机版服务器,使用的是集群就启动集群版服务器。 启动好taotao-portal-web工程之后,我们访问淘淘商城首页,如下图所示。 该首页对应的后台代码如下图所示,在...原创 2018-05-28 11:36:40 · 731 阅读 · 0 评论 -
淘淘商城——使用SolrJ查询索引库
我们有必要在工程中写查询索引库的代码前先进行必要的测试。我们先到Solr服务页面去简单进行查询,如下图所示,在搜索条件”q”这一栏,我们输入”手机”,分页参数的每页显示条数我们随便写一个数,这里我写的是3,也就是一次只查询三条数据。由于在查询条件一栏没有指定搜索域,因此默认搜索域一定要指定,否则无法查询出数据,我们在Solr服务器的schema.xml文件当中配置了...原创 2018-05-28 11:37:41 · 218 阅读 · 0 评论