博客管理系统

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 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


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
并行计算 算法框架/工具 iOS开发
在RTX3050上安装python3.9、anaconda、pycharm、cuda11.6、cudnn、jupyter等工具的详细步骤和方法
在RTX3050上安装python3.9、anaconda、pycharm、cuda11.6、cudnn、jupyter等工具的详细步骤和方法
537 3
|
开发框架 移动开发 小程序
强烈推荐:绝对是好用的小程序开源框架
强烈推荐:绝对是好用的小程序开源框架
352 0
|
JSON Prometheus Go
Golang模板template
Golang模板template
|
存储 搜索推荐 Linux
5个值得学习的C++完整项目实战
5个值得学习的C++完整项目实战
|
存储 算法 Java
趣味算法:滑动窗口算法的理解与应用
前言 在编程和数据结构中,滑动窗口算法是一种常见的解决问题的方法。它主要用于处理涉及连续或固定长度子数组、子序列或子字符串的问题。本文将深入探讨滑动窗口算法,包括其基本概念、应用场景、基本步骤以及具体的Java代码实践。
911 0
|
机器学习/深度学习 存储 自然语言处理
从零开始学习Java神经网络、自然语言处理和语音识别,附详解和简易版GPT,语音识别完整代码示例解析
从零开始学习Java神经网络、自然语言处理和语音识别,附详解和简易版GPT,语音识别完整代码示例解析
413 0
|
存储 容灾 Cloud Native
阿里云ClickHouse企业版正式商业化,为开发者提供容灾性更好、性价比更高的实时数仓
2024年4月23日,阿里云联合 ClickHouse Inc. 成功举办了企业版商业化发布会。阿里云 ClickHouse 企业版是阿里云和 ClickHouse 原厂 ClickHouse. Inc 独家合作的存算分离的云原生版本,支持资源按需弹性 Serverless,帮助企业降低成本的同时,为企业带来更多商业价值。
952 1
|
存储 IDE Java
Android程序设计 大作业:基于安卓的校园生活服务系统的设计与实现
Android程序设计 大作业:基于安卓的校园生活服务系统的设计与实现
1337 1
Android程序设计 大作业:基于安卓的校园生活服务系统的设计与实现
|
人工智能 搜索推荐 自动驾驶
使用 AI 工具是否会导致思考能力退化?如何应对?
文本探讨两个问题:使用 AI 工具是否会导致人类的思考能力退化?如何在使用AI工具的同时,保持甚至提高我们的思考能力?
823 0
使用 AI 工具是否会导致思考能力退化?如何应对?

热门文章

最新文章