`
longgangbai
  • 浏览: 7257742 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

jeecms v5 系统安装设计和实现以及问题

阅读更多

     在jeecms v5的系统安装中,安装系统提示可以安装系统。

设计思路如下:

       提示用户安装并遵守协议-----》设置相关的系统参数信息----》创建数据库---》创建表---》导入初始化数据---》跟新数据库配置----》将数据库信息持久化xml---》更新web.xml文件---》提示安装成功。

 

   安装

<meta http-equiv="refresh" content="3;URL=install/index.html"/>

您还没有安装JEECMS3秒钟之后自动跳转到安装页面。<br/>

如果您的浏览器长时间没有反应,请直接点击<href="install/index.html">JEECMS安装</a>

 

install/index.html:一般是同意安装页

<script type="text/javascript">

function formSubmit() {

    if(document.getElementById('license_agree').checked==false){

       alert('请同意我们的协议');

       return false;

    }

    document.getElementById('license_form').submit();

}

</script>

<form id="license_form" action="install_params.jsp" method="post">

<input type="button" class="btn" onclick="formSubmit();" value="下一步>"/>

进入安装数据库和参数页:

<form action="install_setup.jsp" method="post" onsubmit="return formSubmit();">

<tr>

        <td height="30" align="right">域名:</td>

        <td align="left"><input name="domain" type="text" class="input"value="<%=request.getServerName()%>"/></td>

              <td align="left">系统已经检测出您的域名,请勿改动</td>

      </tr>

      <tr>

        <td height="30" align="right">部署路径:</td>

        <td align="left"><input name="cxtPath" type="text"class="input" value="<%=request.getContextPath()%>"/></td>

              <td align="left">系统已经检测出您的部署路径,请勿改动</td>

      </tr>

     

安装:

 

 

<%@page contentType="text/html; charset=gbk" language="java"import="com.jeecms.core.util.*,java.util.*"%>

<%

String dbFileName = "/install/db/jeecms-db-2.4.2-final.sql";

    String initFileName = "/install/db/jeecms-init-2.4.2-final.sql";

    //创建数据库

    if ("true".equals(isCreateDb)) {

       Install.createDb(dbHost, dbPort, dbName, dbUser, dbPassword);

    } else {

       Install.changeDbCharset(dbHost, dbPort, dbName, dbUser, dbPassword);

    }

    //创建表

    if ("true".equals(isCreateTable)) {

       String sqlPath = application.getRealPath(dbFileName);

       List<String> sqlList = Install.readSql(sqlPath);

       Install.createTable(dbHost, dbPort, dbName, dbUser, dbPassword,

              sqlList);

    }

    //初始化数据

    if ("true".equals(isInitData)) {

       String initPath = application.getRealPath(initFileName);

       List<String> initList = Install.readSql(initPath);

       Install.createTable(dbHost, dbPort, dbName, dbUser, dbPassword,

              initList);

    }

    //更新配置

    Install.updateConfig(dbHost, dbPort, dbName, dbUser, dbPassword,

           domain, cxtPath, port);

    //处理数据库配置文件

    String dbXmlPath = application.getRealPath(dbXmlFileName);

    Install

           .dbXml(dbXmlPath, dbHost, dbPort, dbName, dbUser,

                  dbPassword);

    //处理web.xml

    String webXmlFromPath = application.getRealPath(webXmlFrom);

    String webXmlToPath = application.getRealPath(webXmlTo);

    Install.webXml(webXmlFromPath, webXmlToPath);

//Util里面

/**

 * 安装类

 *

 * @author admin

 *

 */

public class Install {

    public static void dbXml(String fileName, String dbHost, String dbPort,

           String dbName, String dbUser, String dbPassword) throwsException {

       String s = FileUtils.readFileToString(new File(fileName));

       s = s.replaceFirst("DB_HOST", dbHost);

       s = s.replaceFirst("DB_PORT", dbPort);

       s = s.replaceFirst("DB_NAME", dbName);

       s = s.replaceFirst("DB_USER", dbUser);

       s = s.replaceFirst("DB_PASSWORD", dbPassword);

       FileUtils.writeStringToFile(new File(fileName), s);

    }

 

    public static Connection getConn(String dbHost, String dbPort,

           String dbName, String dbUser, String dbPassword) throwsException {

       Class.forName("com.mysql.jdbc.Driver").newInstance();

       String connStr = "jdbc:mysql://" + dbHost + ":" + dbPort + "/"+ dbName

              + "?user=" + dbUser + "&password=" + dbPassword

              + "&characterEncoding=GBK";

       Connection conn = DriverManager.getConnection(connStr);

       return conn;

    }

 

    public static void webXml(String fromFile, String toFile) throwsException {

       FileUtils.copyFile(new File(fromFile), new File(toFile));

    }

 

    /**

     * 创建数据库

     *

     * @param dbHost

     * @param dbName

     * @param dbPort

     * @param dbUser

     * @param dbPassword

     * @throws Exception

     */

    public static void createDb(String dbHost, String dbPort, String dbName,

           String dbUser, String dbPassword) throws Exception {

       Class.forName("com.mysql.jdbc.Driver").newInstance();;

       String connStr = "jdbc:mysql://" + dbHost + ":" + dbPort + "?user="

              + dbUser + "&password=" + dbPassword +"&characterEncoding=GBK";

       Connection conn = DriverManager.getConnection(connStr);

       Statement stat = conn.createStatement();

       String sql = "drop database if exists " + dbName;

       stat.execute(sql);

       sql = "create database " + dbName

              + " CHARACTER SET GBK";

       stat.execute(sql);

       stat.close();

        conn.close();

    }

 

    public static void changeDbCharset(String dbHost, String dbPort,

           String dbName, String dbUser, String dbPassword) throwsException {

       Connection conn = getConn(dbHost, dbPort, dbName, dbUser, dbPassword);

       Statement stat = conn.createStatement();

       String sql = "ALTER DATABASE " + dbName

              + " CHARACTER SET GBK";

       stat.execute(sql);

       stat.close();

       conn.close();

    }

 

    /**

     * 创建表

     *

     * @param dbHost

     * @param dbName

     * @param dbPort

     * @param dbUser

     * @param dbPassword

     * @param sqlList

     * @throws Exception

     */

    public static void createTable(String dbHost, String dbPort, String dbName,

           String dbUser, String dbPassword, List<String> sqlList)

           throws Exception {

       Connection conn = getConn(dbHost, dbPort, dbName, dbUser, dbPassword);

       Statement stat = conn.createStatement();

       for (String dllsql : sqlList) {

           stat.addBatch(dllsql);

       }

       stat.executeBatch();

       stat.close();

       conn.close();

    }

 

    /**

     * 更新配置

     *

     * @param dbHost

     * @param dbName

     * @param dbPort

     * @param dbUser

     * @param dbPassword

     * @param domain

     * @param cxtPath

     * @param port

     * @throws Exception

     */

    public static void updateConfig(String dbHost, String dbPort,

           String dbName, String dbUser, String dbPassword, String domain,

           String cxtPath, String port) throws Exception {

       Connection conn = getConn(dbHost, dbPort, dbName, dbUser, dbPassword);

       Statement stat = conn.createStatement();

       String sql = "update CORE_WEBSITE set DOMAIN='" + domain +"'";

       stat.executeUpdate(sql);

       sql = "update CORE_GLOBAL set CONTEXT_PATH='" + cxtPath +"',PORT="

              + port;

       stat.executeUpdate(sql);

       stat.close();

       conn.close();

    }

 

    /**

     * 读取sql语句。/*开头为注释,;sql结束。

     *

     * @param fileName

     *            sql文件地址

     * @return list of sql

     * @throws Exception

     */

    public static List<String> readSql(String fileName) throws Exception {

        BufferedReader br = new BufferedReader(new InputStreamReader(

                new FileInputStream(fileName), Constants.ENCODING));

        List<String> sqlList = new ArrayList<String>();

        StringBuilder sqlSb = new StringBuilder();

        String s = null;

        while ((s = br.readLine()) != null) {

            if (s.startsWith("/*")) {

                continue;

            }

            if (s.endsWith(";")) {

                sqlSb.append(s);

                sqlSb.setLength(sqlSb.length() - 1);

                sqlList.add(sqlSb.toString());

                sqlSb.setLength(0);

            } else {

                sqlSb.append(s);

            }

        }

        br.close();

        return sqlList;

    }

}

 

<!--EndFragment-->

 

 

问题:

      在系统安装过程中既然用户可以通过请求数据库文件修改数据库信息,如果安装的信息不删除,用户完全可以通过这种方式重置数据库或者破坏数据库信息。

     建议部署完毕采用手工删除install中文件的信息。

分享到:
评论

相关推荐

    jeecms9.2安装文件

    欢迎使用JEECMS v9.2版,请按照以下步骤进行软件安装: 一、安装运行环境(JDK7+TOMCAT7+MYSQL5及以上,具体安装过程请参考本下载包中的相关说明文档); 二、将程序解压后的ROOT文件夹拷贝到tomcat安装目录下的...

    JEECMS安装教程详解

    本教程主要对JEECMS安装步骤以及在JEECMS安装过程中常见的问题进行了详细的介绍与解答。

    jeecms数据库设计.pdf

    jeecms数据库设计.pdf

    JEECMS系统使用说明书

    JEECMS系统使用说明书

    Jeecms开源内容管理系统

    Jeecms开源内容管理系统,下载看看!

    jeecms内容管理系统

    系统源码编译过程中需要额外的一些jar包,如果希望重新编译jeecms源码,需要用到common-lib文件夹下的jar包。

    JEECMS2012系统使用手册2012-07美化版(pdf格式)

    JEECMS 2012 系统使用手册2012-07美化版,帮助文档,标签说明,(doc,docx,pdf)三种格式 CHM 系统说明书

    JEECMS V6系统使用说明书

    JEECMS V6系统使用说明书

    jeecms9.2源代码文件

    jeecms9.2源代码文件 环境软件可以从以下网址中获得 Jdk 7.0 下载址: http://java.sun.com/javase/downloads/index.jsp Tomcat7 下载地址:https://tomcat.apache.org/download-70.cgi MySQL 5.0.22 下载地址:...

    网站内容管理系统jeecms3

    JEECMS是国内Java版开源网站内容管理系统 1.基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 2.采用SpringMVC3+Spring3+Hibernate3+Freemarker主流技术架构 3.懂html就能建站,提供最便利、...

    jeecms2012系统使用手册

    jeecms2012的安装 jeecms2012的基本功能介绍 jeecms2012标签的使用

    jeecms X1.0.1 正式版 源码包

    在二次开发方面,jeecmsV6支持元件式无限插件扩展方式,开发者根据jeecms的插件开发标准所开发出来的插件,插件与jeecms是平行的,无论是插件升级还是jeecms系统升级,都可以实现独立升级,插件与插件、插件与jeecms...

    JEECMS系统标签说明2010

    JEECMS系统标签说明 JEECMS系统标签说明JEECMS系统标签说明 JEECMS系统标签说明JEECMS系统标签说明JEECMS系统标签说明

    jeecms数据库设计.doc

    jeecms数据库的设计开源的项目支持mysql,oracle等主流数据库

    jeecms管理系统

    JEECMS是国内Java版开源网站内容管理系统(java cms、jsp cms)的简称。 · 采用hibernate3+struts2+spring2+freemarker技术架构 · 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点,支持...

    jeecms系统的表sql

    jeecms系统的初始化所有表的oracle数据库执行sql。

    JEECMS内容管理系统

    JEECMS是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。Java凭借其强大、稳定、安全、高效等多方面的优势,一直是企业级应用的首选。在国外基于JavaEE技术的CMS已经发展的相当成熟...

    JEECMS v2.3.2 Final版是JEECMS面世以来发布的第一个正式版是JEECMS面世以来发布的第一个正式

    二、核心模板全部使用文件形式保存,自由导入/导出模板,极大方便了用户模板设计、网站升级转移、全站换肤 三、首页、栏目页缓存处理,在启动了页面缓存后,有利于提高系统反应速度,降低系统资源的消耗;...

    jeecms开发文档

    jeecms开发文档,jeecms v5 版开发文档

    jeecms v8.1 源码

    JEECMSv8.1是一款支持微信小程序、栏目模型、内容模型交叉自定义、以及具备支付和财务结算的内容电商为一体内容管理系统:通过后台的简单设置即可自定义出集新闻管理、图库管理、视频管理、下载系统、文库管理、政务...

Global site tag (gtag.js) - Google Analytics