牛客网中级项目学习笔记-返首页数据给前端

首页资讯数据返回设计

牛客网的中级项目内容是搭建一个仿头条资讯的网站,包括用户登录注册、查看资讯、创建资讯、点赞资讯、站内消息等等。
本次记录下这个项目在前后端数据返回代码设计上的亮点,一般我们熟知的后端返前端数据是通过JSON格式,本次项目在后端返前端新闻资讯时是把一条条新闻资讯先存入创建的Map集合对象,再统一存入list返给前端。
在这里插入图片描述
ViewObject类即包装了一个Map:

public class ViewObject {
	private Map<String,Object> map=new HashMap<String,Object>();
    public void set(String key,Object val) {
    	map.put(key, val);
    }
    
    public Object get(String key) {
    	return map.get(key);
    }
}

在HomeController上,从数据库里查询资讯数据,把该条资讯和该条资讯的相关信息包装成ViewObject,代码如下:

private List<ViewObject> getNews(int userId,int offset,int limit){
		List<News> newsList=newsService.getLatestNews(userId, offset, limit);
		int localUserId=holder.getUser()!=null?holder.getUser().getId():0;
		List<ViewObject> vos=new ArrayList<ViewObject>();
		for(News news:newsList) {
			ViewObject vo=new ViewObject();
			vo.set("news", news);
			vo.set("user", userService.getUser(news.getUserId()));
			//返回当前用户对于该条资讯的点赞状态
			if(localUserId!=0) vo.set("like", 
					likeService.getLikeStatus(localUserId, EntityType.ENTITY_NEWS, news.getId()));
			else vo.set("like", 0);
			vos.add(vo);
		}
		return vos;
	}

@RequestMapping(path = {"/", "/index"}, method = {RequestMethod.GET, RequestMethod.POST})
    public String index(Model model,
                        @RequestParam(value = "pop", defaultValue = "0") int pop) {
        model.addAttribute("vos", getNews(0, 0, 10));
        model.addAttribute("pop", pop);
        return "home";
    }
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值