博客系统开发推送第一季----编写发表博客,并生成阅读摘要

来源:互联网 发布:ds6与马自达cx4知乎 编辑:程序博客网 时间:2024/06/05 06:08

     有一个编写博客系统的念头,于是便一发不可收拾了,最近课也比较多,不可能像放假那样全身心地搞开发了,那么一步步来吧,虽然开发周期有点长。

     首先完成的是编写发表博客并将博客信息存储到数据库,并生成阅读摘要,以便用户随时读取查看。

     第一步:

创建article表:

CREATE TABLE `article` (  `article_id` int(10) NOT NULL AUTO_INCREMENT,  `article_title` varchar(50) COLLATE utf8_unicode_ci NOT NULL,  `article_date` date DEFAULT NULL,  `article_content` text COLLATE utf8_unicode_ci,  `article_summary` text COLLATE utf8_unicode_ci NOT NULL,  PRIMARY KEY (`article_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

    第二步:JDBC连接数据库(初期要查看数据库连接的情况,就不使用数据库连接池,后期功能完善再换),看是否能连接上,并编写根据数据表列名生成JavaBean

    DButil.java

package com.DBConnect;import java.sql.DriverManager;  import java.sql.SQLException;  import com.mysql.jdbc.Connection;    public class DButil   {      private static String driver;      private static String url;      private static String username;      private static String password;            static {          driver="com.mysql.jdbc.Driver";          url="jdbc:mysql://localhost:3306/blog?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull";          username="root";          password="123456";      }              /*       * 打开数据库       */            public static Connection open()       {              try {                  System.out.println("数据库连接成功!");                   Class.forName(driver);                  return (Connection) DriverManager.getConnection(url,username,password);              } catch (Exception e) {                  // TODO Auto-generated catch block                  System.out.println("数据库连接失败!");                   e.printStackTrace();              }          return null;      }            /*      * 关闭数据库      */       public static void close(Connection conn)         {             if(conn!=null)             {                 try               {                     conn.close();                 } catch (SQLException e) {                     // TODO Auto-generated catch block                     e.printStackTrace();                 }             }         }    }  

 Article.java

package com.bean;import java.sql.Blob;import java.util.Date;public class Article {  private Integer article_id;  private String  article_title;  private String  article_date;  private String    article_content;  private String  article_summary;public Integer getArticle_id() {return article_id;}public void setArticle_id(Integer article_id) {this.article_id = article_id;}public String getArticle_title() {return article_title;}public void setArticle_title(String article_title) {this.article_title = article_title;}public String getArticle_date() {return article_date;}public void setArticle_date(String article_date) {this.article_date = article_date;}public String getArticle_content() {return article_content;}public void setArticle_content(String article_content) {this.article_content = article_content;}public String getArticle_summary() {return article_summary;}public void setArticle_summary(String article_summary) {this.article_summary = article_summary;}    }

  第三步:编写业务逻辑接口,及实现类

  ArticleDao.java

package com.dao;import com.bean.Article;public interface ArticleDao {public void insert(Article article);public Article query(int article_id);}

ArticleDaoImpl.java

package com.dao;import java.sql.Blob;import java.sql.Date;import java.sql.ResultSet;import java.sql.SQLException;import com.DBConnect.DButil;import com.bean.Article;import com.mysql.jdbc.Connection;import com.mysql.jdbc.PreparedStatement;public class ArticleDaoImpl implements ArticleDao {@Overridepublic void insert(Article article) {// TODO Auto-generated method stubConnection conn=null;PreparedStatement ps=null;try {conn = DButil.open();String sql="insert into article(article_title,article_date,article_content,article_summary) values(?,?,?,?)"; ps=(PreparedStatement) conn.prepareStatement(sql);ps.setString(1, article.getArticle_title());ps.setString(2, article.getArticle_date());ps.setString(3, article.getArticle_content());ps.setString(4, article.getArticle_summary());ps.executeUpdate();System.out.println("数据库读写成功!");} catch (SQLException e) {// TODO Auto-generated catch block System.out.println("数据库读写失败!");e.printStackTrace();}finally {DButil.close(conn);}} public Article query(int article_id)      {          String sql="select * from article where article_id=?";          Connection conn=DButil.open();          try {              PreparedStatement pstmt=(PreparedStatement) conn.prepareStatement(sql);              pstmt.setInt(1,article_id);              ResultSet rs=pstmt.executeQuery();              if(rs.next())              {                  String title = rs.getString(2);                  String date = rs.getString(3);                  String newsbody = rs.getString(4);                String content = rs.getString(5);                Article Ar = new Article();                Ar.setArticle_id(article_id);                Ar.setArticle_title(title);                Ar.setArticle_date(date);                Ar.setArticle_content(newsbody);                Ar.setArticle_summary(content);                System.out.println(Ar);                System.out.println("查询数据成功!");                return Ar;              }          } catch (SQLException e) {              // TODO Auto-generated catch block          System.out.println("查询数据失败!");            e.printStackTrace();          }          finally {              DButil.close(conn);          }          return null;      }   }

 第四步:编写文章内容截取类及系统时间生成类

Split.java

package com.content;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;public class Split{    //java判断中英文长度并截取部分添加省略号//    public static void main(String[] args)//    {//        System.out.println(substrChinese("将一张图片存储在mysql中,并读取出来(BLOB数据:插入BLOB类型的数据必须使用PreparedStatement,因为插入BLOB类型的数据无法使用字符串拼写)", 20));//    }    /**     * 截取字符串并添加..     * @param content 输入的内容     * @param maxSize 最大长度     * @return     */    public static String substrChinese(String content, Integer maxSize)    {        String result = content;        if (result!="")        {            int valueLength = 0;            String chinese = "[\u0391-\uFFE5]";            /* 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1 */            for (int i = 0; i < result.length(); i++)            {                /* 获取一个字符 */                String temp = result.substring(i, i + 1);                /* 判断是否为中文字符 */                if (temp.matches(chinese))                {                    /* 中文字符长度为2 */                    valueLength += 2;                }                else                {                    /* 其他字符长度为1 */                    valueLength += 1;                }            }            if (valueLength > maxSize)            {                result = result.substring(0, maxSize) + "..";            }        }        return result;    }    public String time()    {        Date date=new Date();        DateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        String time=format.format(date);        return time;    }}

  第五步:编写JSP页面,接受用户请求,调用模型参数,处理页面请求


 以上就是本系统编写发表博客,生成文章摘要的核心代码


 附加:系统运行截图:

  # 数据库存储



 # 编写文章



   # 博客摘要


  # 阅读原文



0 0
原创粉丝点击