博客系统开发推送第一季----编写发表博客,并生成阅读摘要
来源:互联网 发布: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
- 博客系统开发推送第一季----编写发表博客,并生成阅读摘要
- 发表第一个博客.
- 博客系统开发推送第二季----数据库设计
- 博客系统开发推送第三季----文章的归档分类
- 博客系统开发推送第五季----个人相册模块
- 博客系统开发推送第六季----留言板模块
- 第一份博客编写
- 发表自己的第一个博客文章
- 如何发表自己的第一个博客?
- 名人博客阅读摘要三:外部排序
- Django 快速搭建博客 第十一节(文章阅读量统计,自动生成文章摘要)
- 博客系统开发推送第四季----网站框架的搭建及博客模块功能的完善
- 第一次发表博客
- 离线发表csdn博客
- 初次发表博客
- 使用word2007发表博客
- 第一次发表博客
- 可以发表博客了?
- SpringBoot--使用@Async实现异步功能
- cocos2dx 自定义绑定lua
- linux操作系统下安装tomcat
- HDU 6023 Automatic Judge
- linux命令记录
- 博客系统开发推送第一季----编写发表博客,并生成阅读摘要
- JVM系列三:JVM参数设置、分析
- Python 与 C/C++ 交互的几种方式
- Linux下进程通信的八种方法
- 在Mybaties中进行数据查询时,表中字段名和属相名没有对应起来,查询的结果总null,一下是解决方法
- live555 rtsp rtp学习笔记
- python 内置数据结构的基本操作 —— tuple(2)
- Xshell和Xftp使用配置
- RTMP规范简单分析