数据库里创建一个News表,要有标题、作者、时间、内容等列。

1:首先要使用JDBC进行数据库连接,得先在项目里新建一个Folder,把Sqlserver 的驱动jar包导入。

2:使用MyEclipse创建一个HTML模板文件:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>{title}</title>

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="this is my page">

<meta http-equiv="content-type" content="text/html; charset=gb2312">

<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

</head>

<body>

<table align="center" width="95%" border="1">

<tr>

<td width="10"><b>标题:</b></td>

<td>{title}</td>

</tr>

<tr>

<td width="10"><b>作者:</b></td>

<td>{author}</td>

</tr>

<tr>

<td width="10"><b>时间:</b></td>

<td>{creataeTime}</td>

</tr>

<tr>

<td width="10"><b>内容:</b></td>

<td>{content}</td>

</tr>

</table>

</body>

</html>

2:在创建dao包、dao.impl包、entity包、manager包、test包、util包

在entity包里创建实体类(数据库相对应的实体类的字段):

package cn.cms.entity;

private String title;
     private String author;
     private String tiem;
     private String content;

01:在dao包里创建数据DataDao类来和数据库交互:

//定义驱动字符串
 static String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
 static String url="jdbc:sqlserver://localhost:1433;DatabaseName=MyNews";
 static String user="sa";
 static String password="";

Connection con=null;
 PreparedStatement ps=null;
 ResultSet rs=null;

//创建一个方法返回连接字符串
 public Connection getConnection(){
  //加载驱动
  try {
   Class.forName(driver);
   if(con==null){
    con=DriverManager.getConnection(url, user, password);
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  return con;
 }

//创建一个返回查询结果的方法
 public ResultSet executeQuery(String sql,Object...paras){
  //获取连接字符串
  con=getConnection();
  try {
   //执行SQL语句
   ps=con.prepareStatement(sql);
   //给参数赋值
   if(paras.length>0){
    for (int i = 0; i < paras.length; i++) {
                    ps.setObject(i+1, paras[i]);      
    }
   }
   //返回结果
   rs=ps.executeQuery();
  } catch (Exception e) {
   e.printStackTrace();
  }
 
  return rs;
 }

//创建一个返回增删改结果的方法
 public int executeUpdate(String sql,Object...paras){
  int count=0;
  //获取连接字符串
  con=getConnection();
  try {
   //执行SQL语句
   ps=con.prepareStatement(sql);
   //给参数赋值
   if(paras.length>0){
    for (int i = 0; i < paras.length; i++) {
     ps.setObject(i+1,paras[i]);
    }
   }
   count=ps.executeUpdate();
  } catch (Exception e) {
   // TODO: handle exception
  }
  return count;
 }

//创建一个关闭所有连接的方法
 public void closeResource(){
  try {
   if(rs!=null){
    rs.close();
   }
   if(ps!=null){
    ps.close();
   }
   if(con!=null){
    con.close();
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

02:再在dao包里创建一个接口类:

import java.util.List;

import cn.cms.entity.News;

public interface NewsDao {

List<News> getNews();

}

03:再在impl包里定义一个实现类继承自DataBase实现接口类News;

public class NewsImpl extends BaseDao implements NewsDao {

@Override  public List<News> getNews() {

List<News> list=new ArrayList<News>();

String sql="select title,author,time,content from news";

ResultSet rs=executeQuery(sql);

try {

while(rs.next()){

News news=new News();

news.setTitle(rs.getString(1));

news.setAuthor(rs.getString(2));

news.setTiem(rs.getString(3));

news.setContent(rs.getString(4));

list.add(news);

}

closeResource();

} catch (Exception e) {

e.printStackTrace();

}

return list;

}

04:再在util工具包里创建一个FileIO类,里面有两个方法,一读,一写;

public class FileIO {
   //读取文件的方法

public String  ReaderFile(String filePath){
    FileInputStream fs=null;
    StringBuffer sb=new StringBuffer();
    try {
  fs=new FileInputStream(filePath);
  byte[] bytes=new byte[1024];
  
  int size=0;
  while((size=fs.read(bytes))!=-1){
   String str=new String(bytes);
   sb.append(str);
  }
 } catch (Exception e) {
  e.printStackTrace();
 }
    return sb.toString();
   }

//写入文件的方法
   public void WriterFile(String newPath,String str){
    FileOutputStream fos=null;
    try {
  fos=new FileOutputStream(newPath);
  byte[] words=str.getBytes();
  fos.write(words,0,words.length);
 } catch (Exception e) {
  e.printStackTrace();
 }finally{
  try {
   if(fos!=null){
    fos.close();
   }
  } catch (Exception e2) {
   // TODO: handle exception
  }
 }

}

05:再在manager包里创建一个类,里面有一个把数据转换成HTML的方法;

public class NewsManager {
      public void toHtml(){
       //读取模板文件内容,返回文件内容字符串
     FileIO io=new FileIO();
     String str=io.ReaderFile("C:\\Documents and Settings\\Administrator\\Workspaces\\MyEclipse 8.5\\MyCMS\\src\\news.template.html");

//读取数据库列表,返回新闻列表
     NewsDao newsDao=new NewsImpl();
     List<News> list=newsDao.getNews();
     //替换模板文件,为每一条新闻创建一个HTML文件来显示其信息
     for (int i = 0; i < list.size(); i++) {
      //获取一条新闻
   News newes=list.get(i);
   //使用该条新闻信息替换对应占位符
   String newStr=new String();
   newStr=str;
   newStr=newStr.replace("{title}", newes.getTitle());
   newStr=newStr.replace("{author}", newes.getAuthor());
   newStr=newStr.replace("{creataeTime}", newes.getTiem());
   newStr=newStr.replace("{content}",newes.getContent());
   String newPath="D:\\news"+i+".html";
   io.WriterFile(newPath, newStr);
   System.out.println("第"+i+"条新闻完成!");
  }
     
      }
}

06:最后在test包里创建一个带main方法的类:

NewsManager nm=new NewsManager();
  nm.toHtml();

进行测试;

JavaOOP项目 CMS内容管理系统的更多相关文章

  1. ThinkPHP项目CMS内容管理系统开发视频教程【20课】(3.02GB)

    ThinkPHP背景介绍:     ThinkPHP是一个免费开源的,快速.简单的面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业级应用开发而诞生的. ...

  2. PHP框架之ThinkPHP项目CMS内容管理系统源码及开发手册视频

    http://download.csdn.net/download/duguqing/4203042

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

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

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

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

  5. 基于thinkphp3.2.3开发的CMS内容管理系统 - ThinkPHP框架

    基于thinkphp3.2.3开发的CMS内容管理系统 thinkphp版本:3.2.3 功能: --分类栏目管理 --文章管理 --用户管理 --友情链接管理 --系统设置 目前占时这些功能,更多功 ...

  6. 基于thinkphp3.2.3开发的CMS内容管理系统(二)- Rbac用户权限

    基于thinkphp3.2.3开发的CMS内容管理系统 thinkphp版本:3.2.3 功能: --分类栏目管理 --文章管理 --商品管理 --用户管理 --角色管理 --权限管理 --友情链接管 ...

  7. 新能力 | 云开发CMS内容管理系统,5分钟搞定小程序管理后台

    小程序·云开发的云调用能力,让用户可以免鉴权快速调用微信的开放能力,极大节约了开发成本.现在,大家期待已久的云开发 CMS 内容管理系统,终于上线啦!顺便提示,接下来还可以二次开发哦! 云开发 CMS ...

  8. 推荐八款.Net优秀的开源CMS 内容管理系统

    1,老牌内容管理系统SiteServer CMS  推荐指数:5 SiteServer CMS 是.NET平台的CMS系统,也是一款拥有十年历史与广泛知名度的CMS系统,2017年5月初迈出了自成立以 ...

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

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

随机推荐

  1. ASP.NET网页生成EXCEL并下载(利用DataGrid或GridView等)

    前几天要在后台查询数据库内容(用entity framework),将查询出来的信息(List或DataTable形式)转成EXCEL供用户下载.经过谷歌.百度搜索,终于搜出了一些代码.似乎可用了,结 ...

  2. Bootstrap 进度条媒体对象和 Well 组件

    一.Well 组件 这个组件可以实现简单的嵌入效果. //嵌入效果 <div class="well"> Bootstrap </div> //有 lg 和 ...

  3. windbg 命令 gchandles

    使用windbg导出dump文件 .dump /ma D:\testdump.dmp gchandles命令列出句柄,同时列出句柄引用的对象,演示代码如下: using System; using S ...

  4. JS中数组对象去重

    JS数组去重 JS中对数组去重最好不要用unique方法,该方法主要是对dom节点数组的去重,如果对普通的数组元素去重只会去掉与之相邻的重复元素,也就是如果数组中还有不相邻的重复元素存在,将不会被去掉 ...

  5. 20145211 《Java程序设计》第2周学习总结——桃花依旧笑春风

    教材学习内容总结 基本类型 整数 short 2字节,int 4字节,long 8字节 字节 byte 1字节 浮点数 float 4字节,double 8字节 字符 char 2字节(包括字母.汉字 ...

  6. RTSP协议详解

        RTSP(Real Time Streaming Protocol)是由Real Network和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议.RTSP对流媒体提 ...

  7. openssl下载

    openssl的windows版本.微信支付开发中退款接口中使用到. http://pan.baidu.com/s/1c0vQy6O

  8. Android 利用ListView制作带竖线的多彩表格

    1.listview与GridView 其实Android本身是有表格控件(GridView)的,但是GridView的每一列的宽度被限定为一样宽,有时设计表格时,列宽不可能为同一宽度,所有可以用Li ...

  9. Android 在Windows上安装FFmpeg程序

    FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.它提供了录制.转换以及流化音视频的完整解决方案.它包含了非常先进的音频/视频编解码库libavcodec. 该程序 ...

  10. C# --通过枚举获取系统颜色

    public static System.Drawing.Color GetSystemColor(int i) { Array Colors = System.Enum.GetValues(type ...