# bbs **Repository Path**: codingRoad/bbs ## Basic Information - **Project Name**: bbs - **Description**: 基于springboot的论坛网站 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 6 - **Forks**: 2 - **Created**: 2020-05-27 - **Last Updated**: 2025-05-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # bbs ## 介绍 基于springboot的论坛网站 ## 软件架构 ### 模块一:首页 功能点1--查询帖子 **知识点**:Spring,SpringMVC,Mybatis,的基础知识,还有maven项目的构建,日志的记录,git的设置 功能点2--帖子的分页显示 **知识点**:thymeleaf模板引擎的使用,数据库查询分页 ### 模块二:注册 功能点3--发送邮件功能 **知识点**:STMP服务的开启,使用email模拟邮件发送的过程 功能点4--开发注册功能 **知识点**:html代码复用,密码加密,激活账号,错误提示 ### 模块三:登录 功能点5--会话管理 **知识点**:http,cookie,session的概念,生成和使用cookie,session,设置cookie的生效范围与生命周期, 分布式为什么不使用session?在分布式中使用粘性session,同步session,共享session的概念与缺点,将session存进数据库 集群的缺点, 功能点6--生成验证码 **知识点**:编写kaptcha配置类,生成随机字符,生成图片,将图片传给浏览器,页面上的验证码刷新 功能点7--登录 **知识点**:使用注解写SQL,验证信息,成功和失败登录的处理 功能点8--账号退出 **知识点**:登录凭证失效,跳转 功能点9--显示登录信息 **知识点**:定义拦截器,配置拦截器,ThreadLocal在该功能中的作用(持有用户信息,用于替代session对象)。拦截器应用 { a.请求时开始查询登录用户 b.在本次请求中持有用户数据 c.在模板视图上显示用户数据 d.在请求结束时清理用户数据 } 功能点10--检查登录状态 **知识点**:使用拦截器(a.在方法前标注自定义注解 b.拦截所有请求,只处理带有该注解的方法),自定义注解( 元注解@target,@Rentention,@Document,@Inherited读取注解:Method.getDeclareAnnotations,Method.getAnnotation(Class) ------------------------------------------------------------------------------------------------------ ### 模块三:账号设置 功能点11--上传文件 **知识点**:上传头像(MultipartFile),判断图片是否格式正确,生成随机文件名并保存(transferTo), 更新当前用户的头像信息,获取头像信息并更新页面 ### 模块三:社区核心功能 功能点12--过滤敏感词 **知识点**:前缀树,敏感词过滤器 功能点13--发布帖子 **知识点**:Ajax,Jquery 功能点14--帖子详情 **知识点**:关联查询实现的两种方式 功能点15--事务管理 **知识点**:事务的概念,事务的ACID特性,事务的隔离性级别,常见的并发异常(a.第一类丢失更新 b.第二类丢失更新 c.脏读 d.不可重读 e.幻读)。 悲观锁,乐观锁,spring事务管理(声明式事务,编程式事务),传播机制 功能点16--显示评论 **知识点**:组件重用,Model取值 功能点17--添加评论 **知识点**:数据层、业务层、表现层的处理,事务的应用 功能点18--私信列表 **知识点**:私信列表,私信详情 功能点19--发送列表 **知识点**:发送私信,设置私信, 功能点20--统一异常处理 **知识点**:@ControllerAdvice,@ExceptionHandler,@ModelAttribute,@DataBinder 功能点21--统一日志处理 **知识点**:AOP思想,三种织入时间,Target,JoinPoint(切点),Weaving, Pointcut(声明织入对象及其位置),Advice(具体逻辑),AOP的实现,SpringAOP的特点,代理方式( Java动态代理,CGLib动态代理),RequestContentHolder方法调用request对象(不通过传参) 注解:@Aspect,@Pointcut,@Before,@After,@AfterReturning,@Afterthrowing,@Around ### 模块四:Redis 特点,优点,应用场景(缓存,排行榜,计数器,社交网络的点赞等,消息队列), 常用命令:flushdb,get,set,incr,decr,hset,hget,lpush,llen,lindex,lrange,rpop,sadd, scard(统计集合中的元素),spop(可以实现抽奖),zadd(添加有序集合),zscore,zrank,zrange,keys *, type,exists,del,expire(使key失效,即删除), 功能点22--Redis入门 **知识点**:@ControllerAdvice,@ExceptionHandler,@ModelAttribute,@DataBinder 功能点23--spring整合redis **知识点**:配置,Redisconfig配置类的撰写,key,value的序列化方式, Java访问Redis(redisTemplate.opsForValue(),opsForHash(),opsForList(),opsForSet(),opsForZset) String,Hash,Set,List,Sortedsets,Key多次访问一个key,编程式事务(multi()开启一个事务,exec()结束一个事务) 功能点24--点赞 **知识点**:点赞逻辑,点赞信息存进redis,统计点赞数量,显示点赞状态。 ## 安装教程 1. xxxx 2. xxxx 3. xxxx ## 使用说明 1. xxxx 2. xxxx 3. xxxx ## 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request ## 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)