一.实现博客详情
1.后端逻辑代码
controller层添加方法(根据博客id查看博客详情)
@RequestMapping("/getBlogDetail")
public Result<BlogInfo> getBlogDetail(Integer blogId){
log.info("getBlogDetail, blogId: {}", blogId);
BlogInfo blogInfo = blogService.getBlogDetail(blogId);
return Result.success(blogInfo);
}
Service层写构造方法
public BlogInfo getBlogDetail(Integer blogId) {
return blogMapper.selectById(blogId);
}
mapper层:
package com.example.demo.mapper;
import com.example.demo.model.BlogInfo;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface BlogMapper {
/**
* 返回博客列表
* @return
*/
@Select("select * from blog where delete_flag = 0")
List<BlogInfo> selectAll();
/**
* 根据博客ID, 返回博客信息
* @return
*/
@Select("select * from blog where id =#{id}")
BlogInfo selectById(Integer id);
/**
* 更新博客
* @return
*/
Integer updateBlog(BlogInfo blogInfo);
/**
* 发布博客
*/
@Insert("insert into blog (title, content, user_id) values (#{title}, #{content}, #{userId})")
Integer insertBlog(BlogInfo blogInfo);
}
使用postman来进行测试
测试成功
2.前端代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>博客详情页</title>
<link rel="stylesheet" href="css/common.css">
<link rel="stylesheet" href="css/detail.css">
</head>
<body>
<div class="nav">
<img src="pic/rose.jpg" alt="">
<span class="blog-title">文字花园</span>
<div class="space"></div>
<a class="nav-span" href="blog_list.html">主页</a>
<a class="nav-span" href="blog_edit.html">写博客</a>
<a class="nav-span" href="#" onclick="logout()">注销</a>
</div>
<div class="container">
<div class="left">
<div class="card">
<img src="pic/doge.jpg" alt="">
<h3>小李同学</h3>
<a href="#">GitHub 地址</a>
<div class="row">
<span>文章</span>
<span>分类</span>
</div>
<div class="row">
<span>2</span>
<span>1</span>
</div>
</div>
</div>
<div class="right">
<div class="content">
<div class="title"></div>
<div class="date"></div>
<div class="detail">
</div>
<div class="operating">
<button onclick="window.location.href='blog_update.html'">编辑</button>
<button onclick="deleteBlog()">删除</button>
</div>
</div>
</div>
</div>
<!-- 引入 editor.md 的依赖 -->
<link rel="stylesheet" href="blog-editormd/css/editormd.css" />
<script src="js/jquery.min.js"></script>
<script src="blog-editormd/lib/marked.min.js"></script>
<script src="blog-editormd/lib/prettify.min.js"></script>
<script src="blog-editormd/editormd.js"></script>
<script src="js/common.js"></script>
<script>
$.ajax({
type: "get",
url: "/blog/getBlogDetail" +location.search,
success: function(result){
if(result.code=="SUCCESS"){
//填充页面
var blog = result.data;
$(".content .title").text(blog.title);
$(".content .date").text(blog.createTime);
$(".content .detail").text(blog.content);
}
},
error:function(error){
if(error!=null && error.status==401){
location.href = "blog_login.html";
}
}
});
</script>
</body>
</html>
展示页面
注意:
这里的时间是Date类型,不好看,我们修改String类型。
新建/utils/DateUtils
代码:
package com.example.demo.utils;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtils {
public static String dateFormat(Date date){
//2024-04-24 21:18
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
return format.format(date);
}
}
package com.example.demo.model;
import com.example.demo.utils.DateUtils;
import lombok.Data;
import java.util.Date;
@Data
public class BlogInfo {
private Integer id;
private String title;
private String content;
private Integer userId;
private Integer deleteFlag;
private Date createTime;
private Date updateTime;
public String getCreateTime() {
return DateUtils.dateFormat(createTime);
}
}
展示: