博客系统开发推送第一季----编写发表博客,并生成阅读摘要
2017-05-09 10:36
302 查看
有一个编写博客系统的念头,于是便一发不可收拾了,最近课也比较多,不可能像放假那样全身心地搞开发了,那么一步步来吧,虽然开发周期有点长。
首先完成的是编写发表博客并将博客信息存储到数据库,并生成阅读摘要,以便用户随时读取查看。
第一步:
创建article表:
第二步:JDBC连接数据库(初期要查看数据库连接的情况,就不使用数据库连接池,后期功能完善再换),看是否能连接上,并编写根据数据表列名生成JavaBean
DButil.java
Article.java
第三步:编写业务逻辑接口,及实现类
ArticleDao.java
ArticleDaoImpl.java
第四步:编写文章内容截取类及系统时间生成类
Split.java
第五步:编写JSP页面,接受用户请求,调用模型参数,处理页面请求
以上就是本系统编写发表博客,生成文章摘要的核心代码
附加:系统运行截图:
# 数据库存储
# 编写文章
# 博客摘要
# 阅读原文
首先完成的是编写发表博客并将博客信息存储到数据库,并生成阅读摘要,以便用户随时读取查看。
第一步:
创建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页面,接受用户请求,调用模型参数,处理页面请求
以上就是本系统编写发表博客,生成文章摘要的核心代码
附加:系统运行截图:
# 数据库存储
# 编写文章
# 博客摘要
# 阅读原文
相关文章推荐
- 开发者是如何提升技能水平的 发表于1小时前| 770次阅读| 来源SquareSpace| 1 条评论| 作者Denis Gobo 开源程序员博客代码编程经验分享 摘要:作为一个技术开发人员,不断的学
- 博客系统开发推送第四季----网站框架的搭建及博客模块功能的完善
- Django 快速搭建博客 第十一节(文章阅读量统计,自动生成文章摘要)
- 博客系统开发推送第五季----个人相册模块
- 基于ssm框架的个人博客系统(10)--编写博客页面开发
- 博客系统开发推送第二季----数据库设计
- Django 快速搭建博客 第十一节(文章阅读量统计,自动生成文章摘要)
- 博客系统开发推送第三季----文章的归档分类
- 博客系统开发推送第六季----留言板模块
- 用Django来开发博客系统
- 我的博客网站开发3——博客首页功能实现之各排行版(阅读数,评论数,推荐数)的数据绑定
- 开源博客QBlog开发者视频教程:开篇-开发基础配置与系统运行(一)
- windows8 metro开发, 向系统推送xml方法,以及对xml签名
- 我的博客网站开发4——博客首页功能实现之博文摘要
- 开源博客QBlog开发者视频教程:开篇-开发基础配置与系统运行(一)
- 【【【【拉票贴】】】】欢迎经常阅读敏捷开发博客文章的网友前来投票
- 服务器后台系统编写摘要
- 编写软件架构文档说明,第 2 部分: 开发系统上下文
- RDIFramework.NET — 基于.NET的快速信息化系统开发框架- 5.4平台日志、异常管理、生成自动升级配置文件模块
- 对自己的博客做了更新,专注:php程序开发、php商城开发、PHP会员系统开发,地点:南京