大致思路
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)
<!-- 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 = '查看全文 >>'; // 拼装最终结果 blogDiv.appendChild(titleDiv); blogDiv.appendChild(dateDiv); blogDiv.appendChild(descDiv); blogDiv.appendChild(a); container.appendChild(blogDiv); } } });
引入MarkDown编辑器
1. 引入editor.md
<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