博客系统开发推送第三季----文章的归档分类

比眉伴天荒 2022-06-16 14:47 230阅读 0赞

# 之前已做好如下功能:

1.富文本编辑器的编辑文章功能

2.发表文章,读写数据库,并做文章预览摘要功能

3.博客系统需求分析,设计数据库

# 接下来做的是:

1.文章的存档分类功能,用户可以根据文章分类查看自己已经发表过的文章

2.统计每种分类的文章数目,用户可以点击该分类查看该分类下的所有文章

# 核心代码分享

Article.java

  1. package com.bean;
  2. import java.sql.Blob;
  3. import java.util.Date;
  4. public class Article {
  5. private Integer article_id;
  6. private Integer category_id;
  7. private String article_title;
  8. private String article_date;
  9. private String article_content;
  10. private String article_summary;
  11. private Integer article_acessNum;
  12. private Integer article_reviewNum;
  13. public Integer getArticle_id() {
  14. return article_id;
  15. }
  16. public void setArticle_id(Integer article_id) {
  17. this.article_id = article_id;
  18. }
  19. public Integer getCategory_id() {
  20. return category_id;
  21. }
  22. public void setCategory_id(Integer category_id) {
  23. this.category_id = category_id;
  24. }
  25. public String getArticle_title() {
  26. return article_title;
  27. }
  28. public void setArticle_title(String article_title) {
  29. this.article_title = article_title;
  30. }
  31. public String getArticle_date() {
  32. return article_date;
  33. }
  34. public void setArticle_date(String article_date) {
  35. this.article_date = article_date;
  36. }
  37. public String getArticle_content() {
  38. return article_content;
  39. }
  40. public void setArticle_content(String article_content) {
  41. this.article_content = article_content;
  42. }
  43. public String getArticle_summary() {
  44. return article_summary;
  45. }
  46. public void setArticle_summary(String article_summary) {
  47. this.article_summary = article_summary;
  48. }
  49. public Integer getArticle_acessNum() {
  50. return article_acessNum;
  51. }
  52. public void setArticle_acessNum(Integer article_acessNum) {
  53. this.article_acessNum = article_acessNum;
  54. }
  55. public Integer getArticle_reviewNum() {
  56. return article_reviewNum;
  57. }
  58. public void setArticle_reviewNum(Integer article_reviewNum) {
  59. this.article_reviewNum = article_reviewNum;
  60. }
  61. }

Category.java

  1. package com.bean;
  2. public class Category {
  3. private Integer category_id;
  4. private Integer blog_id;
  5. private String category_title;
  6. public Integer getCategory_id() {
  7. return category_id;
  8. }
  9. public void setCategory_id(Integer category_id) {
  10. this.category_id = category_id;
  11. }
  12. public Integer getBlog_id() {
  13. return blog_id;
  14. }
  15. public void setBlog_id(Integer blog_id) {
  16. this.blog_id = blog_id;
  17. }
  18. public String getCategory_title() {
  19. return category_title;
  20. }
  21. public void setCategory_title(String category_title) {
  22. this.category_title = category_title;
  23. }
  24. }

ArticleDaoImpl.java

  1. package com.dao;
  2. import java.sql.Blob;
  3. import java.sql.Date;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import com.DBConnect.DButil;
  7. import com.bean.Article;
  8. import com.bean.Category;
  9. import com.mysql.jdbc.Connection;
  10. import com.mysql.jdbc.PreparedStatement;
  11. public class ArticleDaoImpl implements ArticleDao {
  12. @Override
  13. public void insert(Article article) {
  14. // TODO Auto-generated method stub
  15. Connection conn=null;
  16. PreparedStatement ps=null;
  17. try {
  18. conn = DButil.open();
  19. String sql="insert into article(category_id,article_title,article_date,article_content,article_summary) values(?,?,?,?,?)";
  20. ps=(PreparedStatement) conn.prepareStatement(sql);
  21. ps.setInt(1, article.getCategory_id());
  22. ps.setString(2, article.getArticle_title());
  23. ps.setString(3, article.getArticle_date());
  24. ps.setString(4, article.getArticle_content());
  25. ps.setString(5, article.getArticle_summary());
  26. ps.executeUpdate();
  27. System.out.println("数据库读写成功!");
  28. } catch (SQLException e) {
  29. // TODO Auto-generated catch block
  30. System.out.println("数据库读写失败!");
  31. e.printStackTrace();
  32. }
  33. finally {
  34. DButil.close(conn);
  35. }
  36. }
  37. public Article query(int article_id)
  38. {
  39. String sql="select * from article where article_id=?";
  40. Connection conn=DButil.open();
  41. try {
  42. PreparedStatement pstmt=(PreparedStatement) conn.prepareStatement(sql);
  43. pstmt.setInt(1,article_id);
  44. ResultSet rs=pstmt.executeQuery();
  45. if(rs.next())
  46. {
  47. int category_id = rs.getInt(2);
  48. String title = rs.getString(3);
  49. String date = rs.getString(4);
  50. String newsbody = rs.getString(5);
  51. String content = rs.getString(6);
  52. int article_acessNum = rs.getInt(7);
  53. int article_reviewNum = rs.getInt(8);
  54. Article Ar = new Article();
  55. Ar.setArticle_id(article_id);
  56. Ar.setCategory_id(category_id);
  57. Ar.setArticle_title(title);
  58. Ar.setArticle_date(date);
  59. Ar.setArticle_content(newsbody);
  60. Ar.setArticle_summary(content);
  61. Ar.setArticle_acessNum(article_acessNum);
  62. Ar.setArticle_reviewNum(article_reviewNum);
  63. System.out.println(Ar);
  64. System.out.println("查询数据成功!");
  65. return Ar;
  66. }
  67. } catch (SQLException e) {
  68. // TODO Auto-generated catch block
  69. System.out.println("查询数据失败!");
  70. e.printStackTrace();
  71. }
  72. finally {
  73. DButil.close(conn);
  74. }
  75. return null;
  76. }
  77. public int findCount(int category_id){
  78. String sql="select count(category_id) as count from article where category_id=?";
  79. Connection conn=DButil.open();
  80. int count =0;
  81. try {
  82. PreparedStatement pstmt=(PreparedStatement) conn.prepareStatement(sql);
  83. pstmt.setInt(1, category_id);
  84. ResultSet rs=pstmt.executeQuery();
  85. if(rs.next()) {
  86. count=rs.getInt("count");
  87. System.out.println("查询数据成功!");
  88. }
  89. return count;
  90. } catch (SQLException e) {
  91. // TODO: handle exception
  92. System.out.println("查询数据失败!");
  93. e.printStackTrace();
  94. }
  95. finally {
  96. DButil.close(conn);
  97. }
  98. return count;
  99. }
  100. }

CategoryDaoImpl.java

  1. package com.dao;
  2. import java.sql.ResultSet;
  3. import java.sql.SQLException;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. import com.DBConnect.DButil;
  7. import com.bean.Category;
  8. import com.mysql.jdbc.Connection;
  9. import com.mysql.jdbc.PreparedStatement;
  10. public class CategoryDaoImpl implements CategoryDao {
  11. @Override
  12. public List<Category> findAll() {
  13. // TODO Auto-generated method stub
  14. Connection conn=null;
  15. PreparedStatement psmt=null;
  16. List<Category> list = new ArrayList<Category>();
  17. try {
  18. conn = DButil.open();
  19. String sql = "select * from category";
  20. psmt=(PreparedStatement) conn.prepareStatement(sql);
  21. ResultSet rs=psmt.executeQuery();
  22. while(rs.next()) {
  23. int category_id = rs.getInt(1);
  24. int blog_id = rs.getInt(2);
  25. String category_title = rs.getString(3);
  26. Category category = new Category();
  27. category.setCategory_id(category_id);
  28. category.setBlog_id(blog_id);
  29. category.setCategory_title(category_title);
  30. System.out.println("查询分类数据成功!");
  31. list.add(category);
  32. System.out.println(list.size());
  33. }
  34. } catch (SQLException e) {
  35. // TODO Auto-generated catch block
  36. System.out.println("查询数据失败!");
  37. e.printStackTrace();
  38. }
  39. finally {
  40. DButil.close(conn);
  41. }
  42. System.out.println(list.size());
  43. return list;
  44. }
  45. public Category findByTitle(String category_title){
  46. String sql = "select * from category where category_title=?";
  47. Connection conn=DButil.open();
  48. try {
  49. PreparedStatement pstmt=(PreparedStatement) conn.prepareStatement(sql);
  50. pstmt.setString(3,category_title);
  51. ResultSet rs=pstmt.executeQuery();
  52. if(rs.next()) {
  53. int category_id = rs.getInt(1);
  54. int blog_id = rs.getInt(2);
  55. Category cate = new Category();
  56. cate.setCategory_id(category_id);
  57. cate.setBlog_id(blog_id);
  58. cate.setCategory_title(category_title);
  59. System.out.println("查询数据成功!");
  60. return cate;
  61. }
  62. } catch (SQLException e) {
  63. // TODO: handle exception
  64. System.out.println("查询数据失败!");
  65. e.printStackTrace();
  66. }
  67. finally {
  68. DButil.close(conn);
  69. }
  70. return null;
  71. }
  72. @Override
  73. public int insert(Category category) {
  74. // TODO Auto-generated method stub
  75. return 0;
  76. }
  77. }

# 部分前端JSP页面

category.jsp

  1. <%@page import="com.dao.ArticleDaoImpl"%>
  2. <%@page import="com.dao.ArticleDao"%>
  3. <%@page import="com.bean.Category"%>
  4. <%@page import="java.util.List"%>
  5. <%@page import="com.dao.CategoryDaoImpl"%>
  6. <%@page import="com.dao.CategoryDao"%>
  7. <%@ page language="java" contentType="text/html; charset=UTF-8"
  8. pageEncoding="UTF-8"%>
  9. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  10. <html>
  11. <head>
  12. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  13. <title>分类列表</title>
  14. <style type="text/css">
  15. .cate{
  16. border:1px dashed #cccccc;
  17. font-size: 20px;
  18. margin-top: 15px;
  19. }
  20. </style>
  21. </head>
  22. <body>
  23. <div>
  24. <h3 style="text-align: center;">文章分类</h3>
  25. <ul class="cate">
  26. <%
  27. CategoryDao dao = new CategoryDaoImpl();
  28. List<Category> list = dao.findAll();
  29. ArticleDao Ar = new ArticleDaoImpl();
  30. int count=0;
  31. for(int i=0;i<list.size();i++){
  32. Category category = list.get(i);
  33. int category_id =category.getCategory_id();
  34. // System.out.println("当前ID:"+category_id);
  35. count = Ar.findCount(category_id);
  36. %>
  37. <li style="margin: 8px 4px "><%=category.getCategory_title() %><a href="#"> (<%=count %>)</a></li>
  38. <%}%>
  39. </ul>
  40. </div>
  41. </body>
  42. </html>

content.jsp

  1. <%@page import="com.bean.Category"%>
  2. <%@page import="com.dao.CategoryDaoImpl"%>
  3. <%@page import="com.dao.CategoryDao"%>
  4. <%@page import="java.sql.Blob"%>
  5. <%@page import="com.dao.ArticleDaoImpl"%>
  6. <%@page import="com.dao.ArticleDao"%>
  7. <%@page import="com.bean.Article"%>
  8. <%@page import="com.content.Split"%>
  9. <%@page import="com.DBConnect.DButil"%>
  10. <%@page import="com.mysql.jdbc.Connection"%>
  11. <%@page import="com.mysql.jdbc.PreparedStatement"%>
  12. <%@page import="java.io.IOException"%>
  13. <%@page import="java.sql.SQLException"%>
  14. <%@ page language="java" contentType="text/html; charset=utf-8"
  15. pageEncoding="utf-8"%>
  16. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  17. <html>
  18. <head>
  19. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  20. <title>内容摘要</title>
  21. <style type="text/css">
  22. .slbox {
  23. width: 1000px;
  24. margin: 0 auto;
  25. border:1px dashed #cccccc;
  26. margin-top: 15px;
  27. }
  28. .tit{
  29. font-size: 24px;
  30. text-align: center;
  31. border: 1px solid green;
  32. }
  33. </style>
  34. </head>
  35. <body>
  36. <%
  37. request.setCharacterEncoding("utf-8");
  38. response.setCharacterEncoding("utf-8");
  39. response.setHeader("Content-Type","text/html; charset=utf-8");
  40. String title = request.getParameter("txtTitles");
  41. String newsbody = request.getParameter("editorValue");
  42. String selectValue = request.getParameter("select");
  43. int category_id = Integer.parseInt(selectValue);
  44. //System.out.println("下拉列表的值:"+selectValue);
  45. Split split = new Split();
  46. String date = split.time();
  47. String content = split.substrChinese(newsbody, 1500);
  48. Article article = new Article();
  49. article.setCategory_id(category_id);
  50. article.setArticle_title(title);
  51. article.setArticle_date(date);
  52. article.setArticle_content(newsbody);
  53. article.setArticle_summary(content);
  54. ArticleDao dao = new ArticleDaoImpl(); //调用接口实现方法
  55. dao.insert(article);
  56. %>
  57. <div class="tit">
  58. <%=title%>
  59. </div>
  60. <div class="slbox">
  61. <p style="font-size: 18px">发表时间:<%=split.time() %></p>
  62. <%=content.toString()%><br/>
  63. <a href="news.jsp">阅读原文</a>
  64. </div>
  65. <div style="text-align: center; margin-top: 15px;">
  66. <a href="category.jsp">查看文章所有分类</a>
  67. </div>
  68. </body>
  69. </html>

# 功能截图

$ 编写文章(新加文章分类选项)

Center

$ 发表文章成功,生成阅读摘要

Center 1

$ 阅读原文

Center 2

$ 查看所有分类,及每种分类包含的文章数(点开分类右边蓝色的数字,可以查看该分类所有文章)

Center 3

# 总结:又完成了部分功能,文章模块的功能实现了差不多了。

发表评论

表情:
评论列表 (有 0 条评论,230人围观)

还没有评论,来说两句吧...

相关阅读