实现大广告
访问后台系统接口获取数据
大广告数据结构:
用httpclient获取api接口,构造大广告数据结构:
设置大广告获取的api路径:
将json数据保存到模型数据中
通过EL表达式输出到页面
测试
效果:
实现小广告
分析
实现
Controller:
Service:
效果:
优化实现
package com.taotao.common.bean;
import java.util.List;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public class EasyUIResult {
// 定义jackson对象
private static final ObjectMapper MAPPER = new ObjectMapper();
private Long total;
private List<?> rows;
public EasyUIResult() {
}
public EasyUIResult(Long total, List<?> rows) {
this.total = total;
this.rows = rows;
}
public EasyUIResult(Integer total, List<?> rows) {
this.total = Long.valueOf(total);
this.rows = rows;
}
public Long getTotal() {
return total;
}
public void setTotal(Long total) {
this.total = total;
}
public List<?> getRows() {
return rows;
}
public void setRows(List<?> rows) {
this.rows = rows;
}
/**
* Object是集合转化
*
* @param jsonData json数据
* @param clazz 集合中的类型
* @return
*/
public static EasyUIResult formatToList(String jsonData, Class<?> clazz) {
try {
JsonNode jsonNode = MAPPER.readTree(jsonData);
JsonNode data = jsonNode.get("rows");
List<?> list = null;
if (data.isArray() && data.size() > 0) {
list = MAPPER.readValue(data.traverse(),
MAPPER.getTypeFactory().constructCollectionType(List.class, clazz));
}
return new EasyUIResult(jsonNode.get("total").intValue(), list);
} catch (Exception e) {
return null;
}
}
}
可能遇到的问题:
[ERROR] Failed to execute goal on project taotao-web: Could not resolve dependencies for project com.taotao.web:taotao-web:war:0.0.1-SNAPSHOT: Failed to collect dependencies at com.taotao.manage:taotao-manage-pojo:jar:0.0.1-SNAPSHOT: Failed to read artifact descriptor for com.taotao.manage:taotao-manage-pojo:jar:0.0.1-SNAPSHOT: Could not find artifact com.taotao.manage:taotao-manage:pom:0.0.1-SNAPSHOT -> [Help 1]
重点在于最后一句Could not find artifact com.taotao.manage:taotao-manage:pom:0.0.1-SNAPSHOT 错误信息提示:寻找不到taotao-manager(这个是一个父工程,类型为POM)。
解决方案:
原因是本地仓库缺少了 com.taotao.manager:pom:0.0.1-SNAPSHOT, 原来是忘记了将父工程打包到本地仓库 ,
运行聚合工程前记得先将依赖的工程都先Maven install到本地仓库,否则也会出现以上问题。
最后源码
package com.taotao.web.service;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.taotao.common.bean.EasyUIResult;
import com.taotao.common.service.ApiService;
import com.taotao.manage.pojo.Content;
@Service
public class IndexService {
@Autowired
private ApiService apiService;
@Value("${TAOTAO_MANAGE_URL}")
private String TAOTAO_MANAGE_URL;
@Value("${INDEX_AD1_URL}")
private String INDEX_AD1_URL;
@Value("${INDEX_AD2_URL}")
private String INDEX_AD2_URL;
private static final ObjectMapper MAPPER = new ObjectMapper();
@SuppressWarnings("unchecked")
public String queryIndexAD1() {
try {
String url = TAOTAO_MANAGE_URL + INDEX_AD1_URL;
String jsonData = this.apiService.doGet(url);
if (StringUtils.isEmpty(jsonData)) {
return null;
}
// 解析json数据,封装成前端所需要的结构
EasyUIResult easyUIResult = EasyUIResult.formatToList(jsonData, Content.class);
List<Content> contents = (List<Content>) easyUIResult.getRows();
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
for (Content content : contents) {
Map<String, Object> map = new LinkedHashMap<String, Object>();
map.put("srcB", content.getPic());
map.put("height", 240);
map.put("alt",content.getTitle());
map.put("width", 670);
map.put("src", content.getPic());
map.put("widthB", 550);
map.put("href", content.getUrl());
map.put("heightB", 240);
result.add(map);
}
return MAPPER.writeValueAsString(result);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
// public String queryIndexAD1() {
// try {
// String url = TAOTAO_MANAGE_URL + INDEX_AD1_URL;
// String jsonData = this.apiService.doGet(url);
// if (StringUtils.isEmpty(jsonData)) {
// return null;
// }
// // 解析json数据,封装成前端所需要的结构
// JsonNode jsonNode = MAPPER.readTree(jsonData);
// ArrayNode rows = (ArrayNode) jsonNode.get("rows");
// List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
// for (JsonNode row : rows) {
// Map<String, Object> map = new LinkedHashMap<String, Object>();
// map.put("srcB", row.get("pic").asText());
// map.put("height", 240);
// map.put("alt", row.get("title").asText());
// map.put("width", 670);
// map.put("src", row.get("pic").asText());
// map.put("widthB", 550);
// map.put("href", row.get("url").asText());
// map.put("heightB", 240);
// result.add(map);
// }
// return MAPPER.writeValueAsString(result);
// } catch (Exception e) {
// e.printStackTrace();
// }
// return null;
// }
public String queryIndexAD2() {
try {
String url = TAOTAO_MANAGE_URL + INDEX_AD2_URL;
String jsonData = this.apiService.doGet(url);
if (StringUtils.isEmpty(jsonData)) {
return null;
}
// 解析json数据,封装成前端所需要的结构
JsonNode jsonNode = MAPPER.readTree(jsonData);
ArrayNode rows = (ArrayNode) jsonNode.get("rows");
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
for (JsonNode row : rows) {
Map<String, Object> map = new LinkedHashMap<String, Object>();
map.put("width", 310);
map.put("height", 70);
map.put("src", row.get("pic").asText());
map.put("href", row.get("url").asText());
map.put("alt", row.get("title").asText());
map.put("widthB", 210);
map.put("heightB", 70);
map.put("srcB", row.get("pic").asText());
result.add(map);
}
return MAPPER.writeValueAsString(result);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
package com.taotao.web.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import com.taotao.web.service.IndexService;
@RequestMapping("index")
@Controller
public class IndexController {
@Autowired
private IndexService indexService;
/**
* 首页
*
* @return
*/
@RequestMapping(method = RequestMethod.GET)
public ModelAndView index() {
ModelAndView mv = new ModelAndView("index");
// 首页大广告
String indexAD1 = this.indexService.queryIndexAD1();
mv.addObject("indexAD1", indexAD1);
// 首页小广告
String indexAD2 = this.indexService.queryIndexAD2();
mv.addObject("indexAD2", indexAD2);
return mv;
}
}