精华内容
下载资源
问答
  • 个人博客项目
    千次阅读
    2022-03-30 14:58:13

    我的Blog项目

    一、项目简介

    1、技术

    (1)、后端:SpringBoot + Mybatis-plus + redis + mysql

    (2)、前端:Vue

    2、项目讲解说明

    1. 提供前端工程,只需要实现后端接口即可

    2. 项目以单体架构入手,先快速开发,不考虑项目优化,降低开发负担

    3. 开发完成后,开始优化项目,提升编程思维能力

    4. 比如页面静态化,缓存,云存储,日志等

    5. docker部署上线

    6. 云服务器购买,域名购买,域名备案等

    二、前端工程搭建

    下载 Hbuilder X

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1iEBCfx1-1648623470553)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20220324134721655.png)]

    在软件中运行以下命令:

    npm install
    npm run build
    npm run dev
    

    三、后端工程搭建

    1、 新建maven工程

    1.1 父工程blog-parent

    pom.xml:

    <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter</artifactId>
                    <!-- 排除 默认使用的logback  -->
                    <exclusions>
                        <exclusion>
                            <groupId>org.springframework.boot</groupId>
                            <artifactId>spring-boot-starter-logging</artifactId>
                        </exclusion>
                    </exclusions>
                </dependency>
    
                <!-- log4j2 -->
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-log4j2</artifactId>
                </dependency>
    
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-aop</artifactId>
                </dependency>
    
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-mail</artifactId>
                </dependency>
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-web</artifactId>
                </dependency>
    
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-test</artifactId>
                    <scope>test</scope>
                </dependency>
    
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-data-redis</artifactId>
                </dependency>
    
    
                <dependency>
                    <groupId>com.alibaba</groupId>
                    <artifactId>fastjson</artifactId>
                    <version>1.2.76</version>
                </dependency>
    
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                </dependency>
    
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-configuration-processor</artifactId>
                    <optional>true</optional>
                </dependency>
    
                <dependency>
                    <groupId>org.apache.commons</groupId>
                    <artifactId>commons-lang3</artifactId>
                </dependency>
    
                <dependency>
                    <groupId>commons-collections</groupId>
                    <artifactId>commons-collections</artifactId>
                    <version>3.2.2</version>
                </dependency>
                <dependency>
                    <groupId>commons-codec</groupId>
                    <artifactId>commons-codec</artifactId>
                </dependency>
    
                <dependency>
                    <groupId>com.baomidou</groupId>
                    <artifactId>mybatis-plus-boot-starter</artifactId>
                    <version>3.4.3</version>
                </dependency>
                <dependency>
                    <groupId>org.projectlombok</groupId>
                    <artifactId>lombok</artifactId>
                </dependency>
                <dependency>
                    <groupId>joda-time</groupId>
                    <artifactId>joda-time</artifactId>
                    <version>2.10.10</version>
                </dependency>
                <dependency>
                    <groupId>io.jsonwebtoken</groupId>
                    <artifactId>jjwt</artifactId>
                    <version>0.9.1</version>
                </dependency>
    
                <dependency>
                    <groupId>com.qiniu</groupId>
                    <artifactId>qiniu-java-sdk</artifactId>
                    <version>[7.7.0, 7.7.99]</version>
                </dependency>
                <dependency>
                    <groupId>com.github.ulisesbocchio</groupId>
                    <artifactId>jasypt-spring-boot-starter</artifactId>
                    <version>2.1.1</version>
                </dependency>
            </dependencies>
        </dependencyManagement>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    

    1.2 子工程模块blog-api

    pom.xml:

    (可将不带版本的依赖去掉,避免重复引入)

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.mszlu</groupId>
        <artifactId>blog-parent</artifactId>
        <version>1.0-SNAPSHOT</version>
    
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.5.0</version>
            <relativePath/>
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
                <!-- 排除 默认使用的logback  -->
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    
            <!-- log4j2 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-log4j2</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-aop</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-mail</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
            </dependency>
    
    
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.76</version>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
            </dependency>
    
            <dependency>
                <groupId>commons-collections</groupId>
                <artifactId>commons-collections</artifactId>
                <version>3.2.2</version>
            </dependency>
    
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.4.3</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
            <!-- https://mvnrepository.com/artifact/joda-time/joda-time -->
            <dependency>
                <groupId>joda-time</groupId>
                <artifactId>joda-time</artifactId>
                <version>2.10.10</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    

    2 、配置文件

    2.1 application.properties

    在resources中新建application.properties

    #server
    server.port= 8888
    spring.application.name=ling_blog
    # datasource
    spring.datasource.url=jdbc:mysql://localhost:3306/blog?useUnicode=true&characterEncoding=UTF-8&serverTimeZone=UTC
    spring.datasource.username=root
    spring.datasource.password=123456
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    
    #mybatis-plus
    mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
    mybatis-plus.global-config.db-config.table-prefix=ms_
    
    

    2.2 配置类

    新建包com.ling.blog.config、com.ling.blog.dao , 在config包下新建配置类

    package com.ling.blog.config;
    
    import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
    import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    //扫包,将此包下的接口生成代理实现类,并且注册到spring容器中
    @MapperScan("com.mszlu.blog.dao")
    public class MybatisPlusConfig {
    	//分页插件
        @Bean
        public MybatisPlusInterceptor mybatisPlusInterceptor(){
            MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
            interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
            return interceptor;
        }
    }
    
    
    package com.mszlu.blog.config;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.CorsRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    
    @Configuration
    public class WebConfig  implements WebMvcConfigurer {
    
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            //跨域配置,不可设置为*,不安全, 前后端分离项目,可能域名不一致
            //本地测试 端口不一致 也算跨域
            registry.addMapping("/**").allowedOrigins("http://localhost:8080");
        }
    }
    

    2.3 SpringBoot启动类

    package com.ling.blog;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class BlogApp {
    
        public static void main(String[] args) {
            SpringApplication.run(BlogApp.class,args);
        }
    }
    
    更多相关内容
  • 个人博客项目

    千次阅读 2020-05-18 17:17:04
    项目功能描述: 主要分为4大功能模块,用户登录功能,文章评论功能,发布和修改文章功能,文章分类。登录首页之后可以查看所有文章的信息,但是此时只能查看,不能修改。如果想要对文章进行操作,就需要用户登录...

    一.项目功能描述:

    主要分为4大功能模块,用户登录功能,文章评论功能,发布和修改文章功能,文章分类。登录首页之后可以查看所有文章的信息,但是此时只能查看,不能修改。如果想要对文章进行操作,就需要用户登录(利用数据库保存的用户名和密码)。用户登陆之后可以对文章进行评论,发布新的文章,修改和删除已经发布的文章,创建和删除新的文章类型。

    二.项目流程

    首先在输入url,根据不同的url调用后台 Controller 中的方法,Controller 中的方法再调用 Servise 逻辑层中的方法,Service 中的方法调用 mapper 中接口的方法,利用AOP技术会自动生成这些接口的代理类,这些代理类与数据库的 xml 文件关联,直接操作数据库,并将数据最终返回给 Controller 业务处理层。Controller 中的方法在处理完当前 url 任务后,把返回的信息传递给 FreeMarker 模板中,并渲染出指定的 html 页面。

    三.技术栈

    Spring: 是一套 Java 开源框架家族,以 Ioc 和 AOP 最为核心。
    SpringWebMVC: Spring 家族中基于 Servlet 构建的一套 Web 开发框架。
    SpringBoot: Spring 家族中简化 Spring 开发配置的开发框架。
    IoC: IOC是Inversion of Control的缩写,多数书籍翻译成“控制反转”。简单来讲,就是对象界的淘宝,把对象的生 产和使用分离。买家只需要关心使用对象,不关心对象具体怎么来的。
    DI: Dependency Injection 依赖注入,可以简单认为就是 IoC,指的是使用对象的时候会有快递小哥把对象送上。 至于对象哪来的,快递小哥哪来的,我们都不需要关心。
    AOP: Aspect Oriented Programming的缩写,面向切面编程的意思。把程序的运行过程想象成一段一段的环节组 成,可以通过不修改代码的方式,方便的在这些段落前后加入新的功能。
    MVC: Model/View/Controller 模型/视图/控制器 是一种常见的设计层级关系。 Service: 一种设计层级,一般用来组织业务模型。
    DAO: Database Access Object,一种设计层级,一般指访问数据库的这层模型。 Freemarker: 一种 View 的技术,除此之外,可以直接使用 JSP 或者 Thymeleaf。 Mybatis: 一种 DAO 的技术。
    POJO: POJO(Plain Ordinary Java Object)简单的Java对象,不需要实现、继承任何的接口或者类的对象。

    四.项目实现

    1.创建数据库表

    (1)在数据库中创建四张表,分别是文章表,用户表,文章分类表,文章评论表。
    (2)在 IDEA 中生成这四张表对应的实体类。

    2.业务处理层(Controller)

    (1)用户登录到首页之后看到所有文章的信息,创建一个文章首页的方法。并且返回到index页面,通过index页面显示文章详情。
    在这里插入图片描述

    (2)当用户需要对文章进行操作时,需要进行用户登录操作,一次需要创建一个方法处理用户登录。在用户登录时获取用户名和密码与数据库中的信息比对,如果不一致则还是返回登录页面,如果登录成功,则用 session 保存用户的信息。
    在这里插入图片描述
    (3)用户在登陆之前需要对非法的路径进行拦截,因此需要创建一个拦截器。
    在这里插入图片描述
    (4)用户登录之后可以对文章进行评论,或者删除文章的某些评论。其中添加完评论和删除评论后重定向到文章评论界面。
    在这里插入图片描述
    (5)用户登陆之后可以发布,修改和删除文章。首先在根据用户的id找到用户的文章,然后用户在自己的文章中进行操作。首先用户进入到 /writer界面并显示所有用户的文章,其次再进行文章的操作。
    在这里插入图片描述
    (6)新建和删除文章类型的操作也是在用户登陆之后才可以完成。操作时需要获取当前用户的信息,这些信息在用户登录时已经保存到 session 中。当新建和删除文章分类后都重定向到 /write 页面。
    在这里插入图片描述

    3.业务逻辑层(Servise)

    业务逻辑层是联系 Controller 层和 mapper 接口的中间层。它主要起到连接作用,当 Controller 类需要数据库的数据时,Controller 类的方法调用 Service 类中的方法,而 Service 类中方法直接调用 mapper 接口中的方法。针对文章,用户,分类和评论 Service 层也分为了四个类。下面以 ArticleService 类为例:
    在这里插入图片描述

    4. Mybaties操作数据库

    使用 Mybaties 的时候,需要使用 xml 文件来执行 SQL 语句,因此针对数据库中的四个表,生成了对应的四个 xml 文件来执行具体的 SQL 语句。下面以 UserMapper.xml 为例:
    在这里插入图片描述

    5.前端的页面(FreeMarker)

    前端界面主要由5个部分,分别为:
    (1)index文件,该文件的作用是显示项目首页的内容,也就是用户还未登录时的文章信息。
    (2)login文件,该文件的作用是进行用户的登录操作。
    (3)info文件,该文件的作用是显示文章的评论,主要针对评论的添加和删除。
    (4)editor文件,该文件显示针对文章操作的首页界面,当针对文章进行具体操作时,就跳转到 write 文件。
    (5)write文件,该文件的作用是显示针对文章的操作。针对文章的添加,修改或者删除操作跳转到不同的url。
    (6)error文件,当出现错误时,直接在后台的控制器中查看错误比较麻烦,借助 error 文件可以把后台的错误信息显示到页面中。

    五.界面展示

    1.项目首页

    在这里插入图片描述

    2.登录界面

    在这里插入图片描述

    3.用户登录后的界面

    在这里插入图片描述

    4.文章评论界面

    在这里插入图片描述

    5.文章分类和文章界面

    在这里插入图片描述
    项目源码:https://github.com/YTCfight/blog-Spring/tree/master

    展开全文
  • 演示地址:http://blog.shaoxiongdu.top 利用springboot开发的完整个人博客项目 数据库为MySQL 前端为Semantic UI
  • SpringBoot搭建的个人博客项目

    千次阅读 2022-04-04 16:59:06
    可直接导入该项目于本地,修改配置文件中的数据库连接信息,导入附带数据库结构的SQL文件可直接生成所有表,如果有需要还需要开通阿里云相关服务 当你克隆项目到本地后可使用手机号:18773672707,密码:111111进行...

    关于本地开发

    可直接导入该项目于本地,修改配置文件中的数据库连接信息,导入附带数据库结构的SQL文件可直接生成所有表,如果有需要还需要开通阿里云相关服务

    当你克隆项目到本地后可使用手机号:18773672707,密码:111111进行登录,也可自行注册并将其修改为最高管理权限。

    如果发布项目后需要开启Https请求,配置配置文件后开启HttpToHttpsConfig类的@Confaguration注解即可

    项目介绍

    • 本项目采用MyBlog的前端,特此感谢!
    • 关于项目,对于学习Springboot是个挺不错的练手项目
    • 开发前的一些准备工作,以及思考项目整体结构与思路
    • 记录开发过程中遇到的一些难题以及bug
    • 更新较慢的部分采用redis缓存增加访问速度
    • 部分接口遵循restFul规范

    页面展示

    首页展示

    文章编辑

    后台管理

    用户个人中心

    项目需求

    项目背景

    对于初学Springboot的朋友来说,最好的一个学习方式就是那一个功能俱全的项目来练练手,通过练习来不断熟练技术发现自己的不足,并且也能很好的在编码过程中总结和发现问题、解决问题。使用Springboot开发的博客系统,简单并且实用,适合做练手项目。

    功能需求

    主页

    • 博客汇总,以列表形式展示文章,并附上文章作者、发布日期、分类情况以及文章简要
    • 能够以分类形式查看文章
    • 能够以时间列表方式归档文章
    • 可实现通过标签查找所有相关文章
    • 个人介绍、联系方式
    • 博客网站更新记录
    • 友链链接

    后台管理

    • 网站仪表盘,记录网站访客量情况
    • 文章管理 1.分页展示文章信息 2.可对文章进行再编辑以及删除文章
    • 发布文章 1.使用markdown编辑器,支持插入代码,插入图片等功能 2.文章可选择分类和标签,以及转载文章支持链接原作者文章
    • 分类管理,支持增加、删除、修改分类
    • 友情链接 1.支持增加友情链接 2.支持删除友情链接
    • 反馈信息管理,可查看用户反馈信息

    安装部署需求

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

    非功能需求

    性能需求

    • 首页响应时间不超过2秒钟
    • 文章页响应时间不超过3秒钟

     

    项目设计

    总体设计

    • 本项目用到的技术和框架
      1.项目构建:Maven
      2.web框架:Springboot
      3.数据库ORM:Mybatis
      4.数据库连接池: Druid
      5.分页插件:PageHelper
      6.数据库:MySql
      7.缓存:Redis
      8.前端模板:Thymeleaf
      9.文章展示:Editor.md

    • 本项目中的关键点
      1.采用Springboot开发,数据库使用连接池加orm框架的模式,对于系统的关键业务使用Redis缓存,加快相应速度。
      2.整体系统采用门户网站+后台管理+用户个人中心的方式搭建,门户网站展示博客内容以及博主介绍,后台管理用于编辑文章,查看反馈,管理评论留言。

    • 环境

    工具名称
    开发工具IDEA
    语言JDK11、HTML、css、js
    数据库Mysql8.0
    项目框架spring boot
    ORMMybatis
    安全框架SpringSecurity
    缓存Redis
    项目构建Maven
    运行环境阿里云Centos7

    结构设计

    对于熟悉Spring开发的朋友来说,相信对此结构也不会陌生。平时的开发过程中,结构设计是重要的环节,特别是协作开发的时候,明细的分包,模块化,可减少代码提交时的冲突。并且明确的结构有助于我们快速的寻找所对应的类。

     

    业务设计

    发布文章流程

      

     


    登录流程

    用户个人资料修改流程

    打包、部署和运行

    • 本项目采用Springboot的maven插件进行打包,打包结果:****.jar
    • 部署方式:使用 nohup java -jar .jar >.log 2>&1 &的方式,后台启动项目,并在该路径下生成运行日志

    开发流程

    数据库CRUD

    • controller层中编写前端接口,接收前端参数
    • service层中编写所需业务接口,供controller层调用
    • 实现service层中的接口,并注入mapper层中的sql接口
    • 采用Mybatis的JavaConfig方式编写Sql语句。由于并没有使用Mybatis的逆向功能,需要自己手写所有sql语句
    • 关于事务的实现,在启动类中开启事务,并在service层需要实现事务的业务接口上使用@Transactional注解
    • 访问量的存储使用定时任务

    页面与展示

    • 作为一名后端开发,对于前端编辑的能力有所欠缺,这里我使用了MyBlog,极大的减少了页面的开发难度,特此感谢
    • 前端页面与后端的交互主要是在controller包中,并使用Thymeleaf渲染页面。
    • 自定义异常处理页面,通过重写WebMvcConfigurerAdapter实现自动跳转到404、403页面

    其他功能

    • 使用lazyload插件实现页面图片懒加载
    • 后台实时记录当天访客量,便于了解博客日常访问量
    • 分析访问量最多的数据,主要在于文章访问部分,将文章放入redis缓存。每次编辑完文章后,更新缓存

    网站建设

    • 服务器选用的是阿里云centos7
    • 域名是阿里云上购买的.cn的域名

    总结

    开发中遇到的难点

    • 上传图片存储在阿里OSS中,没有返回地址,所以地址需要自己手动拼接
    • 项目中最大的难点还是莫过于页面设计,但是使用了MyBlog的前端,只需修改js请求和css就能实现自己所需要的样式

    博客网站优缺点

    • 首先最大的一个缺点就是在前端页面设计过程中混用了一些Bootstrap,导致前端依赖难以改动,不便于后期修改
    • 对于页面用户体验以及反馈功能的设计便于用户对于浏览过程中出现的问题进行反馈
    • 后端部分明确的分工有利于项目的理解与维护

     

    展开全文
  • 【项目】个人博客项目总结

    千次阅读 2020-06-01 23:38:54
    个人博客项目 1.项目背景 在自己学了javaWeb之后,有了一定的基础,平时也有在记录博客,想着可以做一个简单的博客系统,去了解下博客代码背后的原理,也可以去巩固一下自己学过的的知识。 2.项目功能 用户可以...

    个人博客项目

    1.项目背景

    在自己学了javaWeb之后,有了一定的基础,平时也有在记录博客,想着可以做一个简单的博客系统,去了解下博客代码背后的原理,也可以去巩固一下自己学过的的知识。

    2.项目功能

    用户可以查看文章的列表页面,显示文章的标题,页面有显示修改文章、删除文章、新增文章的选项;

     

    发表新文章功能:点击发表新文章按钮,跳转到另一页面,进行文件的编写,提交,这里引入了富文本编辑器功能

    修改文章功能:选择文章,点击修改文章按钮,跳转到着文章详细信息的编辑页面

     

    删除文章功能,选择文章,点击删除按钮,会弹出提示框,进行选择

     

    注意:在选择文章进行操作时,选择一个按钮进行可以进行、删除选项,选择一个以上的按钮只能进行删除选项;

    3.项目使用技术

    • Java:利用到了Java的基础语法、继承、多线程、异常处理
    • JDBC:用来实现数据库的操作
    • Jackson:它是Java对象与JSON字符串数据进行序列化、反序列化的工具;
    • Servlet:每个页面调用后台接口都需要使用哪些Servlet来完成业务;
    • Lombok:自动插入编辑器并构建工具,以注解的方式,简化一些模版代码的编写,如getter/setter方法、equals/hashcode方法、toString方法等

    4.开发环境

    Maven:使用Maven来管理依赖,打包项目;

    MySQL:使用MySQL数据库作为业务数据的存储;

    浏览器:进行页面的显示,自动化测试的执行

    5.数据库设计与配置

    (1)idea中数据库连接配置

    从idea的database面板打开数据库驱动设置

    (2)配置数据库驱动

    3)打开数据库连接配置

    (4)配置数据库连接

    创建数据库:

    设计用户表:需要id、姓名、创建时间

    create table user(
        id int primary key auto_increment,
        name varchar(20),
        create_time timestamp
    );

    设计文章表:需要id、文章标题、内容、用户id、创建时间

    create table article(
          id int primary key auto_increment,
          title varchar(50) not null,
          content mediumtext not null,
          user_id int,
          create_time timestamp,
          foreign key(user_id) references user(id)
    );

    5.项目的基本流程

    第一步:进行序列化、反序列化的操作

    作用:使数据和对象之间可以转换,保证数据的完整性

    Jackson介绍:Jackson是一个Java用来处理JSON格式数据的类库,性能是非常的好,他被经常用到JSON序列化(将对象转换为JSON字符串)和反序列化(将JSON字符串转换为指定的数据类型)中。

    Jackson在web.xml中的设置:

    <!--jackson:提供Java对象与JSON数据格式进行序列化及反序列化的支持 -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.8.9</version>
    </dependency>

    代码:

    //序列化操作
    public static final String DATE_PATTERN="yyyy-MM-dd HH:mm:ss";
    public   static String serialize(Object obj){
       ObjectMapper mapper=new ObjectMapper();
       //设置日期格式类
       mapper.setDateFormat(new SimpleDateFormat(DATE_PATTERN));
        try {
            return mapper.writeValueAsString(obj);
        } catch (JsonProcessingException e) {
            throw new SystemException(Constant.JSON_ERROR_CODE,"JSON序列化失败"+obj,e);
        }
    }
    
    //反序列化操作,将字符串转化为一个泛型的类
    public static <T> T deserialize(String json,Class<T> clazz){
        ObjectMapper mapper=new ObjectMapper();
        //设置日期格式类
        mapper.setDateFormat(new SimpleDateFormat(DATE_PATTERN));
        try {
            return mapper.readValue(json,clazz);
        } catch (IOException e) {
            throw new SystemException(Constant.JSON_ERROR_CODE,"JSON字符串反序列化失败",e);
        }
    }
    
    //反序列化操作,httpRequst输入流进行读取
    public static <T> T deserialize(InputStream is, Class<T> clazz){
        ObjectMapper mapper=new ObjectMapper();
        //设置日期格式类
        mapper.setDateFormat(new SimpleDateFormat(DATE_PATTERN));
        try {
            return mapper.readValue(is,clazz);
        } catch (IOException e) {
            throw new SystemException(Constant.JSON_ERROR_CODE,"JSON文件反序列化失败",e);
        }
    }

    第二步:进行数据库的操作

    设计数据库实体类:

    • 用户类,对应数据库用户表
    • 文章类:对应数据库文章表,文章中不仅可以写入文字,也可以插入图片

    设计数据库连接工具类:

    • 使用DataSource作为数据库连接的创建方式、设计释放JDBC资源的方法;
    • 在用户表里进行操作:根据账号查找用户的信息
    • 在文章表里的操作:文章插入操作、查询文章类表操作、通过id查找文章详情、修改文章操作、刹删除文章操作(可以删除多个
    • 在这里运用到了Lombok工具:自动插入编辑器并构建工具,以注解的方式,简化一些模版代码的编写,如getter/setter方法、equals/hashcode方法、toString方法等,便于代码的书写

    第三步:利用servlet和页面完成连接

    分别设计了对应的文章添加、文章删除、文章详情页面、文章列表、文章更新、引入了百度富文本编辑器便于上传图片

    6.项目测试

    博客:https://blog.csdn.net/qq_43669007/article/details/106483916

    7.项目缺点

    后台数据写死了,只有一个stu的用户可以进行登录,没有用户登录设置

    8.项目源码

    https://github.com/yaoguo00/servlet-blog

     

     

    展开全文
  • Java个人博客项目

    万次阅读 多人点赞 2019-09-21 09:48:24
    这个项目是大二下学期期末考核项目,当时是自选主题写一个项目,于是就写了一个个人博客项目,页面使用的是LayUI,权限控制是使用的SpringSecurity,后端使用的是SpringBoot+Spring-Data-Jpa。 开发环境 开发工具...
  • springboot个人博客项目面试准备

    千次阅读 多人点赞 2021-10-23 16:45:17
    文章目录1、项目本身2、项目扩展 1、项目本身 项目的背景是什么,解决一个什么样的问题? 项目中你的职责是什么? 项目的基础功能有哪些? 项目使用的技术栈是什么,技术架构是怎么样的? 使用微服务了吗? 项目是...
  • 本教程主要是使用SpringBoot+Vue从零搭建自己的个人博客系统,大家可以当做基础的项目来学习。
  • Vue项目个人博客

    2018-03-06 15:30:28
    我的个人博客,里面是我的第一个个人Vue项目,希望大家可以来看看
  • 由于我是一个人,思来想去之后,我就去做了个人博客系统。包含前台系统和后台系统。 这里我就主要记录一下我是如何一个星期做完我的后台系统的,前台等以后有空我再来记录~ 希望可以给这方面有需要的小伙伴们一...
  • 从教程的这一篇开始,我们就开始正式的进入到实战项目的开发。 ​ 首先要搞清楚我们的项目的总体结构是什么,后端采用的是Java、管理平台采用的是Vue搭建,后期可能还会有移动端采用uni-app实现。采用前后端分离开发...
  • SpringBoot个人博客—前端页面功能介绍(一) 一、前端框架Semantic UI Semintic UI官网:https://semantic-ui.com/ 前端页面主要采用了Semantic前端开发框架对页面骨架进行快速搭建。 Semantic作为一款开发框架...
  • 个人博客网站项目

    千次阅读 2022-04-15 11:17:41
    个人博客项目概述 本项目源码gitee链接 此项目为一个博客项目,仿照简书平台。用户可以登陆和注册账号、发布和预览文章、对文章进行评论。主要有四部分构成:首页、登录页面、发布文章页面、查看文章页面(含评论发布...
  • javaWeb项目个人博客系统

    千次阅读 2021-03-21 09:50:01
    个人博客系统第一个项目实战SC13032012-11-19星期一第一部分案例描述案例目的加强对MVC的理解,加强对jsp 、servlet技术的熟练使用。学习Fckeditor的使用。案例难度★★★★案例覆盖技能点1.使用MVC模型2.常用数据库...
  • 个人博客系统项目-已开源

    万次阅读 多人点赞 2021-07-26 21:37:08
    实现了一个简单的个人博客系统,技术栈为后端SpringBoot+JPA+MySQL,前端Vue+ElementUI+Echarts系统分为前台展示和后台管理两个部分,前台部分主要分为了引导页,首页,随笔,项目,留言和关于我页面,使用响应式布局...
  • Java项目——个人博客系统

    万次阅读 多人点赞 2022-03-11 09:27:58
    文章目录一、项目背景二、项目功能三、...由于之前一直都在CSDN上分享自己的学习过程,对CSDN博客系统的功能有了一定的了解,因此便尝试完成了个人博客系统。 二、项目功能 1.用户登录: 2.用户主页: 3.查看全文:
  • 在前面一节我们已经完成后台管理界面的一个实现,在这一节我完成其中的博客类别管理中如果分页显示博客类别信息。 在写之前,先看一下数据库中的表的情况 DROP DATABASE IF EXISTS db_blog; /*创建数据库,并设置...
  • 【开源项目】个人博客项目

    千次阅读 2018-03-23 16:37:43
    # Blog v1.0项目地址: http://www.istorms.net/ 开源地址:https://github.com/Eval0day7/Blog/概述: 该项目为前后端分离项目,前端采用Vue系列,后端采用Django框架并且结合Django REST framework提供数据接口...
  • 个人博客项目被使用的日志 4.9 博客介绍 1. 项目介绍,含登陆和注册按钮,可分别跳转登陆页和注册页 4.10 找回密码 1. 向绑定的邮箱发生消息,获取密钥,从而修改密码 2. 密钥验证成功,跳转登陆页面 4.11 素材...
  • 【ssm个人博客项目实战07】博客的后台实现

    万次阅读 热门讨论 2017-04-24 21:55:12
    在前面我们已经完成了博客类别的添加修改删除分页查询操作了,现在我们就来完成了博客的添加修改首先创建t_blog表CREATE TABLE `t_blog` ( `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '博客类型', `title` ...
  • SpringBoot个人博客项目搭建 博客源码: 个人博客主页: 一、项目简介: 一直想用Spring boot 搭建一个属于自己的博客系统,刚好前段时间学习了李仁密大神的小而美个人博客项目课受益匪浅,于是琢磨着搭建一款属于...
  • 【ssm个人博客项目实战01】SSM环境搭建

    万次阅读 多人点赞 2017-04-13 22:59:56
    前言今天开始就做一个个人博客实战项目了,首先就项目环境的搭建,万丈高楼平地起。这篇 博客主要讲解基于maven的ssm项目整合。 1、ssm系统架构 整合步骤第一步: MyBatis和Spring整合,通过Spring管理mapper接口。...
  • 接着上文继续写啦~将后续的界面图放上来~ (1) 分类管理模块之分类列表 (2)分类管理模块之编辑分类 (3)分类管理模块之添加分类 (4)分类管理模块之删除分类 (5)标签管理模块之标签列表 ......
  • Python个人博客项目-4.博客应用开发

    万次阅读 2021-09-03 08:57:39
    学习Python已经6年有余,从事的行业数据分析师,算法...Python个人博客项目-1.项目分析与环境配置 Python个人博客项目-2.我的主页应用开发 Python个人博客项目-3.用户应用开发 Python个人博客项目-4.博客应用开发 Pytho
  • Python个人博客项目-3.用户应用开发

    万次阅读 2021-09-02 16:06:52
    学习Python已经6年有余,从事的行业数据分析师,算法...Python个人博客项目-1.项目分析与环境配置 Python个人博客项目-2.我的主页应用开发 Python个人博客项目-3.用户应用开发 Python个人博客项目-4.博客应用开发 Pytho
  • 其实早就有写完这个个人博客后台的想法,奈何我每次保存这篇博文的时候网络都出问题,写了半天毁于一旦,我的心情也是崩溃的TAT 但是不写完吧,我总觉得有件事没做完,做其他事也没有劲头,久而久之我都不怎么敲...
  • vue项目实战(个人博客)一------项目介绍

    千次阅读 多人点赞 2019-08-30 23:17:29
    vue个人博客,简单的响应式设计
  • PHP个人博客项目------切切歆语博客

    千次阅读 2018-03-27 21:13:12
    php+mysql+apache, ThinkPHP3.2框架开发我的个人博客项目适合新手练习源码地址下载:https://github.com/DickyQie/php-myblog
  • SpringBoot+Vue前后端分离项目实战:个人博客系统

    千次阅读 多人点赞 2021-03-08 19:59:44
    MyBlog主要是基于 SpringBoot + Vue 前后端分离开发的一款动态个人博客系统,后台和前台均通过JSON数据做交互,主要功能有文章管理、分类管理、标签管理、附件管理、评论管理、友链管理、个人资料/博客信息管理等。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 228,052
精华内容 91,220
关键字:

个人博客项目