说下实现思路:
1. 查看jsp页面发现
2.
是一串json数据。
用工具查看格式如下:
实现分析:
1,不需要使用dao层
2,servcie层
调用发布的服务(rest)根据内容分类ID查询内容管理系统的内容
因为要用到 HttpClient ,先配置一个URL用来调用。
然后实现:
@Service
public class ContentServiceImpl implements ContenService {
@Value("${REST_BASE_URL}")
private String REST_BASE_URL;
@Value("${REST_INDEX_AD_URL}")
private String REST_INDEX_AD_URL;
@Override
public String getContentList() {
//调用服务层的服务
String result = HttpClientUtil.doGet(REST_BASE_URL + REST_INDEX_AD_URL);
//把字符串转换成TaotaoResult
try {
TaotaoResult taotaoResult = TaotaoResult.formatToList(result, TbContent.class);
//取内容列表
List<TbContent> list = (List<TbContent>) taotaoResult.getData();
List<Map> resultList = new ArrayList<>();
//创建一个jsp页码要求的pojo列表
for (TbContent tbContent : list) {
Map map = new HashMap<>();
map.put("src", tbContent.getPic());
map.put("height", 240);
map.put("width", 670);
map.put("srcB", tbContent.getPic2());
map.put("widthB", 550);
map.put("heightB", 240);
map.put("href", tbContent.getUrl());
map.put("alt", tbContent.getSubTitle());
resultList.add(map);
}
return JsonUtils.objectToJson(resultList);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
@Controller
public class contentController {
@Autowired
private ContenService contenService;
@RequestMapping("/index")
public String showIndex(Model model) {
String adJson = contenService.getContentList();
model.addAttribute("ad1", adJson);
return "index";
}
}
运行:报错
空指针异常,分析 debuug 查出 taotaorest 没有值,进一步分析得出 是 result 没有取到值。在到页面按F12报了一些古怪的语法错误。前台页面不显示。
后面发现是我
少写一个 $符号,导致IP路径不能取到配置的信息。再用postman测试接口
能看到接口是通的,但是前台还是没有展示
无奈看后台管理页面发现内容管理模块 广告这里的层级不对。因为我已经修改过来下图是对的层级。
通过这个层级关系添加的内容会保证数据库的内容与配置信息里面的ID一致(89)
这样在刷新前台发现:
广告已经展示出来了。
自己是个新手,所有很多时候只能一点点摸索,写出来记录一下,我在搜索的时候发现也有遇到这个问题空指针的同学。可以做个参考!