当前位置: 首页 > news >正文

VUE+SPRINGBOOT从0-1打造前后端-前后台系统-文章列表

在当今信息爆炸的时代,新闻管理系统成为了各类网站和应用的标配功能。本文将详细介绍一个基于Vue.js前端框架和Spring Boot后端框架的新闻管理系统的设计与实现过程。该系统不仅实现了基本的新闻增删改查功能,还包含了点赞、分页、搜索等实用特性。

系统架构

前端架构

  • Vue.js:作为前端主框架,提供响应式数据绑定和组件化开发

  • Element UI:提供丰富的UI组件,如表格、分页、输入框等

  • Axios:处理HTTP请求,与后端API交互

  • Vue Router:管理前端路由

后端架构

  • Spring Boot:快速构建RESTful API

  • MyBatis Plus:简化数据库操作

  • Hutool:提供Excel导出等实用工具类

核心功能实现

1. 新闻列表展示与分页

前端通过IndexNews.vue组件展示新闻列表,关键代码如下:

// 分页查询方法
selectListPage() {this.$http.post("/news/list_page", this.send).then(res => {if (res.data.code === "200") {this.send.total = res.data.object.totalthis.list = res.data.object.data} else {this.$message.error('查询失败,' + res.data.code)router.push("/login")}})
}

后端对应的分页查询接口:

@PostMapping("/list_page")
public Res list_page(@RequestBody News news) {// 构建查询条件QueryWrapper<News> queryWrapper = new QueryWrapper<>();if (!MyUtils.blankFlag(news.getTitle())) {queryWrapper.like("title", news.getTitle());}if (!MyUtils.blankFlag(news.getContent())) {queryWrapper.like("content", news.getContent());}queryWrapper.orderByDesc("time");// 分页处理Integer total = Math.toIntExact(newsMapper.selectCount(queryWrapper));MyUtils.selectByPageManage(total, news);queryWrapper.last("limit " + news.getStart() + "," + news.getEnd());// 执行查询List<News> dataList = newsMapper.selectList(queryWrapper);// 返回结果HashMap<Object, Object> hashMap = new HashMap<>();hashMap.put("total", total);hashMap.put("data", dataList);return Res.success(hashMap);
}

2. 新闻搜索功能

系统支持按标题和内容进行搜索:

运行

<el-input v-model="send.title" placeholder="标题"></el-input>
<el-input v-model="send.content" placeholder="正文"></el-input>
<el-button @click="selectListPage">搜索</el-button>

3. 点赞功能实现

用户可以为喜欢的新闻点赞:

add_praise(id) {this.send.id = idthis.$http.post("/news/add_praise", this.send).then(res => {if (res.data.code === "200") {this.$message.success("点赞成功");this.selectListPage();}})
}

后端点赞接口:

@PostMapping("/add_praise")
public Res add_praise(@RequestBody News news) {News existNews = newsMapper.selectById(news.getId());existNews.setPraise(existNews.getPraise() + 1);newsMapper.updateById(existNews);return Res.success(null);
}

4. 新闻管理功能(管理员权限)

管理员可以删除新闻:

<span v-if="user.role === '管理员'"><a @click="confirmDelete(item.id)"><i class="el-icon-delete"></i> 删除</a>
</span>

对应的删除方法:

confirmDelete(id) {this.sendForm.id = idthis.$http.post("/news/delete", this.sendForm).then(res => {if (res.data.code === "200") {this.$message.success('删除成功')}this.selectListPage()})
}

后端删除接口:

@PostMapping("/delete")
public Res delete(@RequestBody News news) {newsMapper.deleteById(news);return Res.success(null);
}

技术亮点

1. 自定义滚动条样式

通过CSS实现了美观的滚动条:

.outer-scroll-container {&::-webkit-scrollbar {width: 2px;}&::-webkit-scrollbar-track {background: #f1f1f1;}&::-webkit-scrollbar-thumb {background: #888;border-radius: 4px;}
}

2. SEO优化

通过Vue的head配置实现了SEO优化:

head() {return {title: '新闻列表 - 人工智能系统',meta: [{hid: 'description', name: 'description', content: '人工智能最新新闻动态和资讯'},{hid: 'keywords', name: 'keywords', content: '人工智能新闻,人工智能资讯,人工智能动态'},]}
}

3. Excel导出功能

使用Hutool工具实现了Excel导出:

@GetMapping("/list_export")
public Res list_export(HttpServletResponse response) throws Exception {List<News> newsList = newsMapper.selectList(null);ExcelWriter excelWriter = ExcelUtil.getWriter(true);// 设置表头别名excelWriter.addHeaderAlias("id", "id");excelWriter.addHeaderAlias("title", "title");// ...其他字段excelWriter.write(newsList, true);// 设置响应头response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");String fileName = URLEncoder.encode("小说记录", "UTF-8");response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");// 输出流处理ServletOutputStream out = response.getOutputStream();excelWriter.flush(out, true);out.close();excelWriter.close();return Res.success(null);
}

总结

本文详细介绍了一个完整的新闻管理系统的设计与实现过程。系统前端采用Vue.js+Element UI构建用户界面,后端使用Spring Boot提供RESTful API,数据库操作通过MyBatis Plus简化。系统实现了新闻的增删改查、分页展示、搜索过滤、点赞统计等功能,并针对管理员提供了新闻管理功能。

该系统架构清晰,代码规范,具有良好的扩展性和维护性。开发者可以根据实际需求进一步扩展功能,如增加新闻分类、评论系统、用户收藏等特性,使其成为一个更加完善的新闻平台。

http://www.lryc.cn/news/612653.html

相关文章:

  • [失败记录] 使用HBuilderX创建的uniapp vue3项目添加tailwindcss3的完整过程
  • 《深入浅出 Django ORM:设计理念与惰性查询实现详解》
  • Django 表单:深度解析与最佳实践
  • 上门家教 app 用户端系统模块设计
  • 解锁高效开发:AWS 前端 Web 与移动应用解决方案详解
  • 深度解析:打造一个文件、可持续的Python网络爬虫——以澳洲房地产网站为例
  • uni-app vue3 小程序接入 aliyun-rtc-wx-sdk
  • 深拷贝之 structuredClone ()
  • JavaSE---异常的经典面试题
  • SUNO音乐歌曲生成平台的关键字指令
  • 内网穿透原理和部署教程
  • [激光原理与应用-171]:测量仪器 - 能量型 - 激光能量计(单脉冲能量测量)
  • YOLOv8面试知识
  • Spring事务失效场景?
  • 【基础知识】springboot+vue 基础框架搭建(更新中)
  • 下载 | Windows Server 2016最新原版ISO映像!(集成7月更新、标准版、数据中心版、14393.8246)
  • MacOS Docker 安装指南
  • 进程、网络通信方法
  • 在Linux下访问MS SQL Server数据库
  • 机器学习工程化 3.0:从“实验科学”到“持续交付”的 7 个关卡
  • 【2025最新】在 macOS 上构建 Flutter iOS 应用
  • 函数、方法和计算属性
  • 「iOS」————持久化
  • HashMap寻址算法
  • 如何显示一个 Elasticsearch 索引的字段
  • Opencv-管理图片
  • 冷库温湿度物联网监控系统解决方案:冷链智能化
  • [无需 Mac] 使用 GitHub Actions 构建 iOS 应用
  • 嵌入式硬件学习(十一)—— platform驱动框架
  • 嵌入式硬件中MOSFET基本原理与实现