Migo商城2.0 门户首页左侧商品类目显示 十四
新建后台提供系统服务,这里就不再新建专门提供服务的项目了(也是因为访问的网址里有rest这个字眼了)
先看下jd的商品类目返回的数据格式:
因为扒的页面是jd之前的,没有添加这么多,缺少了1 3 4部分,其实也就添加了几个键值对,不影响数据结构的设计
本项目要实现的数据结构(部分数据):
1 | { |
因为没有设计专门的rest
服务工程,这里将结构pojo放在common
工程中以供通用,代码如下:
1 | package com.migo.pojo; |
1 | package com.migo.pojo; |
为更好的符合类的名字的含义,和更好的理解性,对ItemCatResult
稍做改造
1 | package com.migo.pojo; |
前台访问的URL
: URL_Serv: "http://tomcat.migo.com/rest/webs/item/cat?callback=category.getDataService"
lib-v1.js 1173行
后台代码:
service
从tb_item_cat
表中取数据,单表查询,可以使用通用mapper
返回结果:ItemCatResult
参数:没有
业务逻辑:根据parentid
查询子节点列表,并递归调用
1 | /** |
controller
1 | package com.migo.controller.webs; |
测试:
因为前端门户系统访问后台服务系统相当于跨域请求,这里,得使用jsonp
,不了解的可以谷歌一下,回头有时间我会安利一下这个东西的原理,其实很简单,无非就是访问个js片段,具体看下面三点
1、 jsonp通过script标签的src可以跨域请求的特性,加载资源
2、 将加载的资源(通过一个方法名将数据进行包裹)当做是js脚本解析
3、 定义一个回调函数,获取传入的数据
添加callback
参数
修改controller
代码
MappingJacksonValue
要求springmvc
必须是4.1
以上版本。
1 | package com.migo.controller.webs; |
运行结果:
进一步改造jsonp
的支持
这是之前写的一个关于消息转换器的Demo,拿出一个类来足以说明了,看代码注释即可(可以处理输入和输出)
1 | package com.zhiqiu.messageconverter; |
因为StringHttpMessageConverter
默认字符集为ISO-8859-1
如下部分源码码所示,修改springmvc
配置文件的 mvc:annotation-driven
,在自定义的转换器里去做就可以了,这里重写上面的 writeInternal
方法
1 | public class StringHttpMessageConverter extends AbstractHttpMessageConverter<String> { |
在common
工程中添加自定义消息转换器
1 | package com.migo.messageconverter; |
在manage
工程中配置springmvc.xml
1 | <?xml version="1.0" encoding="UTF-8"?> |
controller
修改如下
1 | package com.migo.controller.webs; |