博客管理系统

大致思路

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 这个类 与之对应 

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

重点代码:

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

2. 

 

 

    <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>

 

 

    <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
博易的功能特性】 新一代的博客 博易集众多博客的新功能于一体,是一款名副其实的新一代博客的典型范例!无刷新的日历、评论、回访功能无不体现了AJAX在博客中的娴熟运用! 成熟的系统架构 专业的团队用专业的框架开发出的产品。基于微软的.Net 2.0,作者对OOP具有着深入的理解,并对.Net特性有着透彻的研究。博易的系统架构和编码风格不能不说是OOP的设计典范! 方便的内容导入导出 博易后台提供了内容的导入和导出功能,生成一个XML文件。便利地解决了博客搬家的麻烦! 先进的评论体系 评论是博客极为重要的组成部分,博易用AJAX技术提供了一组先进的评论体系!该评论体系支持国别选择、发表评论支持实时预览、个性头像、聚合式评论……所有的这些都可以由管理员在后台做便捷的编辑调整! 无须数据库且支持多种数据库 默认采用基于 XML 的数据存储方式,此种方式提供几乎与静态网页相当的访问效率(避免了数据库并发查询的瓶颈)。同时也可以扩展支持SQL Server、Access等多种数据库存储方式。 独立页面发布功能 除了标准的博客日志,博易还支持在线发布静态页面!这些页面是独立的,对发布各种信息尤为有用! 多用户支持 博易对多用户共同创作、维护博客提供了全面的支持,博易允许多个用户维护同一个博客。访问者可以订阅任意一个博客用户的RSS feed、仅关注他们感兴趣的某个博客用户的日志! 多语言支持 博易支持多语言,您可以在全球任意地区的服务器上运行博易,而不用担心服务器时间和本地时间存在时差的问题。 Trackback 和 Pingback 特性 博易可以对所有链出的链接进行Track回溯和Ping回溯,您的博客链接将自动出现在您引用的博客的评论列表之中!提高您博客的链入指数、在无形之中推广了您的博客!每当创建一个新的日志,博易就会自动完成PingTechnorati、Feedburner、Ping-o-Matic等操作! 灵活易用的插件机制 博易采用了灵活强大的C#开发,架构十分先进成熟,她的插件机制也是如此。系统开放了事件定义,利用订阅事件能够使所开发的插件强大得如同系统程序本身一样! 酷炫主题支持 博易为快速开发主题(模板、风格)提供了支持,用户只需要稍稍懂得HTML和CSS便可进行主题的制作!博易的模板机制是基于.Net2.0的MasterPage的,这样,开发一套新的主题模板只需要修改3~5个文件即可完成!与此同时,博易有专业的设计师为您免费提供更多的个性主题!此外,博易还支持识别移动设备(如手机等)。能分别制定在用这些设备访问和用PC机访问时所用的主题模板! 符合 XHTML 博易所用的控件全部符合XHTML 1.0标准。所有的日志都会在您发表时自动转换成符合标准的格式!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shn!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值