Java学习笔记_10_主页和新闻内容展示

主页和新闻内容展示

一.Dao层接口

在这里插入图片描述
从上面的图我们可以看出来在首页要显示的内容有推荐的新闻,新闻列表和每条新闻的梗要
,所以要在数据库中查询所有推荐内容。然后把搜索功能和展示所有新闻功能封装到同一接口
在这里插入图片描述

二.Service层

定义接口
在这里插入图片描述
实现接口


    @Override
    public Page<News> listNew(Pageable pageable) {
        return newRepository.findAll(pageable);
    }

    @Override
    public List<News> ListRecommendNewTop(Integer size) {
        Sort sort =Sort.by(Sort.Direction.DESC,"updateTime");
        Pageable pageable= PageRequest.of(0,size,sort);
        return newRepository.findTop(pageable);
    }

    @Override
    public Page<News> listNew(String query,Pageable pageable){
        return newRepository.findByQuery(query,pageable);
    }

    @Override
    public News getAndConvert(Long id) {
        News news=newRepository.findById(id).orElse(null);
        if(news==null){
            System.out.println("该新闻不存在");
        }
        News news1= new News();
        BeanUtils.copyProperties(news,news1);
        String content=news1.getContent();
        news1.setContent(MarkdownUtils.markdownToHtmlExtensions(content));

        return news1;
    }

三.Controller层处理请求

1.访问首页请求

    @GetMapping("/")
    public String index(@PageableDefault(size=3,sort={"updateTime"},direction = Sort.Direction.DESC)
                        Pageable pageable, Model model){
        model.addAttribute("page",newService.listNew(pageable));
        model.addAttribute("types",typeService.listTypeTop(3));
        model.addAttribute("tags",tagService.listTagTop(3));
        model.addAttribute("recommendNews",newService.ListRecommendNewTop(3));
        return "index";
    }

2.搜索请求

    @PostMapping("/search")
    public String search(@PageableDefault(size=3,sort = {"updateTime"},direction = Sort.Direction.DESC)Pageable pageable,
                         @RequestParam String query, Model model){
        model.addAttribute("page",newService.listNew("%"+query+"%",pageable));
        model.addAttribute("query",query);
        return "search";
    }

3.查看新闻内容请求

    @RequestMapping("/news/{id}")
    public String news(@PathVariable Long id,Model model){
        model.addAttribute("news",newService.getAndConvert(id));
        return "new";
    }

四.效果展示

首页展示

在这里插入图片描述

新闻详情展示

在这里插入图片描述

搜索功能

在这里插入图片描述

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页