牛客网项目—开发社区首页
视频连接:开发社区首页_哔哩哔哩_bilibili
代码地址:Community: msf begin 仿牛客论坛项目 (gitee.com)
本文是对仿牛客论坛项目的学习,学习本文之前需要了解Java开发的常用框架,例如SpringBoot、Mybatis等等。如果你也在学习牛客网论坛项目,希望我的文章能够对你有所帮助。
完成的效果如下:可以在首页看出所有人的评论,通过点击页面跳转到其他页面。

开发社区首页设计到的功能
1、建立User和discussPost实体,开发相应的Dao,Service和Controller。注意在springboot开发时需要完善注解哦。
public class User {private int id;private String username;private String password;private String salt;private String email;private int type;private int status;private String activationCode;private String headerUrl;private Date createTime;
}public class DiscussPost {private int id;private String userId;private String title;private String content;private int type;private int status;private Date createTime;private int commentCount;private double score;
}
实体是非常好实现的,就是将数据库中的字段和Java中的类相对容易。
2、实现Dao层,由于首页需要对评论进行显示,所以discussPostMapper中有一个方法查询所有帖子,由于需要进行分页,最好也有一个查询帖子个数的方法。
@Mapper
public interface DiscussPostMapper {/*** 在查询全部帖子时候,不需要userId,查看自己主页发布的帖子需要userId* @param userId if userId = 0:表示查首页,否则查自己* @param offset 分页起始行号* @param limit 每页查询的数据条数* @return*/List<DiscussPost> selectDiscussPosts(int userId,int offset,int limit);/*** 在写sql时候,需要用到动态条件,并且有且仅有一个条件则必须去别名* @param userId* @return*/int selectDiscussPostRows(@Param("userId") int userId);}
这里有一个坑需要记录一下,在写动态sql时候,有且仅有一个条件则必须起别名。
UserMapper也贴在下面了,包括一些常用的查询和更新方法等等。
@Mapper
public interface UserMapper {User selectById(int id);User selectByName(String name);User selectByEmail(String email);int insertUser(User user);int updateStatus(int id, int status);int updateHeader(int id, String headerUrl);int updatePassword(int id, String password);}
到此Dao层基本完成,需要完成具体mapper.xml实现,这里就不进行粘贴了。最最最重要的是,测试。千万不要把一个功能全部完成了在测试,应该是分阶段的测试,在某一个阶段性小功能实现之后就进行测试。
3、 Controller层的实现:我们需要将所有的帖子和User进行对应起来以后。我们就需要完成分页显示,因此也需要处理分页的信息,例如offset,limit等等。在这里通过设计一个Page类对分页信息进行封装
@Controller
public class DiscussPostController {@Autowiredprivate UserService userService;@Autowiredprivate DiscussPostService discussPostService;@GetMapping("/index")public String getIndexPage(Model model, Page page) {page.setPath("/index");page.setRows(discussPostService.selectDiscussPostRows(0));List<DiscussPost> list = discussPostService.selectDiscussPosts(0, page.getOffset(), page.getLimit());List<Map<String, Object>> discussPosts = new ArrayList<>();if (null != list) {for (DiscussPost post : list) {Map<String, Object> map = new HashMap<>();map.put("post", post);String userId = post.getUserId();User user = userService.selectById(Integer.parseInt(userId));map.put("user", user);discussPosts.add(map);}}model.addAttribute("discussPosts", discussPosts);// 可以省略的原因,是前端控制器,已经将page装入了Model中// model.addAttribute("page",page);return "/index";}}public class Page {// 数据总数private int rows;// 当前页码private int current = 1;private int limit = 10;// 查询路径(用于复用分页链接)private String path;
}
1、在首页供能实现中,我遇到的问题:主要是前端问题。因为跟着视频做的时候,并没有实现定义第几页进行跳转,而仅仅实现了下一页,首页等功能,因此在这里需要实现页码点击跳转的功能。

2、第二个遇到的问题是,js、css等没有渲染,因为你的当前网络不能访问到外网。需要搭建梯子对需要的js和css进行下载,下载之后就可以访问了。登录VPN之后然后在访问首页,js和css就进行了渲染。

相关文章:
牛客网项目—开发社区首页
视频连接:开发社区首页_哔哩哔哩_bilibili 代码地址:Community: msf begin 仿牛客论坛项目 (gitee.com) 本文是对仿牛客论坛项目的学习,学习本文之前需要了解Java开发的常用框架,例如SpringBoot、Mybatis等等。如果你也在学习牛…...
uniapp水文【uniapp】
文章目录 1、前言2、历史3、发展4、功能5、优缺点6、总结7、附录7.1、高频使用7.2、使用注意 1、前言 Uniapp是一种跨平台的移动应用开发框架,它允许开发者使用一套代码库,同时生成iOS、Android等多个平台的应用程序。这种技术方案可以大大降低开发成本…...
Java函数式接口
3 函数式接口 3.1 函数式接口概述 函数式接口:有且仅有一个抽象方法的接口 Java中的函数式编程体现就是Lambda表达式,所以函数式接口就是可以适用于Lambda使用的接口只有确保接口中有且仅有一个抽象方法, Java中的Lambda才能顺利地进行推导…...
安装libevent库
安装libevent库 yum install libevent libevent-devel 自动安装Memcached yum install memcached 源码安装 下载1.6.19版本 wget https://www.memcached.org/files/memcached-1.6.19.tar.gz (若证书过期yum install -y ca-certificates) 解压源码 tar -zxvf…...
vue 截取字符串的方法
vue中的字符串方法,我目前使用最多的是下面两种方法,因为 vue的字符串方法支持断言操作。 1、 vue中截取字符串的方法如下: 2、 vue中截取字符串的方法,这个方法也是需要依赖于 vue库提供的支持。 3、 vue中截取字符串的方法&…...
可数集和不可数集
有限集和无限集 后继集 设 S S S是任一集合,称 S S ∪ { S } S^ S\cup \left\{ S\right\} SS∪{S}为 S S S的后继集 自然数集 自然数集 N \mathbb{N} N的归纳定义是: (1) ∅ ∈ N \empty \in \mathbb{N} ∅∈N (…...
<Linux>《Linux 之 ps 命令详解大全(含实用命令)》
《Linux 之 ps 命令详解大全(含实用命令)》 1 常用命令1.1 显示所有当前进程1.2 显示所有当前进程1.3 显示所有当前进程1.4 根据用户过滤进程1.5 根据 CPU 使用来升序排序1.6 根据用户过滤进程1.7 查询全10个使用cpu和内存最高的应用1.8 通过进程名和PID…...
华为OD机试真题 Java 实现【寻找关键钥匙】【2023Q1 100分】
一、题目描述 小强正在参加《密室逃生》游戏,当前关卡要求找到符合给定 密码K(升序的不重复小写字母组成)的箱子,并给出箱子编号,箱子编号为1~N。 每个箱子中都有一个字符串s,字符串由大写字母,小写字母,数字,标点符号,空格组成,需要在这些字符串中找出所有的字母…...
项目中遇到的一些问题总结(十三)
extension-configs 和 shared-configs 的区别 在 Nacos 配置管理中,extension-configs 和 shared-configs 分别是两种不同类型的配置,它们的主要区别在于它们的使用场景和作用。 extension-configs 是一种应用程序向 Nacos 注册的扩展配置。它主要用于给…...
药品存销信息管理系统数据设计与实现(包括需求分析,数据库设计,数据表、视图、存储过程等)
前言 可前往链接直接下载: https://download.csdn.net/download/c1007857613/87776664 或者阅读本博文的详细介绍,本博文也包含所有详细内容。 一、需求分析 a.“药品存销信息管理系统”只是对数据库应用技术的一个样本数据库的实例,重在对数据库一些方法的熟悉与掌握,…...
PyTorch-Loss Function and BP
目录 1. Loss Function 1.1 L1Loss 1.2 MSELoss 1.3 CrossEntropyLoss 2. 交叉熵与神经网络模型的结合 2.1 反向传播 1. Loss Function 目的: a. 计算预测值与真实值之间的差距; b. 可通过此条件,进行反向传播。 1.1 L1Loss import torch from …...
centos docker安装mysql8
1、创建挂载文件夹 mkdir -p /mydata/mysql/log mkdir -p /mydata/mysql/data mkdir -p /mydata/mysql/conf 2、拉取镜像最新版本,如果写 mysql:8.0.26可以指定版本 docker pull mysql 3、启动命令 docker run -p 3306:3306 --restartalways -v /mydata/mysql/log:…...
Java中synchronized锁的深入理解
使用范围 synchronized使用上用于同步方法或者同步代码块在锁实现上是基于对象去实现使用中用于对static修饰的便是class类锁使用中用于对非static修饰的便是当前对象锁 synchronized的优化 在jdk1.6中对synchronized做了相关的优化 锁消除 在synchronized修饰的代码块中…...
Find My资讯|iOS17将重点改进钱包、Find My、SharePlay和AirPlay等功能
彭博社的马克・古尔曼(Mark Gurman)在最新一期 Power On 时事通讯中表示,苹果即将推出的 iOS 17 系统将改进 Wallet、Find My、SharePlay 和 AirPlay 等多项功能。 古尔曼在博文中还表示苹果会增强 Find My 的位置服务,同样也没…...
什么是webSocket?
什么是webSocket WebSockets是一种协议,它允许在Web应用程序中建立持久连接。这意味着当客户端与服务器建立连接后,它们可以始终保持连接状态,直到其中一个终止连接。相比于传统的HTTP协议,WebSockets提供了更高效的方式来处理实…...
黑马Redis视频教程高级篇(一:分布式缓存)
目录 分布式缓存 一、Redis持久化 1.1、RDB持久化 1.1.1、执行时机 1.1.2、RDB原理 1.1.3、小结 1.2、OF持久化 1.2.1、AOF原理 1.2.2、OF配置 1.2.3、AOF文件重写 1.3、RDB与AOF对比 二、Redis主从 2.1、搭建主从架构 2.1.1、集群结构 2.1.2、准备实例和配置 …...
SLMi331数明深力科带DESAT保护功能隔离驱动应用笔记
SLMi33X系列SLMi331数明深力科首款单通道带DESAT保护功能的IGBT/SiC隔离驱动器。内置快速去饱和(DESAT) 故障检测功能、米勒钳位功能、漏极开路故障反馈、软关断功能以及可选择的自恢复模式,兼容光耦隔离驱动器。 SLMi331的DESAT阈值为6.5V,其最大驱动电…...
【嵌入式Linux基础】启动初始化程序--init程序
文章目录 内核启动后初始化程序简介BusyBox initBuildroot init 脚本 后记 内核启动后 内核引导代码在initramfs中通过内核命令行中的root指定的文件系统中去寻找根系统文件,并执行一个相应的程序。在默认情况下,对于initramfs这个程序是/init࿰…...
基于Java实现农产品交易平台的设计与实现_kaic
【摘要】农业是我国国民经济的重要组成部分,随着信息化的普及,4G网络、光纤以及5G网络也日益完善,农业信息化的发展成为了必然。同时,由于本年疫情原因,导致农作物积压销售,甚至腐烂造成不必要的浪费&#…...
视频转换、视频压缩、录屏等工具合集:迅捷视频工具箱
这是一款功能强大的视频处理软件,提供了多种视频处理功能。可以使用该软件进行视频剪辑、视频转换、音频转换、视频录像、视频压缩、字幕贴图等多种操作。软件界面简洁易用,操作方便,可以满足各种视频处理需求。 基本功能 视频压缩ÿ…...
使用workbuddy 30分钟搭建微信小程序
前言 今天发现一个超好用的工具WorkBuddy可以非常快速地进行搭建小程序,还有进行一些代码的修改,简直是一个开发小程序的好帮手,今天用一节很小的短篇介绍一下整个创建部署和搭建过程。 第一步下载workbuddy 创建小程序 首先需要下载work…...
Linux驱动开发:proc接口原理、实现与调试实战
1. 项目概述:为什么需要了解proc接口?在Linux驱动开发这条路上,很多开发者朋友都曾有过这样的困惑:我的驱动模块加载成功了,设备也识别了,但怎么才能直观地看到它内部的工作状态、配置参数,或者…...
AI如何重塑移动App开发:从功能交付到智能服务的范式跃迁
1. 项目概述:当手机App开发不再只是“写代码”,而变成一场数据驱动的智能进化“How AI and ML are Turning the Mobile App Development Industry into a Smart Industry?”——这个标题不是一句空泛的行业口号,而是我过去三年深度参与17个中…...
Klogg实战:5分钟搞定海量日志中的Error排查(颜色标记+正则过滤技巧)
Klogg实战:5分钟搞定海量日志中的Error排查(颜色标记正则过滤技巧) 日志分析是每个开发者、测试和运维人员日常工作中不可或缺的一部分。面对动辄几个GB的日志文件,如何快速定位到关键的error信息,往往决定了问题解决的…...
2026武汉美术艺考培训机构排名出炉,家长择校必看!
在美育教育持续受重视的背景下,美术高考成为众多学子升学的重要渠道。武汉作为华中美育核心城市,美术培训机构已超 300 家,市场竞争激烈。据湖北省教育考试院 2026 年湖北美术联考数据,全省美术考生超 1.8 万人,武汉占…...
2026央国企求职哪家强?TOP机构帮你稳住铁饭碗!
引言综述随着 2026 届超 1200 万毕业生涌入就业市场,央国企岗位竞争愈发激烈,岗位竞争比持续攀升。在这样的大环境下,求职者的核心需求集中在系统备考规划、精准岗位匹配以及高保障面试辅导上。本次测评旨在为求职者提供客观、专业的机构对比…...
Anthropic率先盈利:大模型商业化曙光初现,IPO竞争谁能笑到最后?
1. 前沿模型盈利曙光乍现前沿模型公司的利润表终于出现了正数。据《华尔街日报》报道,Anthropic正迎来关键季度,预计2026年第二季度收入超109亿美元,较第一季度的48亿美元增长超一倍,且首次实现季度营业利润。路透社称其二季度预计…...
视频硬字幕提取神器:3分钟将任何视频字幕转为可编辑SRT文件
视频硬字幕提取神器:3分钟将任何视频字幕转为可编辑SRT文件 【免费下载链接】video-subtitle-extractor 视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含字幕区域检测、字…...
NotebookLM移动端体验全拆解(iOS/Android双端对比报告·仅限内测用户知晓的性能阈值)
更多请点击: https://kaifayun.com 第一章:NotebookLM移动端体验全景概览 NotebookLM 作为 Google 推出的基于用户自有文档构建的 AI 助手,其移动端(iOS/Android)已正式开放下载。该应用并非简单将网页版界面缩放适配…...
源代码论文分享|社区养老服务平台的设计与实现!
有些毕业设计题目,听起来不是特别“炫”,但真的很适合做,也很容易写出实际意义。 比如这次分享的这个项目:社区养老服务平台的设计与实现。 现在社区养老、居家养老、智慧养老这些方向本身就很有现实背景,老师看到这…...
