博客管理系统

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 博客管理系统

大致思路

1. 引入的依赖

数据库 Maven Repository: mysql » mysql-connector-java » 5.1.47 (mvnrepository.com)

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>


Servlet Maven Repository: javax.servlet » javax.servlet-api » 3.1.0 (mvnrepository.com)

<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>


Jackson Maven Repository: » jackson-databind » 2.13.1 (mvnrepository.com)

Jackson ObjectMapper 使用说明

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.13.1</version>
</dependency>


前端jQuery CND


引入jQuery 可以进行  $.ajax构造 把jQuery放到CDN上就是为了提高网站加载文件的效率。


<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>

2. 日期

数据库 datetime 我们在 Java 代码中表达的时候

使用 java.sql.TimeStamp 这个类 与之对应

5184dcd384e24a949b31703661e06850.png


但是传入的时间是一个时间戳  而将其变成格式化时间 就可以时候 SimpleDateFormat类


4c1a4b032a154eb49df69c0a4faf8408.png


重点代码:

1. 博客列表页 从服务器加载

          function getBlogs() {
            $.ajax({
                type: 'get',
                url: 'blog',
                success: function(body) {
                    // 获取成功, 则 body 就是一个 js 对象数组. 每个元素就是一个博客
                    let container = document.querySelector('.container-right');
重点看这里:          for (let blog of body) {
                        // 构造 blogDiv
                        let blogDiv = document.createElement('div');
                        blogDiv.className = 'blog';
                        // 构造博客标题
                        let titleDiv = document.createElement('div');
                        titleDiv.className = 'title';
                        titleDiv.innerHTML = blog.title;
                        // 构造博客的日期
                        let dateDiv = document.createElement('div');
                        dateDiv.className = 'date';
                        dateDiv.innerHTML = blog.postTime;
                        // 构造博客的摘要
                        let descDiv = document.createElement('div');
                        descDiv.className = 'desc';
                        descDiv.innerHTML = blog.content;
                        // 构造查看全文按钮
                        let a = document.createElement('a');
重点看这里:              a.href = 'blog_detail.html?blogId=' + blog.blogId;
                        a.innerHTML = '查看全文 &gt;&gt;';
                        // 拼装最终结果
                        blogDiv.appendChild(titleDiv);
                        blogDiv.appendChild(dateDiv);
                        blogDiv.appendChild(descDiv);
                        blogDiv.appendChild(a);
                        container.appendChild(blogDiv);
                    }
                }
            });

引入MarkDown编辑器

1. 引入editor.md

ac47d5cb5534461e9fe6c3e9efdaadfa.png


1ddf4aa5250c4686bcda01e4ff57ad5d.png

    <form action="blog" method="post" style="height:100%">
        <!-- 整个编辑页的版心 -->
        <div class="blog-edit-container">
            <!-- 标题的编辑区 -->
            <div class="title">
                <!-- 输入的标题内容 -->
                <input type="text" id="blog-title" name="title" placeholder="在这里输入博客标题">
                <button id="submit">发布文章</button>
            </div>
            <!-- 正文的编辑区 -->
            <div id="editor">
                <textarea name="content" style="display:none"></textarea>
            </div>
        </div>
    </form>

d006c05e490846d1962c3e6450944f13.png


    <script>
        // 初始化编辑器, 代码也是截取自 官方文档 . 
        let editor = editormd("editor", {
            // 这里的尺寸必须在这里设置. 设置样式会被 editormd 自动覆盖掉. 
            width: "100%",
            // 设定编辑器高度
            height: "calc(100% - 50px)",
            // 编辑器中的初始内容
            markdown: "## hello world",
            // 指定 editor.md 依赖的插件路径
            path: "editor.md/lib/"
        });
    </script>

location.search

返回URL的查询部分。假设当前的URL就是http://localhost:8080/blog_system_pro/blog_detail.html?blogId=2

<script>
document.write(location.search);
</script>

输出结果就是

?blogId=2


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
Java
布式系统的时空观
分布式系统的时空观是指对分布式系统中事件发生的时间和事件发生的空间位置的观察和理解。在分布式系统中,由于存在多个节点,节点之间的通信和数据交换会产生时延和不确定性,因此需要考虑事件发生的时间和空间位置对系统的影响。时空观的应用可以帮助我们更好地理解分布式系统中的数据同步、一致性和容错机制等问题。
100 0
|
Linux 芯片 C++
女朋友问我,系统咋装呀?
女朋友问我,系统咋装呀?
184 0
女朋友问我,系统咋装呀?
|
数据库 关系型数据库 MySQL
简单系统中的几个点
最近应一个老师的要求帮忙做几个网页用来查询和汇总,因为比较简单也没用框架什么的,就做了几个简单的界面以及用php接收和从数据库中显示,一点安全都没做,emmm,求轻喷,记录下几个点。
1012 0
系统思考的介绍
3.3 系统思考的介绍 在控制理论中,分为开环控制系统和闭环控制系统。开环控制系统是不将控制的结果反馈回来影响当前控制的系统。闭环控制系统是将控制的结果反馈回来影响当前控制的系统。
1012 0
|
监控 大数据 安全
系统思考
最近发现一本关于提高系统思维能力的书,是一本你读起来很容易接受,逻辑很清楚的书,下面我就总结下,给大家参考下 背景 一般在我们工作或者生活的过程中都会碰到下面三中情况 遇到事情突然想不清楚 表达时说不清楚 学习的时候学的慢 以上的场景可能不是所有人都遇到过,但这个不是最关键的。
1961 0
系统思考与《第五项修炼》
系统思考与《第五项修炼》——《可以量化的管理学》 内容提要:彼得•圣吉通过《第五项修炼》将控制理论的正反馈和负反馈引入管理学,对管理学理论产生了巨大的影响。
1314 0
|
安全
哥特式建筑安全系统
本文讲的是哥特式建筑安全系统,在我的童年记忆里,电视上播放的那些低劣的冒险电影是模糊却持久的。通常,这些电影的场景会安排某个古旧的城堡、密室或走廊在其中起着重要的作用。为了找到它们,英雄们需要拉动楼顶的蜡烛托架,然后,轻拍两次墙壁。
1787 0