个人博客系统项目(SpringBoot+Linux部署上线)

news2024/11/27 3:55:36

在学完SpringBoot框架、MyBatis后,直接开始做第一个项目:博客系统
首先,该博客系统包含核心功能有:
  一、登录、注册、退出登录功能。
  二、没有登陆前可以查看博客首页以及博客展示的分页处理,以及点击查看博客可以查看用户写的博客功能。
  三、用户登陆后进行写博客、修改博客、删除博客操作功能,并记录修改博客、写下博客的时间,记录写的博客数量。
  四、在为了保证用户账户安全情况下,进行用户密码登陆后MD5加盐处理。
  五、修改头像、增加访问量功能、
  六、以及统一数据的返回、统一异常处理、拦截器拦截接口、网页、文件包


  此项目由个人独立开发,包括前端、后端、数据库表的设计以及各种功能的设计。
  运用技术:
  前端:HTML、CSS、JavaScript、JQuery、Ajax
  后端:Java、SpringBoot、MyBatis
  数据库:MySQL
  部署服务器:Linux
  部署服务器所用工具:Xshell、Xftp
  后端接口设计测试工具:Postman
访问网站:http://110.41.154.247:8080/blog_list-self.html
开源代码:
下面是完成界面展示

登陆界面:

注册界面:

不登录情况下访问首页查看博客列表

在博客列表页查看某一篇博客

登录以后管理自己的博客列表页

里面包括修改头像、查看自己博客、删除自己博客、写博客、退出登录功能。

写博客页面:

修改博客页面



点击删除博客:


接下来介绍后端设计:

在设计后端架构上,主要分了这几层:

common 层:主要为了放一些拦截器类、统一数据返回类、统一异常处理、Session常量设置、密码MD5加盐处理、虚拟路径设置类。
model层:主要放用户类:userinfo、文章类:articleinfo
controller层:主要放相关前端访问的接口方法,包括UserController、ArticleController
mapper层:主要放用来连接MySQL的一些方法,与Mapper.xml与之对应
service层:主要放用来连接Controller和Mapper层的方法


逐个介绍每个层的作用和代码详情:
common层:

1. 拦截器设置:

先自定义拦截器需要拦截的接口和页面以及文件:


将自定义拦截器里面信息放入统一拦截器并加上注解:


2. 统一数据返回,自定义Result类,将失败、成功的结果进行封装统一返回:

将数据返回类注入Spring容器:


3.设置密码MD5 以及加盐处理,里面设置两个方法,第一个方法是将密码进行UUID加盐、然后调用DigestUtils类进行MD5加密且去除“ - ”字符后再拼接盐值得到一个64位字符串 ,随后设置decrypt进行密码校验,从数据库拿到finalpassword密码,与用户登陆时输入的密码进行比对,具体算法为:将finalpassword取前32位(MD5处理会生成32位字符串,UUID加盐也会生成32位字符串),然后结合用户传入的password进行拼接然后进行MD5处理,比对处理结果和finalword是否一致,如果一致则密码正确,否则密码错误!:


4. 虚拟路径设置:
将服务器上的路径进行虚拟处理,得到一个/path/** 的路径,以至于可以被前端img 的src进行超链接访问服务器里面的图片获取用户上传的图片,完成修改头像功能:
例如<img src = 127.0.0.1: 8080//path/xxx.png>就可以获得服务器上的图片,通过访问设置的虚拟地址。



前端设计:

前端设计几个页面,里面需要引入JQuery的包,而且将css和html拷贝到Resource里面的static里面:

前端主要的作用是将页面渲染出来,得到一个个提供给用户看的界面,主要使用JavaScript来进行操作,利用JQuery的Ajax进行post/get 的http请求 发送给后端,后端通过controller层的接口接受前端传入的相关数据,然后处理请求,再将数据传送给Service层,然后给mapper层,通过Mybatis与数据库进行连接,通过Sql语句将数据传送给数据库,最后数据库可以将结果以相同的方式从数据库到mapper再到service再到controller 再通过统一数据返回传送给前端页面,前端页面通过success / error 的function进行接收最后进行渲染到前端。
下图就是一个前端JS里面的ajax请求的例子,前端通过发送post的http请求,通过url路径为“/user/login” 给后端接口 传输数据为data,随后后端处理完以后通过success进行结果的接收,返回给前端的result结果,最后渲染。


部署上线:
这里需要修改项目几个东西:

1、需要修改连接数据库的jdbc语句,将127.0.01改成服务器的ip地址
2、需要将连接数据库的用户名和密码改成服务器上的,也就是云端服务器linux里面数据库的用户名和密码
3、需要将图片保存路径修改成服务器里面的目录,将用户上传的图片保存在服务器 例如 :  D:xxx/xx改成 linux里面的目录:/root/xxx 
4、需要将虚拟路径进行修改,将虚拟路径为 /path/** 指向服务器里面的目录路径

部署需要用到云服务器,这里作者在华为云租了一个云端服务器,然后通过开放8080、3306端口,然后通过Xshell 、XFTP 进行部署,这里将maven打包好的jar后缀java文件通过xftp拖拽到远程云端服务器的目录下。
在这之前,需要在linux服务器里面先下载相关环境:JDK1.8、MariaDB,随后将sql文件通过Xftp传到linux目录下,通过source / root / xxx.sql进行执行,得到两个数据表,随后通过nohup java -jar xxx.jar &将项目部署在后台执行,遂可以通过网址访问制作好的项目。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1587475.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

10个大型语言模型(LLM)常见面试问题和答案解析

今天我们来总结以下大型语言模型面试中常问的问题 1、哪种技术有助于减轻基于提示的学习中的偏见? A.微调 Fine-tuning B.数据增强 Data augmentation C.提示校准 Prompt calibration D.梯度裁剪 Gradient clipping 答案:C 提示校准包括调整提示&#xff0c;尽量减少产生…

g4f姊妹篇:g4l gpt4local面世拉!

众所周知g4f很强&#xff0c;安装具体见&#xff1a;gpt4free带来了更好的chatgpt体验&#xff01;-CSDN博客 可喜的是&#xff0c;现在它的姊妹篇&#xff0c;gpt4local也面世拉&#xff01;g4l 是一个高级 Python 库&#xff0c;允许您使用 llama.cpp 绑定运行语言模型。它是…

服务器挖矿病毒解决ponscan,定时任务解决

服务器挖矿病毒解决ponscan&#xff0c;定时任务解决 挖矿病毒会隐藏chattr的操作权限&#xff0c;让我们无法删除病毒文件&#xff0c;杀掉病毒进程。所以要去下载chattr.c的文件&#xff0c;编译成a.out。然后再对原来的chattr文件的权限进行修改。然后覆盖掉它。 chattr.c …

http请求头导致了dial tcp:lookup xxxx on 10.43.0.10:53 no sunch host

事实证明人有的时候也不能太偷懒&#xff0c;太偷懒容易给自己埋坑。 问题的背景&#xff1a; web端调用服务A&#xff0c;服务A异步调用服务B。服务A有四个场景需要调用服务B&#xff0c;所以&#xff0c;服务A中封装了一个公用的方法&#xff0c;唯一的区别是&#xff0c;场…

【how2j练习题】HTML DOM部分阶段练习

练习1 <!-- 验证账号是否已经存在 那么就在js使用简单的验证规则&#xff1a; 如果账号是以a或者A开头的&#xff0c;那么就提示已经存在了。 --> <!-- 1.需要一个输入框和一个按钮 2.按钮上绑上一个事件。 3.编写事件&#xff0c;并输出答案 --><html><…

模拟移动端美团案例(react版)

文章目录 目录 概述 项目搭建 1.启动项目&#xff08;mock服务前端服务&#xff09; 2.使用Redux ToolTik(RTK)编写store(异步action) 3.组件触发action并渲染数据 一、渲染列表 ​编辑 二、tab切换类交互 三、添加购物车 四、统计区域功能实现 五、购物车列表功能实现 六、控制…

软考高级架构师:数据库模式概念和例题

一、AI 讲解 数据库模式分为三个层次&#xff1a;外模式、概念模式和内模式。这三个层次分别对应不同的抽象级别&#xff0c;帮助数据库管理员和用户以不同的视角理解数据库结构。 外模式&#xff08;用户级&#xff09;&#xff1a;是数据库用户的视图。每个用户可以通过外模…

VMware导出虚拟机vmkd格式转换qcow2

VMware虚拟机导出qcow2格式可以上传至云服务 1、需要导出的虚拟机 2、克隆虚拟机 3、选择克隆源 4、创建完整克隆 5、完成 6、找到VMware安装路径 7、找到vmware-vdiskmanager所在路径使用cmd或Windows PowerShell进入目录 进入vmware-vdiskmanager目录 cd F:\软件\VMware Wo…

路由器如何端口映射到外网?

随着互联网的发展和普及&#xff0c;远程访问已经成为了现代社会的一个重要需求。在复杂的网络环境下&#xff0c;特别是涉及异地组网的情况下&#xff0c;实现远程访问变得更加困难。本文将介绍一种名为【天联】的组网产品&#xff0c;它可以解决复杂网络环境下的远程连接问题…

【漏洞复现】潍微科技-水务信息管理平台 ChangePwd SQL注入漏洞

0x01 产品简介 潍微科技-水务信息管理平台主要帮助水务企业实现水质状态监测、管网运行监控、水厂安全保障、用水实时监控以及排放有效监管,确保居民安全稳定用水、环境有效保护,全面提升水务管理效率。 0x02 漏洞概述 潍微科技-水务信息管理平台 ChangePwd 接口存在SQL注…

回顾C语言基础:九九乘法表

题目要求:LintCode 先把基本的写出来&#xff0c;为了看起来有个大概有个样子&#xff08;1&#xff09;每行换行&#xff1b;&#xff08;2&#xff09;输出结果4个空格&#xff0c;左对齐(%-5d)&#xff1a; 关于%-d的知识&#xff1a;是右对齐&#xff0c;-是左对齐&…

【域适应】基于深度域适应MMD损失的典型四分类任务实现

关于 MMD &#xff08;maximum mean discrepancy&#xff09;是用来衡量两组数据分布之间相似度的度量。一般地&#xff0c;如果两组数据分布相似&#xff0c;那么MMD 损失就相对较小&#xff0c;说明两组数据/特征处于相似的特征空间中。基于这个想法&#xff0c;对于源域和目…

实况窗助力美团打造鸿蒙原生外卖新体验,用户可实时掌握外卖进展

自2023年华为宣布全新HarmonyOS NEXT蓄势待发&#xff0c;鸿蒙原生应用全面启动以来&#xff0c;已有金融、旅行、社交等多个领域的企业和开发者陆续宣布加入鸿蒙生态。其中&#xff0c;美团作为国内头部的科技零售企业&#xff0c;是首批加入鸿蒙生态的伙伴&#xff0c;其下的…

华为ensp中PPPOE (点对点协议)原理和配置命令

作者主页&#xff1a;点击&#xff01; ENSP专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年4月12日6点30分 PPPoE&#xff08;PPP over Ethernet&#xff09;是一种将PPP协议封装到以太网帧中的链路层协议。它可以使以太网网络中的多台主机连接到远端的宽带接…

【应用】SpringBoot-自动配置原理

前言 本文简要介绍SpringBoot的自动配置原理。 本文讲述的SpringBoot版本为&#xff1a;3.1.2。 前置知识 在看原理介绍之前&#xff0c;需要知道Import注解的作用&#xff1a; 可以导入Configuration注解的配置类、声明Bean注解的bean方法&#xff1b;可以导入ImportSele…

AtCoder Beginner Contest 141 F. Xor Sum 3(异或性质+异或线性基求最大异或值)

题目 n(2<n<1e5)个数&#xff0c;第i个数ai(0<ai<2^60) 将n个数分成两堆&#xff0c;对每一堆求异或和&#xff0c;再将得到的两个数求和&#xff0c; 现在希望这个和最大&#xff0c;输出这个最大的值 思路来源 ABC141F - 洛谷专栏 题解 感觉思路来源说的很…

再说vue响应式数据

请说一下你对响应式数据的理解 如何实现响应式数据据 对象 vue2 响应式核心代码 数组 vue2 处理缺陷Vue3则采用 proxy - vue3 响应式核心代码 请说一下你对响应式数据的理解 如何实现响应式数据据 数组和对象类型当值变化时如何劫持到。 对象 对象内部通过defineReactive方…

mysql重启失败

服务器重启了一下&#xff0c;然后启动后发现mysql自动启动没有生效&#xff0c;于是手动通过systemctl启动mysqld&#xff0c;然后就报错:Starting MySQL...........The server quit without updating P[FAILED](/data/mysql/iz2zebvmy1qv3fao9c5riuz.pid). 根据配置my.cnf文…

Hello 算法10:搜索

https://www.hello-algo.com/chapter_searching/binary_search/ 二分查找法 给定一个长度为 n的数组 nums &#xff0c;元素按从小到大的顺序排列&#xff0c;数组不包含重复元素。请查找并返回元素 target 在该数组中的索引。若数组不包含该元素&#xff0c;则返回 -1 。 # 首…

Ubuntu下配置Android NDK环境

Android-NDK的下载 下载Android-NDK wget -c http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.bin 执行bin文件&#xff08;即解压&#xff09; ./android-ndk-r10c-linux-x86_64.bin Android-NDK的配置 要想使用Android-NDK&#xff0c;还需要进行环境变量…