Java基于SpringBoot的牛客网社区项目实现详解(上)
上传篇幅有限,因此分为上下两部分,完整从零介绍牛客网项目的创建。不涉及到代码层面,仅介绍搭建逻辑过程。
文章目录
项目简介:初识Spring Boot,开发牛客网社区首页。
项目包功能介绍
community
-
.idea
-
.mvn
-
src
(1) main
java (文件夹)
com.nowcoder.community (package) //用于存放项目的一些bean包
annotation(package) //存放自定义注解
aspect(package) //存放AOP面向切面测试组件
config (package) //存放配置类,装配第三方bean时不能进入到其里
面类上加注解,此时通过配置类bean注解进行声明
controller (package) //存放视图层模块,具体的处理请求
entity (package) //存放实体类,用于封装表里的数据
dao (package) //数据访问层,用于存放访问数据库的bean(接口)
event(package) //存放消息事件的生产者和消费者
quartz(package) //存放quartz定时任务
service (package) //业务组件,处理一些具体的业务
util(package) //存放静态的配置类
CommunityApplication (class)
resources (文件夹) //用于存放配置文件以及静态资源
mapper (package) //数据访问组件mapper接口
static (package) // 存放网页依赖的静态图片、样式、JS等等
templates (package) // 存放网页模板(动态)
application.properties // 配置文件
logback-spring.xml //日志配置文件
(2) test
java
com.nowcoder.community (package)
CommunityApplicationTests (class)
External Libraries // 外在依赖包
一、搭建开发环境
1. 技术架构
• Spring Boot
• Spring、Spring MVC、MyBatis
• Redis、Kafka、Elasticsearch
• Spring Security、Spring Actuator
2. 开发环境
• 构建工具:Apache Maven
• 集成开发工具:IntelliJ IDEA
• 数据库:MySQL、Redis
• 应用服务器:Apache Tomcat
• 版本控制工具:Git
3. 搭建过程
(1)安装Apache Maven
http://maven.apache.org(安装) https://mvnrepository.com/(Maven仓库)
(2)安装IntelliJ IDEA http://www.jetbrains.com/idea(安装)
(3)安装MySql Server https://dev.mysql.com/downloads/mysql
安装MySQL Workbench https://dev.mysql.com/downloads/workbench
(4)使用Spring Initializr 创建“牛客社区”项目 https://start.spring.io
(5)解压缩下载的文件到文件夹即可得到初始化的包了。
二、开发社区网首页
1. 首先开发步骤(开发的三层架构)
(1) 首先开发 DAO 数据访问层,用于存放访问数据库的bean,再开发数据访问组件 mapper 。在开发 DAO 的过程中,首先在 dao 包下的 entity 中新建一个类(DiscussPost)用于存放表中的字段;有了实体类之后,就可以开发 mapper ,通常是一张表一个mapper,首先 在dao 包下创建一个接口(DiscussPostMapper, 注:在接口前面加上@Mapper,这样该接口就能被容器扫描这个接口,才能自动地去实现它和装配它),接口中封装的是针对表的增删改查等等功能的java语句(注:@Param注解用于给参数取别名。如果只有一个参数,并且在里使用,则必须加别名);接下来给 mapper 创建一个配置文件,在 resources 的 mapper 目录下创建 .xml 文件(discusspost-mapper.xml),里面存放着表中的字段,以及执行相关表操作的对应SQL语句。这样整个 DAO 数据访问层就构建好了!
(2) 接下来就可以开发 Service 业务层了,开发的时候它会调用 DAO 数据访问层。首先在项目的 service 包下创建一个业务组件(DiscussPostService, 注:这里同样在类前加一个@Service注解,好让容器访问到,与上面的@Mapper同理),这里面service里面写的是调用mapper方法。
(3) 视图层中的东西我们也可以基于 Service 业务层给它实现了,首先将一些静态资源(css:样式文件,img:静态图片,js)置于 resources 的 static 目录下;把 site:其他页面、index.hxml :主页、以及我们牛客社区的收发邮件的模板置于 templates 目录下;开发视图层,首先我们需要先开发 controller ,在controller 包下新建一个controller(HomeController, 注:前面同样加上@Controller注解),controller 在处理请求时需要调用 Service ,因此需要把一些Service加进去,接下来再将处理请求的方法加入到 controller 文件中(如:getIndexPage等);接着根据 controller 中指定的网页页面(index.html),修改其中的内容功能(这里使用的是 thymeleaf 模板引擎)。
三、发送邮件
1. 配置邮箱
在 application.properties 配置文件中加入邮件配置。
# MailProperties
spring.mail.host=smtp.sina.com
spring.mail.port=465
spring.mail.username=hzqiang0926@sina.com
spring.mail.password=b657a198bd1500f0
spring.mail.protocol=smtps
spring.mail.properties.mail.smtp.ssl.enable=true
2. 使用spring mail实现功能
创建一个包 util 专门存放工具类 MailClient ,工具类中包含有发送邮件的方法(sendMail),在 test 中对该类进行测试(MailTests)。
四、开发注册功能
同样是开发的三层架构的顺序进行开发。
1. 访问注册页面
(1)为注册页面在 controller 下创建一个新的类 LoginController , 同样在类名前面加上@Controller注释,接着使用templates 的site 中的注册页面模板(register.html),这里需要对其内容进行修改: