JavaOOP项目 CMS内容管理系统
数据库里创建一个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内容管理系统的更多相关文章
- ThinkPHP项目CMS内容管理系统开发视频教程【20课】(3.02GB)
ThinkPHP背景介绍: ThinkPHP是一个免费开源的,快速.简单的面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业级应用开发而诞生的. ...
- PHP框架之ThinkPHP项目CMS内容管理系统源码及开发手册视频
http://download.csdn.net/download/duguqing/4203042
- 30 个很棒的 PHP 开源 CMS 内容管理系统
本文汇集了30个优秀的开源CMS建站系统,采用PHP开发.以下列表不分先后顺序. 1. AdaptCMS AdaptCMS Lite 是一个开源的CMS系统,主要特点是易用,而且可以轻松和其他系统接驳 ...
- 贝云cms内容管理系统(thinkphp5.0开源cms管理系统)
byCms包含文章,图片,下载,视频模型,基于thinkphp5.0.9,可无缝升级至thinkphp.1.0,是一套简单,易用的内容管理系统,旨在帮助开发者节约web应用后台开发时间和精力,以最快的 ...
- 基于thinkphp3.2.3开发的CMS内容管理系统 - ThinkPHP框架
基于thinkphp3.2.3开发的CMS内容管理系统 thinkphp版本:3.2.3 功能: --分类栏目管理 --文章管理 --用户管理 --友情链接管理 --系统设置 目前占时这些功能,更多功 ...
- 基于thinkphp3.2.3开发的CMS内容管理系统(二)- Rbac用户权限
基于thinkphp3.2.3开发的CMS内容管理系统 thinkphp版本:3.2.3 功能: --分类栏目管理 --文章管理 --商品管理 --用户管理 --角色管理 --权限管理 --友情链接管 ...
- 新能力 | 云开发CMS内容管理系统,5分钟搞定小程序管理后台
小程序·云开发的云调用能力,让用户可以免鉴权快速调用微信的开放能力,极大节约了开发成本.现在,大家期待已久的云开发 CMS 内容管理系统,终于上线啦!顺便提示,接下来还可以二次开发哦! 云开发 CMS ...
- 推荐八款.Net优秀的开源CMS 内容管理系统
1,老牌内容管理系统SiteServer CMS 推荐指数:5 SiteServer CMS 是.NET平台的CMS系统,也是一款拥有十年历史与广泛知名度的CMS系统,2017年5月初迈出了自成立以 ...
- 开源丨CloudBase CMS 内容管理系统!简单易用企业内容管理流
背景 云开发CloudBase CMS 是云开发推出的一站式云端内容管理系统,助力企业的数据运营管理工作. 开发者可以直接在云开发扩展能力中一键安装 CloudBase CMS,免费使用 CloudB ...
随机推荐
- IOS NSDate NSDateFormatter 导致相差8小时
时间问题应该是所有编程语言都要处理的.详细学过php的同学知道,php中也会有相差8小时的问题,然而php可以非常方便的解决的,直接设置下就好了 我最近在学习IOS的过程中,发现IOS的日期处理也是个 ...
- 读书笔记——《图解TCP/IP》(3/4)
经典摘抄 第五章 IP协议相关技术 1.DNS可以将网址自动转换为具体的IP地址. 2.主机识别码的识别方式:为每台计算机赋以唯一的主机名,在进行网络通信时,可以直接使用主机名称而无需输入一大长串的I ...
- mysql binlog恢复
MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库.用于slave端执行增删改,保持与maste ...
- WPF自定义RoutedEvent事件示例代码
************************* 引用网友,便于查找所用..... 创建自定义路由事件和应用分为6个步骤: (1)自定义路由事件参数对象 (2)声明并注册路由事件 (3)为路由事件添 ...
- php--group_concat()函数总结
group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果. 比较抽象,难以理解. 通俗点理解,其实是这样的:group_concat()会计算哪些行属于同一组 ...
- 设计模式:职责链模式(Chain Of Responsibility)
定 义:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止. 结构图: 处理请求类: //抽象处理类 abs ...
- Dreamweaver代码提示快捷键冲突
平时习惯使用Ctrl+空格进行输入法的切换,然后Dreamweaver代码提示的快捷键也是Ctrl+空格,那么只好把Dw的快捷键改掉吧, 选择菜单:编辑->快捷键 复制副本 选择编辑 找到&qu ...
- HTML-001-日期组件 layDate 演示
在日常的网页开发过程中,日期组件已经成为不可或缺的组件之一.同时,随着广大杰出攻城狮的不懈努力,也出现了很多优秀的日期组件,其中我个人觉得 layDate 日期组件是一个非常不错的组件,简洁易用,样式 ...
- 有了JSON.stringify(),处理json将变得更简单!!
之前处理json 需要拼接json字符串,但是,如果用上JSON.stringify()的话,忘了json语法以没关系了..... @{ ViewBag.Title = "GetStr&qu ...
- ssh secure shell client
登陆方式和putty一样