# whitewall
[![GitHub issues](https://img.shields.io/github/issues/Dagon0577/whitewall.svg)](https://github.com/Dagon0577/whitewall/issues)
[![GitHub forks](https://img.shields.io/github/watchers/Dagon0577/whitewall.svg)](https://github.com/Dagon0577/whitewall/watchers)
[![GitHub forks](https://img.shields.io/github/forks/Dagon0577/whitewall.svg)](https://github.com/Dagon0577/whitewall/network/members)
[![GitHub stars](https://img.shields.io/github/stars/Dagon0577/whitewall.svg)](https://github.com/Dagon0577/whitewall/stargazers)
[![GitHub license](https://img.shields.io/github/license/Dagon0577/whitewall.svg)](https://github.com/Dagon0577/whitewall/blob/master/LICENSE)
基于SpringBoot的高校表白墙社交系统
- [快速开始](#快速开始)
搭建步骤
- [Schedule 1 -搭建环境](#Schedule-1)
- [Schedule 2 -基本框架开发/IOC和AOP/数据库配置和首页的创建/用户注册登录以及使用token](#Schedule-2)
- [Schedule 3 -新增发表问题功能,并防止xss注入以及敏感词过滤](#Schedule-3)
- [Schedule 4 -新增评论和站内信功能](#Schedule-4)
- [Schedule 5 -新增点赞和点踩功能,使用Redis实现](#Schedule-5)
- [Schedule 6 -新增异步消息功能 新增邮件发送组件](#Schedule-6)
- [Schedule 7 -新增关注功能,开发关注页面和粉丝页面](#Schedule-7)
- [Schedule 8 -Timeline与新鲜事,推拉模式下的Feed流](#Schedule-8)
- [Schedule 9 -python爬虫v2ex数据](#Schedule-9)
- [Schedule 10 -solr搭建全文搜索引擎](#Schedule-10)
- [Schedule 11 -单元测试与压力测试,项目部署等工作](#Schedule-11)
- [Schedule 12 -产品功能扩展以及技术深度扩展](#Schedule-12)
---
## 快速开始
在localhost:3306端口下启动mysql8,创建数据库whitewall,执行SQL表文件。(默认用户为root,密码为dagon)
在localhost:6379启动redis服务(默认使用10数据库)
相关配置文件:
whitewall/src/main/resources/application.properties
whitewall/src/test/resources/init-schema.sql
whitewall/src/main/java/com.Dagon.whitewall/util/JedisAdapter
**启动成功如下:**
![index](src/main/resources/static/images/res/index.png)
## Schedule 1
创建git仓库,本地配置idea并测试pull和push。
创建SpringBoot工程,导入Web,Velocity和Aop的包。
生成Maven项目,pom.xml包含上述依赖,应用名称是whitewall,小组id是com.Dagon。
## Schedule 2
### 基本框架开发
创建基本的controller,service和model层。
controller中使用注解配置,requestmapping,responsebody基本可以解决请求转发以及响应内容的渲染。responsebody自动选择viewresolver进行解析。
使用pathvariable和requestparam传递参数。
使用velocity编写页面模板,注意其中的语法使用。常用$!{}和${}
使用http规范下的httpservletrequest和httpservletresponse来封装请求和相响应,使用封装好的session和cookie对象。
使用重定向的redirectview和统一异常处理器exceptionhandler
### IOC和AOP
IOC解决对象实例化以及依赖传递问题,解耦。
AOP解决纵向切面问题,主要实现日志和权限控制功能。
aspect实现切面,并且使用logger来记录日志,用该切面的切面方法来监听controller。
### 数据库配置和首页的创建
使用mysql创建数据库和表。
加入mybatis和mysql的maven仓库,注意,由于现在版本的springboot不再支持velocity进而导致我使用较早版本的springboot,所以这里提供一可以正常运行的版本设置。
springboot使用1.3.6
mybatis-spring-boot-starter使用1.1.1
mysql-connector-java使用8.0.19
亲测可用。
接下来写controller,dao和service。注意mybatis的注解语法以及xml的配置要求,xml要求放在resource中并且与dao接口在相同的包路径下。
application.properties增加spring配置数据库链接地址
两个小工具:
ViewObject:方便传递任何数据到
VelocityDateTool:velocity自带工具类
写好静态文件html css和js。并且注意需要配置
spring.velocity.suffix=.html 保证跳转请求转发到html上
spring.velocity.toolbox-config-location=toolbox.xml
至此主页基本完成,具体业务逻辑请参考代码。
### 用户注册登录以及使用token
完成用户注册和登录的controller,service和dao层代码
新建数据表login_ticket用来存储ticket字段。该字段在用户登录成功时被生成并存入数据库,并被设置为cookie,
下次用户登录时会带上这个ticket,ticket是随机的uuid,有过期时间以及有效状态。
使用拦截器interceptor来拦截所有用户请求,判断请求中是否有有有效的ticket,如果有的话则将用户信息写入Threadlocal。
所有线程的threadlocal都被存在一个叫做hostholder的实例中,根据该实例就可以在全局任意位置获取用户的信息。
该ticket的功能类似session,也是通过cookie写回浏览器,浏览器请求时再通过cookie传递,区别是该字段是存在数据库中的,并且可以用于移动端。
通过用户访问权限拦截器来拦截用户的越界访问,比如用户没有管理员权限就不能访问管理员页面。
配置了用户的webconfiguration来设置启动时的配置,这里可以将上述的两个拦截器加到启动项里。
配置了json工具类以及md5工具类,并且使用Java自带的salt生成api将用户密码加密为密文。保证密码安全。
数据安全性的保障手段:https使用公钥加密私钥解密,比如支付宝的密码加密,单点登录验证,验证码机制等。
ajax异步加载数据 json数据传输等。
## Schedule 3
### 新增发表问题功能,并防止xss注入以及敏感词过滤
新增Question相关的model,dao,service和controller。顺带写了一下Message和Comment相关的model,dao。
发布问题时检查标题和内容,防止xss注入,并且过滤敏感词。
防止xss注入直接使用HTMLutils的方法即可实现。
过滤敏感词首先需要建立一个字典树,并且读取一份保存敏感词的文本文件,然后初始化字典树。
最后将过滤器作为一个服务,让需要过滤敏感词的服务进行调用即可。
## Schedule 4
### 新增评论和站内信功能
首先建立表comment和message分别代表评论中心和站内信。
依次开发model,dao,service和controller。
评论的逻辑是每一个问题下面都有评论,显示评论数量,具体内容,评论人等信息。
消息的逻辑是,两个用户之间发送一条消息,有一个唯一的会话id,这个会话里可以有多条这两个用户的交互信息。
通过一个用户id获取该用户的会话列表,再根据会话id再获取具体的会话内的多条消息。
逻辑清楚之后,再加上一些附加功能,比如显示未读消息数量(已读后就不显示),根据时间顺序排列会话和消息。
本节内容基本就是业务逻辑的开发,没有新增什么技术点,主要是前后端交互的逻辑比较复杂,前端的开发量也比较大。
## Schedule 5
### 新增点赞和点踩功能,使用Redis实现
首先了解一下redis的基础知识,数据结构,jedis使用等。
编写list,string,hashm,set,sortset的测试用例,熟悉jedis api。
开发点踩和点赞功能,在此之前根据业务封装好jedis的增删改查操作,放在util包中
根据需求确定key字段,格式是 like,entityType,entityId 和 dislike,entityType,entityId
将喜欢一条新闻的人存在一个集合,不喜欢的存在另一个集合。通过统计数量可以获得点赞和点踩数。
一般点�
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
毕业设计&课设&实战演练-Java 高校表白墙社交系统 (152个子文件)
mvnw.cmd 6KB
letter.css 430KB
index.css 311KB
result.css 302KB
detail.css 299KB
bootstrap.min.css 111KB
login.css 63KB
spinner2.8f60205d.gif 1KB
.gitignore 90B
header.html 10KB
profile.html 8KB
detail.html 8KB
feeds.html 7KB
index.html 6KB
followees.html 3KB
followers.html 3KB
login.html 3KB
result.html 2KB
letter.html 2KB
letterDetail.html 1KB
js.html 852B
login_exception.html 37B
footer.html 14B
maven-wrapper.jar 47KB
JedisAdapter.java 11KB
MultiThreadTests.java 8KB
FollowController.java 8KB
MessageController.java 4KB
QuestionController.java 4KB
IndexController.java 4KB
LoginController.java 4KB
FollowService.java 4KB
SensitiveService.java 4KB
UserService.java 3KB
FeedHandler.java 3KB
HomeController.java 3KB
EventConsumer.java 3KB
MailSender.java 3KB
SearchService.java 3KB
SearchController.java 2KB
InitDatabaseTests.java 2KB
CommentController.java 2KB
FeedController.java 2KB
LikeController.java 2KB
PassportInterceptor.java 2KB
WhitewallUtil.java 2KB
FollowHandler.java 2KB
LikeService.java 2KB
EventModel.java 2KB
MessageDAO.java 2KB
CommentDAO.java 2KB
LoginRequredInterceptor.java 1KB
RedisKeyUtil.java 1KB
LikeHandler.java 1KB
CommentService.java 1KB
QuestionService.java 1KB
Message.java 1KB
Comment.java 1KB
MessageService.java 1KB
Question.java 1KB
Feed.java 1KB
AddQuestionHandler.java 1KB
LoginExceptionHandler.java 1KB
User.java 1KB
LogAspect.java 1KB
QuestionDAO.java 983B
WhitewallWebConfigutation.java 923B
UserDAO.java 897B
LoginTicket.java 881B
SettingController.java 808B
LoginTicketDAO.java 794B
FeedDAO.java 738B
EventProducer.java 698B
FeedService.java 671B
WhitewallApplicationTests.java 510B
HostHolder.java 381B
ViewObject.java 328B
WhitewallApplication.java 318B
EventType.java 314B
WhitewallService.java 237B
EntityType.java 189B
EventHandler.java 177B
24.jpg 185KB
2.jpg 182KB
3.jpg 181KB
0.jpg 179KB
7.jpg 178KB
13.jpg 176KB
18.jpg 176KB
9.jpg 175KB
6.jpg 175KB
4.jpg 175KB
10.jpg 175KB
12.jpg 174KB
22.jpg 173KB
11.jpg 172KB
19.jpg 172KB
5.jpg 172KB
15.jpg 170KB
20.jpg 170KB
共 152 条
- 1
- 2
资源评论
白话Learning
- 粉丝: 4738
- 资源: 3126
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- HTML5实现好看的公寓房地产公司网站源码.zip
- HTML5实现好看的共享单车公司网站源码.zip
- HTML5实现好看的公司企业旅游巴士公司网站源码.zip
- HTML5实现好看的股票交易机构网页源码.zip
- HTML5实现好看的孤儿院慈善网站源码.zip
- HTML5实现好看的古宅建筑教育网站源码.zip
- HTML5实现好看的国家体育运动比赛网站源码.zip
- HTML5实现好看的广告创意策划公司网站源码.zip
- HTML5实现好看的国际婴幼儿启育机构网页源码.zip
- HTML5实现好看的海上石油钻井企业网站源码.zip
- HTML5实现好看的国内室内设计网站源码.zip
- HTML5实现好看的国外的儿童网站源码.zip
- python使用mysql基础教程
- NoSuchMethodException如何解决.md
- 非法操作异常解决办法.md
- TypeError.md
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功