架构

NewsDaoSQLServerImpl

  1. public class NewsDaoSQLServerImpl extends BaseDao implements NewsDao {
  2.  
  3. public void testSelect() throws Exception {
  4. List<News> list = getAllNews();
  5. for (News news : list) {
  6. System.out.println(news.getTITLE());
  7. System.out.println(news.getAUTHOR());
  8. System.out.println(news.getCREATETIME());
  9. System.out.println(news.getCONTENT());
  10. }
  11. }
  12.  
  13. @Override
  14. public List<News> getAllNews() throws Exception {
  15. List<News> list = new ArrayList<News>();
  16. String sql = "select * from book";
  17. // 读取器
  18. ResultSet rs = executeQuery(sql);
  19. if (rs != null) {
  20. while (rs.next()) {
  21. // 如果有数据,数据表中的每条记录对应实体类的一个实例
  22. News news = new News();
  23. news.setAUTHOR(rs.getString("AUTHOR"));//作家
  24. news.setCREATETIME(rs.getString("CREATETIME"));//创建时间
  25. news.setTITLE(rs.getString("TITLE"));//标题
  26. news.setCONTENT(rs.getString("CONTENT"));//内容
  27. list.add(news);
  28. }
  29. }
  30. return list;
  31. }
  32.  
  33. }

NewsDao

  1. public interface NewsDao {
  2. // 读取所有新闻列表的方法
  3. public List<News> getAllNews() throws Exception;
  4. }

NewsManager

  1. public class NewsManager {
  2.  
  3. public void toHtml() throws Exception {
  4. // 读取模板文件内容,返回文件内容的字符串
  5. FileIO fileio = new FileIO();
  6. String templaterstr = fileio.readFile("E:\\news\\news.template");
  7. // 读取数据库表,获取新闻列表
  8. NewsDao newsdao = new NewsDaoSQLServerImpl();
  9. List<News> newslist = newsdao.getAllNews();
  10. // 替换模板文件,为每一条新闻创建一个HTML文件显示其信息
  11. for (int i = ; i < newslist.size(); i++) {
  12. // 获取一条新闻
  13. News news = newslist.get(i);
  14. // 使用该条新闻信息替换对应的占位符
  15. String replacestr = new String();
  16. replacestr = templaterstr;
  17. replacestr = replacestr.replace("{title}", news.getTITLE());
  18. replacestr = replacestr.replace("{author}", news.getAUTHOR());
  19. replacestr = replacestr.replace("{createtime}", news.getCREATETIME());
  20. replacestr = replacestr.replace("{content}", news.getCONTENT());
  21. // 为该条新闻生成HTML文件
  22. String filePath = "E:\\news\\news" + i + ".html";
  23. fileio.writeFile(filePath, replacestr);
  24. }
  25. }
  26. }

News

  1. public class News {
  2. // ID, TITLE, AUTHOR, CREATETIME, CONTENT
  3. private int ID;// 新闻的ID
  4. private String TITLE;// 新闻标题
  5. private String AUTHOR;// 新闻的作者
  6. private String CREATETIME;// 时间
  7. private String CONTENT;// 新闻的内容
  8.  
  9. public int getID() {
  10. return ID;
  11. }
  12.  
  13. public void setID(int iD) {
  14. ID = iD;
  15. }
  16.  
  17. public String getTITLE() {
  18. return TITLE;
  19. }
  20.  
  21. public void setTITLE(String tITLE) {
  22. TITLE = tITLE;
  23. }
  24.  
  25. public String getAUTHOR() {
  26. return AUTHOR;
  27. }
  28.  
  29. public void setAUTHOR(String aUTHOR) {
  30. AUTHOR = aUTHOR;
  31. }
  32.  
  33. public String getCREATETIME() {
  34. return CREATETIME;
  35. }
  36.  
  37. public void setCREATETIME(String cREATETIME) {
  38. CREATETIME = cREATETIME;
  39. }
  40.  
  41. public String getCONTENT() {
  42. return CONTENT;
  43. }
  44.  
  45. public void setCONTENT(String cONTENT) {
  46. CONTENT = cONTENT;
  47. }
  48.  
  49. }

BaseDao

  1. public class BaseDao {
  2. // 定义四个静态常量,保存数据连接信息
  3. private static String driver="com.mysql.jdbc.Driver";
  4. private static String url="jdbc:mysql://localhost:3306/newsmgr";
  5. private static String username="root";
  6. private static String password = "";
  7.  
  8. Connection con;
  9. PreparedStatement stat;
  10.  
  11. // 获取连接对象的方法
  12. public Connection getConnection() throws Exception {
  13. Class.forName(driver);
  14. if (con == null || con.isClosed()) {
  15. con = DriverManager.getConnection(url, username, password);
  16. }
  17. return con;
  18. }
  19.  
  20. // 对所有select语句执行的方法
  21. public ResultSet executeQuery(String sql, Object... objs) throws Exception {
  22. con = getConnection();
  23. stat = con.prepareStatement(sql);
  24. for (int i = ; i < objs.length; i++) {
  25. stat.setObject(i + , objs[i]);
  26. }
  27. ResultSet rs = stat.executeQuery();
  28. return rs;
  29. }
  30. }

Test

  1. public class Test {
  2.  
  3. public static void main(String[] args) throws Exception {
  4. NewsManager num = new NewsManager();
  5. num.toHtml();
  6. }
  7.  
  8. }

CMS简单内容管理系统的更多相关文章

  1. Orchard是一个了不起CMS(内容管理系统)

    在这个系列中,我们将共同经历从头开始构建一个Orchard模块的过程! 虽然Orchard是一个了不起CMS(内容管理系统),有着强大的功能和令人振奋的架构,可以无限的扩展,但它可能需要花费一定时间, ...

  2. CMS (内容管理系统)

    ylbtech-Miscellaneos:CMS (内容管理系统) CMS是"Content Management System"的缩写,意为"内容管理系统". ...

  3. 项目视频讲解_[HeyJava][尚学堂][CMS文章内容管理系统]

    [HeyJava][尚学堂][CMS文章内容管理系统] http://pan.baidu.com/s/1c0imHrE

  4. Dede cms文章内容管理系统安全漏洞!如何有效防止DEDE织梦系统被挂木马安全设置

    第一.安装Dede的时候数据库的表前缀,最好改一下,不要用dedecms默认的前缀dede_,可以改成ljs_,随便一个无规律的.难猜到的前缀即可. 第二.后台登录一定要开启验证码功能,将默认管理员a ...

  5. 【Web探索之旅】第二部分第三课:框架和内容管理系统

    内容简介 1.第二部分第三课:框架和内容管理系统 2.第二部分第四课预告:数据库   第二部分第三课:框架和内容管理系统 上一课我们介绍了服务器端的编程语言,有PHP,Java,Python,Ruby ...

  6. 开源丨CloudBase CMS 内容管理系统!简单易用企业内容管理流

    背景 云开发CloudBase CMS 是云开发推出的一站式云端内容管理系统,助力企业的数据运营管理工作. 开发者可以直接在云开发扩展能力中一键安装 CloudBase CMS,免费使用 CloudB ...

  7. 30 个很棒的 PHP 开源 CMS 内容管理系统

    本文汇集了30个优秀的开源CMS建站系统,采用PHP开发.以下列表不分先后顺序. 1. AdaptCMS AdaptCMS Lite 是一个开源的CMS系统,主要特点是易用,而且可以轻松和其他系统接驳 ...

  8. django的CMS系统(内容管理系统)

    一.什么是CMS系统 CMS具有许多基于模板的优秀设计,可以减少开发的成本. CMS的功能并不只限于文本处理,它也可以处理图片.Flash动画.声像流.图像甚至电子邮件档案. CMS还分各个平台脚本种 ...

  9. 贝云cms内容管理系统(thinkphp5.0开源cms管理系统)

    byCms包含文章,图片,下载,视频模型,基于thinkphp5.0.9,可无缝升级至thinkphp.1.0,是一套简单,易用的内容管理系统,旨在帮助开发者节约web应用后台开发时间和精力,以最快的 ...

随机推荐

  1. spring cloud 系列第1篇 —— eureka 服务的注册与发现 (F版本)

    源码仓库地址:https://github.com/heibaiying/spring-samples-for-all 一.eureka 简介 Spring Cloud Eureka使用Netflix ...

  2. 系统学习 Java IO (十二)----数据流和对象流

    目录:系统学习 Java IO---- 目录,概览 DataInputStream/DataOutputStream 允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型. 要想使用 ...

  3. HTML行内元素、块级元素、行内块级元素的特点与区别

    元素 HTML 元素指的是从开始标签(start tag)到结束标签(end tag)的所有代码. 元素分类方式 HTML 可以将元素分类方式分为行内元素.块状元素和行内块状元素三种,这三者可以通过设 ...

  4. 【java自定义注解1】java自定义注解-属性

    关于自定义注解,以前项目种应用的不多,最近看新项目过程中发现了挺多自定义注解相关内容,使用起来比较巧妙,于是 总结了两种方式,记录如下: 第一种:结合反射进行属性注入,代码如下: 1.定义一个注解: ...

  5. .NetCore中三种注入方式的思考

    该篇内容由个人博客点击跳转同步更新!转载请注明出处! .NetCore彻底诠释了"万物皆可注入"这句话的含义,在.NetCore中到处可见注入的使用.因此core中也提供了三种注入 ...

  6. There is no getter for property named 'username' in 'class Model1.User'-----报错解决

    There is no getter for property named 'username' in 'class Model1.User' -----Model Model1.User'中没有名为 ...

  7. [apue] 测试管道容量的一些疑问

    所谓管道的容量,指不消费(读)的情况下,最大能写入的数据量.有两种方式来测试一个管道的容量: 1)使用阻塞写,每次写一个字节,并打印写入的总字节数,最后写入阻塞时,上次打印的就是管道的容量: 2)使用 ...

  8. kubernetes实战之consul简单测试环境搭建及填坑

    这一节内容有点长,我们将介绍如何基于docker搭建一client一server的consul测试环境,以及如何搭建多server consul测试集群.在基于docker搭建多server的cons ...

  9. Maven项目读取resources下文件的路径

    要取编译后的路径,而不是你看到的src/main/resources的路径.如下: URL url = 类名.class.getClassLoader().getResource("conf ...

  10. POJ 2449:Remmarguts' Date(A* + SPFA)

    题目链接 题意 给出n个点m条有向边,源点s,汇点t,k.问s到t的第k短路的路径长度是多少,不存在输出-1. 思路 A*算法是启发式搜索,通过一个估价函数 f(p) = g(p) + h(p) ,其 ...