一、文章内容显示
博客详情页面文章的显示格式、文章访问数量、评论数量的处理。
接口实现类:
- 文章显示格式:使用开源的Markdown编辑器:Editor,调用工具类方法来增加扩展
- 访问数量:在持久层接口定义方法updateViews来更新文章访问数量,点击文章后数值自增
- 评论数量:在持久层接口定义方法getCommentCountById来根据博客id查询出评论数量
1、博客详情实体类
public class DetailedBlog {
//博客信息
private Long id;
private String firstPicture;
private String flag;
private String title;
private String content;
private Integer views;
private Integer commentCount;
private Date updateTime;
private boolean commentabled;
private boolean shareStatement;
private boolean appreciation;
private String nickname;
private String avatar;
//分类名称
private String typeName;
}
2、Markdown编辑器工具类
添加相关依赖
<dependency>
<groupId>com.atlassian.commonmark</groupId>
<artifactId>commonmark</artifactId>
<version>0.10.0</version>
</dependency>
<dependency>
<groupId>com.atlassian.commonmark</groupId>
<artifactId>commonmark-ext-heading-anchor</artifactId>
<version>0.10.0</version>
</dependency>
<dependency>
<groupId>com.atlassian.commonmark</groupId>
<artifactId>commonmark-ext-gfm-tables</artifactId>
<version>0.10.0</version>
</dependency>
utils工具类
public class MarkdownUtils {
/**
* markdown格式转换成HTML格式
* @param markdown
* @return
*/
public static String markdownToHtml(String markdown) {
Parser parser = Parser.builder().build();
Node document = parser.parse(markdown);
HtmlRenderer renderer = HtmlRenderer.builder().build();
return renderer.render(document);
}
/**
* 增加扩展[标题锚点,表格生成]
* Markdown转换成HTML
* @param markdown
* @return
*/
public static String markdownToHtmlExtensions(String markdown) {
//h标题生成id
Set<Extension> headingAnchorExtensions = Collections.singleton(HeadingAnchorExtension.create());
//转换table的HTML
List<Extension> tableExtension = Arrays.asList(TablesExtension.create());
Parser parser = Parser.builder()
.extensions(tableExtension)
.build();
Node document = parser.parse(markdown);
HtmlRenderer renderer = HtmlRenderer.builder()
.extensions(headingAnchorExtensions)
.extensions(tableExtension)
.attributeProviderFactory(new AttributeProviderFactory() {
public AttributeProvider create(AttributeProviderContext context) {
return new CustomAttributeProvider();
}
})
.build();
return renderer.render(document);
}
/**
* 处理标签的属性
*/
static cla