spring boot之从零开始开发自己的网站

概述

  • 首先要感谢两位大神,该项目的想法来源自taleMyBlog,本项目的想法。
  • 做了一些改造,增加了一些功能和一些代码的重构,并且更换了博客主题。
  • 关于项目,对于开发的练手项目,能够工程化,严谨一些。
  • 关于文档,本文主要中从项目需求,项目设计的方式来阐述.
  • 如何从零开始,使用springboot开发项目。
  • 记录一些在开发过程中遇到的一些问题,总结开发技巧

接下来,会以需求和设计方式来阐述

效果图

首页展示

文章编辑

文章管理

项目需求

项目背景

对于刚学习springboot的同学,最好的就是拿一个项目练练手。在编码过程中遇到的问题并解决,这都是宝贵的经验。 用springboot开发的博客系统,简单而且实用,适合做练手项目。

功能需求

界面需求

主页

  • 博客汇总,以列表加图片的形式展示
  • 能够以分类的方式查看文章
  • 能够以时间列表的方式归档文章
  • 个人介绍,github地址
  • 搜索框,能够搜索文章

后台管理

  • 管理主页,记录最新文章,最新留言,最近日志等

    • 最近日志记录登录IP,地址,操作等
    • 记录一天的访问量
  • 发布文章
    • 使用markdown编辑器,支持插入代码,插入图片等功能
    • 能够给文章添加缩略图。
    • 可将文章存为草稿或者发布
    • 文章可选择分类和标签,自定义url
    • 文章可控制是否允许评论
  • 文章管理
    • 以列表形式展示文章信息
    • 在可选操作中增加删除,预览,编辑功能
    • 支持分页显示
    • 增加搜索功能,可根据文章名文章信息
  • 分类管理
    • 可以新增、删除、修改分类
  • 文件管理
    • 支持文件上传
    • 支持删除已上传的文件
  • 友情链接
    • 支持增加友情链接
    • 支持删除友情链接
  • 系统设置
    • 支持修改密码
    • 支持备份数据库
    • 支持黑名单配置

非界面需求

  • 日志记录,记录来访IP名单
  • 每天定时备份数据库

安装部署需求

  • 可以使用docker方式部署,也可支持-jar方式
  • 使用springboot自带方式打包

非功能性需求

性能需求

  • 首页响应的时间不超过1秒钟
  • 文章页响应时间不超过1秒钟

项目设计

总体设计

  • 本项目用到的技术和框架

    • 项目构建: maven
    • web框架:spring boot
    • 数据库ORM:mybatis
    • 数据库连接池:Druid
    • 分页插件:PageHelper
    • 数据库:mysql
    • 缓存NOSQL:redis
    • 前段模板:thymeleaf
    • 文章展示:使用commonmark,将markdown转成html页面
  • 本项目的关键点
    • 采用springboot开发,数据库使用连接池加orm框架的模式,对于系统的关键业务使用redis缓存,加快响应速度
    • 整体系统采用门户网站+后台管理的方式搭建,门户主要展示博客内容,后台管理主要用于编辑文章,上传附件,控制黑名单登录等。
  • 环境

结构设计

熟悉spring开发的同学,相信对此结构图也并不陌生。平时的开发过程中,结构设计是重要的缓解,特别是协作开发的时候,明细的分包,模块化,可减少在git提交时的冲突。

业务设计

本模块主要介绍一些关键的业务流程。

  • 发布文章流程:

  • 修改文章的流程大致上和发布是相似的,这里不再赘述了
  • 登录流程

文件上传

  • 在写文章的时候,通常会使用到图片,可以引用一些网络上的图片,更好的是本系统支持上传文件和图片
  • 将文件区别为图片和其他,图片支持预览模式
  • 文件路径设计成绝对路径,在web系统中可直接引用
  • 文件按月份归类,文件名以uuid的重新命名存储
  • 其他文件支持下载
  • 文件上传流程图

  • 首页展示

    • 首页也文章列表+图片的形式展示内容,默认最大显示12篇文章,包括发布时间和分类
    • 上部展示菜单栏,支持搜索,归档页等功能
    • 右侧显示菜单栏,展示个人github地址,个人信息,标签云等
    • 使用redis缓存首页的html页面,加速访问。

打包、部署和运行

  • 本项目采用springboot的maven插件进行打包,打成jar形式
  • 部署方式:使用**nohub java -jar xxx.jar &**的方式,启动项目

数据设计

用户表:t_users

用户表主要管理后台管理用户。

文章表:t_contents

主要管理文章内容,外键为cid

标签表:t_metas

管理标签信息,外键为mid

文章标签关系表:t_relationships

记录文章和分类的关系,多对多表

性能与可靠性

性能设计

  • 将文章内容写入redis中,加快访问速度

可靠性设计

  • 后台管理,可以系统日志,查看系统运行状态
  • 定时发送邮件,发送服务端的可用内存,cpu,最新日志,硬盘情况进行监控
  • 对于恶意的IP,支持黑名单设置,禁止访问

开发流程

数据库的curd

  • 首先,编写sql语句,创建数据库。
  • 本项目的crud操作采用mybatis的逆向功能,对于特殊操作,需要自己手写sql语句
  • springboot如何使用mybatis,以及mybatis的逆向工程,请参考springboot与mybatis
  • 编写service层,根据需求分析和概要设计,将具体业务转成具体代码
  • 关于事务的使用,使用srping中的@Transactional,还是很方便的
  • 本流程的开发不是特别难,关键在于业务的实现

页面与展示

  • 作为一个后端开发,css的功力还是有所欠缺的,所以也是用了妹子UI主题,和tale的后端页面,大大减少了页面的开发难度,特此感谢
  • 页面与后端的交换主要是在controller包中,springboot的页面开发和springmvc是几乎一样的,@PostMapping和@GetMapping这两个注解也是方便了开发。
  • 统一的异常处理,使用@ControllerAdvice,定义异常页面,设置自动跳转500,404页面。
  • 拦截器,获取http请求中的ip,判断是否在黑名单(如果在,则禁止访问系统)

其他功能

  • 该项目是在My blog基础上修改的,修复了部分bug,增加添加黑白单功能,指定文章缩略图
  • 分析访问量最多的数据,主要在于文章访问部分,将文章放入redis缓存。每次编辑完文章后,更新缓存
  • 每天定时发送邮件,汇报服务器运行状态和最新日志,手机即可查看。

系统安全

  • 使用阿里云云主机,借助阿里云本身防护机制,
  • 在主机中安装denyhosts,对于尝试暴力破解ssh的IP,实施封禁
  • 对于评论部分,能够抵御sql注入和xss攻击

打包测试

  • 使用springboot本身测试方式,在集成测试之前,先进行单元测试
  • 打包,使用springboot的mvn插件,打成jar包

网站建设

  • 服务器选用的是阿里云centos7
  • 域名是腾讯送的
  • 网站需要备案,备案的话,只要按照阿里云提示的流程走,就可以了,就是上传个人身份信息,和审核,大概需要一个月的时间

开发总结

网站地址

www.janti.cn

项目代码

喜欢的话,给个推荐,给个star鼓励一下

原文地址:https://www.cnblogs.com/superfj/p/9044532.html

时间: 2024-10-08 05:41:21

spring boot之从零开始开发自己的网站的相关文章

Spring Boot和JPA开发的一些坑

最近新的项目API接口基于Spring Boot和JPA开发,做了几天的学习和预研,发现使用Spring Boot开发效率上确实比较高,但也碰到了一些小坑,特别记录下. 配置文件问题 ,默认只要一个配置文件application.properties,不要再想ApplicationContent.xml等spring的配置文件了 logback配置文件路径问题,使用绝对路径读取没问题,基于classpath路径则读取不到 ,这个问题有待进一步解决 Spring-boot不能扫描到启动函数包外的b

Spring Boot 企业级应用开发实战

Spring Boot 企业级应用开发实战[下载地址:https://pan.baidu.com/s/1SbB-auGkUN6r2i6dtv7t_w ] Spring Boot是目前Spring技术体系中炙手可热的框架之一,既可用于构建业务复杂的企业应用系统,也可以开发高性能和高吞吐量的互联网应用.Spring Boot框架降低了Spring技术体系的使用门槛,简化了Spring应用的搭建和开发过程,提供了流行的第三方开源技术的自动集成. Spring Boot是由Pivotal团队提供的全新框

Spring Boot 企业级应用开发实战 刘伟东-2018年3月第一版

Spring会自动搜索某些路径下的Java类 并将这些类注册微Bean实例,这样就省去了所有Bean都配置在XML的麻烦 Spring会适当地将显示指定路径下的的类全部注册微Spring Bean . Spring通过使用特殊的注解来标注Bean类 @Component 标注一个普通的Spring Bean类 @Controller 标注一个控制器组件类 @Service 标注一个服务组件类 @Repository 标注一个仓库组件类 甚至SQL语句也可以注解 Spring Boot是伴随着Sp

毕设利器 SSM到Spring Boot 从零开发校园商铺平台

第1章 开发准备本章包含课程介绍,同时讲解开发网站所需要准备的事情,并且带领大家从零开始搭建一个Maven Web. 第2章 项目设计和框架搭建本章主要先带领大家过一遍项目1.0的大致功能点,并依据功能点划分,设计出合理的实体类以及表来.此外,本章还要完成搭建SSM框架底子的任务,并从后到前完成一个功能点的Dao.Service.Controller的开发与UT验证 第3章 Logback配置与使用本章将讲解logback相关的配置,并验证,运用到程序当中 第4章 店铺注册功能模块本章将开始项目

Spring Boot的web开发

Web开发的自动配置类:org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration 1.1. 自动配置的ViewResolver 视图的配置mvcProperties对象中: org.springframework.boot.autoconfigure.web.WebMvcProperties.View 1.2. 自动配置静态资源 1.2.1.   进入规则为 / 如果进入SpringMVC的规则为/时,Spring Bo

第二章-spring boot springDataJPA快速开发DAO层,junit测试

一.简介 第一章介绍了spring boot简单入门,这一章介绍一下如何通过springDataJPA快速实现DAO层开发. 二.环境 1. jdk1.8 2. springboot 1.5.9.RELEASE 3. apache maven(3.5.0) 4. 开发工具(IntelliJ IDEA ) 三.步骤 1)通过idea file->new project->Spring Initializr 创建项目,选中web->web,sql->JPA.MySQL.       

Spring Boot 前后端开发系统 视频教程

第1章 Spring Boot 简介 1-1 Spring Boot 博客_课程导学 1-2 Spring Boot 是什么第2章 开启 Spring Boot 的第一个 Web 项目 2-1 -初始化第一个Web项目 2-2 -用Gradle编译项目 2-3 -探索项目第3章 一个Hello World项目 3-1 编写项目构建信息 3-2 自定义存储库,加速构建 3-3 编写程序代码及测试用例 3-4 配置Wrapper,运行程序第4章 开发环境的搭建 4.1-4.2 IDE及插件的安装配置

Spring Boot 针对 Java 开发人员的安装指南

Spring Boot 可以使用经典的开发工具或者使用安装的命令行工具.不管使用何种方式,你都需要确定你的 Java 版本为 Java SDK v1.8 或者更高的版本.在你开始安装之前,你需要确定你当前安装的 Java 版本满足系统运行的需要. 你可以使用下面的命令进行查看: $ java -version 如果你是 Java 项目开发的新手或者你希望实践使用 Spring Boot.你应该使用 Spring Boot 命令行工具(Spring Boot CLI),否则的话,请阅读有关经典安装

Spring Boot 整合 Web 开发

这一节我们主要学习如何整合 Web 相关技术: Servlet Filter Listener 访问静态资源 文件上传 文件下载 Web三大基本组件分别是:Servlet,Listener,Filter.正常来说一旦我们用了框架,这三个基本就用不上了,Servlet 被 Controller 代替,Filter 被拦截器代替.但是可能在一些特殊的场景下不得不使用这三个基本组件时,Spring Boot 中要如何去引用呢?下面我们来一起学习一下. Spring Boot 集成了 Servlet 容