博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CMS
阅读量:4979 次
发布时间:2019-06-12

本文共 7302 字,大约阅读时间需要 24 分钟。

一、任务简介:

  开发简单的CMS。在数据库中创建新闻数据库表news,包含(题目、作者、日期、正文等字段);创建HTML模板文件;读取数据库所有数据的信息,并使用新闻信息

替换模板文件中的占位符,从而每一条新闻生成一个HTML静态页面。

二、具体分析步骤及其代码

1.客户关系系统

2.准备连接使用的变量  以及配置BaseDao

package cn.cms.dao;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;public class BaseDao {     //将连接需要的信息都设置成该类的静态常量    //驱动字符串            public static final String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";            //url            public static final String url="jdbc:sqlserver://localhost:1433;DatabaseName=cms";                           public static final String username="sa";  //用户名                          public static final String password="1";  //密码    Connection con;PreparedStatement stat;//01.获取连接对象的方法public Connection getConnection() throws Exception{    //快乐星球        Class.forName(driver);    if(con==null||con.isClosed()){        con= DriverManager.getConnection(url,username,password);    }    return con;}//02.对所有select语句执行的方法public ResultSet executeQuery(String sql,Object...objs) throws Exception{    con=getConnection();    stat=con.prepareStatement(sql);    for (int i = 0; i < objs.length; i++) {        stat.setObject(i+1, objs[i]);    }    return stat.executeQuery();}}

 3.形成entity

 

package cn.cms.entity;public class News {        //ID, TITLE, AUTHOR, CREATETIME, CONTENT    private int ID;//新闻的ID    private String TITLE;//新闻标题    private String AUTHOR;//新闻的作者    private String    CREATETIME;//时间    private String    CONTENT;//新闻的内容        public int getID() {        return ID;    }    public void setID(int iD) {        ID = iD;    }    public String getTITLE() {        return TITLE;    }    public void setTITLE(String tITLE) {        TITLE = tITLE;    }    public String getAUTHOR() {        return AUTHOR;    }    public void setAUTHOR(String aUTHOR) {        AUTHOR = aUTHOR;    }    public String getCREATETIME() {        return CREATETIME;    }    public void setCREATETIME(String cREATETIME) {        CREATETIME = cREATETIME;    }    public String getCONTENT() {        return CONTENT;    }    public void setCONTENT(String cONTENT) {        CONTENT = cONTENT;    }        }

 

4.由于DB端只有一张表News,所以需要在dao层创建一个INewsDao接口

package cn.cms.dao;import java.util.List;import cn.cms.entity.News;public interface NewsDao {    //01.读取所有新闻列表的方法      public List
getAllNews() throws Exception; }

5.创建接口的实现类

package cn.cms.dao.impl;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;import org.junit.Test;import cn.cms.dao.BaseDao;import cn.cms.dao.NewsDao;import cn.cms.entity.News;public class NewsDaoSQLServerImpl extends BaseDao implements NewsDao {    //单测        @Test        public void testSelect() throws Exception{            List
list= getAllNews(); for (News news : list) { //System.out.print(news.getNewsTilte()); //ID, TITLE, AUTHOR, CREATETIME, CONTENT System.out.println(news.getTITLE()); System.out.println(news.getAUTHOR()); System.out.println(news.getCREATETIME()); System.out.println(news.getCONTENT()); } } @Override public List
getAllNews() throws Exception { List
list=new ArrayList
(); String sql="select * from NEWS"; //读取器 ResultSet rs = executeQuery(sql); if(rs!=null){ while(rs.next()){ //如果有数据,数据表中的每条记录对应实体类的一个实例 News news=new News(); //ID, TITLE, AUTHOR, CREATETIME, CONTENT //news.setID(rs.getInt("ID")); news.setTITLE(rs.getString("TITLE")); news.setAUTHOR(rs.getString("AUTHOR")); news.setCREATETIME(rs.getString("CREATETIME")); news.setCONTENT(rs.getString("CONTENT")); list.add(news); } } return list; }}

6.service中读取dao中的泛型数据

package cn.cms.manager;import java.util.List;import cn.cms.dao.NewsDao;import cn.cms.dao.impl.NewsDaoSQLServerImpl;import cn.cms.entity.News;import cn.cms.util.FileIO;public class NewsManager {    public void toHtml() throws Exception{        //读取模板文件内容,返回文件内容的字符串        FileIO  fileio=new FileIO();        String templaterstr = fileio.readFile("E:\\news\\news.template");        //读取数据库表,获取新闻列表        NewsDao newsdao=new NewsDaoSQLServerImpl();        List
newslist=newsdao.getAllNews(); //替换模板文件,为每一条新闻创建一个HTML文件显示其信息 for (int i = 0; i < newslist.size(); i++) { //获取一条新闻 News news=newslist.get(i); //使用该条新闻信息替换对应的占位符 String replacestr=new String(); replacestr=templaterstr; replacestr=replacestr.replace("{title}",news.getTITLE()); replacestr=replacestr.replace("{author}", news.getAUTHOR()); replacestr=replacestr.replace("{createtime}", news.getCREATETIME()); replacestr=replacestr.replace("{content}", news.getCONTENT()); //为该条新闻生成HTML文件 String filePath="E:\\news\\news"+i+".html"; fileio.writeFile(filePath,replacestr); } }}

7.借助工具类读取和写入流

package cn.cms.util;import java.io.FileReader;import java.io.FileWriter;public class FileIO {                public String readFile(String filePath) throws Exception{            //用字符流读取文本文件             FileReader reader=new FileReader(filePath);              //准备缓冲区              char[] chars=new char[1024];              int data;              String temp="";              while((data=reader.read(chars))!=-1){                  //char[]  ----------------->   String                   temp=new String(chars);                  System.out.println(temp);              }              return temp;        }          public void writeFile(String filePath,String str) throws Exception{            //字节流的写入              FileWriter writer=new FileWriter(filePath,true);              String word=str;              writer.write(word);              writer.close();              System.out.println("ok!!!");          }    }

8.在准备一个测试类就好了

package cn.cms.test;import cn.cms.manager.NewsManager;public class Test {    public static void main(String[] args) throws Exception {        NewsManager num=new NewsManager();        num.toHtml();    }    }

HTML的模板

            {title}        
标题: {title}
作者: {author}
时间: {createTime}
内容: {content}

 

 

 

总结:模板(template)和数据(Data)的隔离,以及重新整合,对学习

    和理解jsp有很大的帮助。   

转载于:https://www.cnblogs.com/yejiaojiao/p/5468321.html

你可能感兴趣的文章
optionMenu-普通菜单使用
查看>>
【MemSQL Start[c]UP 3.0 - Round 1 C】 Pie Rules
查看>>
Ognl中“%”、“#”、“$”详解
查看>>
我对应用软件——美团的看法
查看>>
struts2.x + Tiles2.x读取多个xml 配置文件
查看>>
表单校验之datatype
查看>>
python第六篇文件处理类型
查看>>
ubuntu16系统磁盘空间/dev/vda1占用满的问题
查看>>
grid网格布局
查看>>
JSP常用标签
查看>>
九涯的第一次
查看>>
处理器管理与进程调度
查看>>
向量非零元素个数_向量范数详解+代码实现
查看>>
java if 用法详解_Java编程中的条件判断之if语句的用法详解
查看>>
matlab sin函数 fft,matlab的fft函数的使用教程
查看>>
mysql adddate()函数
查看>>
mysql sin() 函数
查看>>
单片机复位电路
查看>>
php json_decode失败,返回null
查看>>
3-day3-list-truple-map.py
查看>>