您的位置:首页 > 其它

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

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

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

     第一步:

创建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 {

@Override
public void insert(Article article) {
// TODO Auto-generated method stub
Connection 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页面,接受用户请求,调用模型参数,处理页面请求

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

 附加:系统运行截图:

  # 数据库存储



 # 编写文章



   # 博客摘要



  # 阅读原文

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐