`
longgangbai
  • 浏览: 7331715 次
  • 性别: 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中文件的信息。

分享到:
评论

相关推荐

    Jeecms开源内容管理系统

    Jeecms开源内容管理系统是一款基于Java技术开发的内容管理...通过深入学习“Jeecms开源内容管理系统学习.pdf”这份文档,你可以掌握Jeecms的安装、配置、开发和管理技巧,从而更好地利用这个平台构建和维护你的网站。

    jeecms内容管理系统

    Jeecms内容管理系统是一款专为网站内容管理设计的开源软件,它提供了强大的后台管理功能,包括文章发布、图片管理、用户管理、权限控制等。在深入理解Jeecms之前,我们首先需要关注的是如何顺利地编译其源码,因为这...

    jeecms9.2安装文件

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

    JEECMS V6系统使用说明书

    获取这些环境软件的链接和安装图文指南,可以在JEECMS官方网站上找到,这为初学者提供了方便的入门途径。 **第三章:系统安装** 1. **Windows下安装** 对于Windows用户,JEECMS提供了简单易懂的安装步骤,包括...

    JEECMS2.0版本源码阅读

    阅读 JEECMS 的源码,可以了解到其内部的实现机制和设计理念。在本文中,我们将对 JEECMS 2.0 版本的源码进行阅读和分析,了解其核心组件、技术框架和实现机制。 一、JEECMS 概述 JEECMS 是一个基于 Java 的内容...

    [CMS程序]JEECMS 2.4.2 系统程序.zip

    【CMS程序】JEECMS 2.4.2 系统程序是一款基于Java技术和JSP(JavaServer Pages)的应用程序,适用于构建内容管理系统。这款源码Demo是几年前的作品,主要目的是为了帮助计算机科学与技术专业的学生进行毕业设计学习...

    [JAVA开源]jeecms(网站发布系统)

    【JAVA开源】Jeecms(网站发布系统)是一款基于Java技术构建的企业级内容管理系统,它以其高度可定制性、灵活性和强大的功能集而备受开发者欢迎。Jeecms旨在为企业和个人提供一个快速、稳定且易于维护的网站解决方案...

    JEECMS v2012用户手册

    用户可以通过本章节了解Jeecms系统的发展历史、架构设计和技术架构等方面的知识。 章节二:环境搭建 在本章节中,用户可以了解如何搭建Jeecms系统所需的环境。包括如何安装Java Runtime Environment、如何配置...

    [CMS程序]JEECMS 2.4.2 系统源码.zip

    【CMS程序】JEECMS 2.4.2 系统源码是一个基于Java和JSP技术的开源内容管理系统(CMS)源代码示例,主要用于教育目的,特别是针对计算机科学和软件工程专业的学生进行毕业设计学习。这个版本的JEECMS提供了一个实际的...

    jeecms源码级安装使用文档

    **Jeecms源码级安装使用文档...总结起来,Jeecms 3.0.4源码级安装使用涉及到Java环境配置、数据库连接、项目构建、部署、后台管理以及二次开发等多个环节,掌握这些步骤和技巧,能让你更好地利用Jeecms构建和管理网站。

    jeecms数据库设计.pdf

    根据提供的【部分内容】,我们可以从中提取出与...以上内容涉及的知识点较为全面,详细地描述了JEECMS在数据库设计层面的技术实现和业务逻辑。由于实际内容可能有所出入,具体实现细节应当根据完整的PDF文档为准。

    jeecms网站内容管理系统

    作为一款毕业设计项目,它可以帮助学生或者初学者理解Web开发中的内容管理系统的架构和实现方式,同时也可以应用于实际的企业级项目。 1. **Java技术栈**:Jeecms基于Java EE平台,利用Servlet、JSP、JavaBean等...

    jeecms2012系统使用手册

    ### Jeecms2012系统使用手册知识点详解 #### 一、系统简介与环境搭建 **Jeecms2012系统概述** Jeecms2012是一款基于Java技术构建的内容管理系统(Content Management System, CMS)。它利用Java语言的强大特性,提供...

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

    该系统利用Java语言的强大特性以及一系列成熟的开源框架,如Hibernate3、Struts2、Spring2和Freemarker等,来实现高性能和灵活性。 **特点:** 1. **强大的Java EE基础**:基于Java语言开发,具备稳定、安全、高效...

    JEECMS内容管理系统

    **JEECMS内容管理系统**是基于Java开发的一款开源的内容管理系统,专为网站建设和管理提供便捷服务。该系统因其高效、灵活、易用等特点,在开发者社区中受到广泛关注。本文将详细介绍JEECMS的主要特点、技术栈以及...

    JSP CMS系统 JEECMS 1.rar

    通过学习和研究JEECMS源码,开发者可以加深对JSP和CMS系统设计的理解,同时提升自己的Web开发技能。不过,使用测试版本时,需要注意可能出现的问题,并做好数据备份,以防意外。对于初学者来说,这是一个宝贵的实践...

    JEECMS系统使用说明书

    JEECMS系统使用说明书

    JEECMS源代码及安装文件

    本资源包含JEECMS的源代码和安装文件,对于开发者来说,这是一份宝贵的参考资料,能够深入理解系统的架构设计和实现原理。 1. **Java技术栈** JEECMS是建立在Java EE平台上的,这意味着它使用了诸如Servlet、JSP、...

    jeecms,很好用的CMS系统

    Jeecms是一款强大的内容管理系统(CMS),专为网站开发设计,具有丰富的功能和易用性。作为一款成熟的CMS,Jeecms提供了许多便利的特性,使得开发者能够快速构建和维护复杂的网站项目。以下是对Jeecms及其相关资源的...

Global site tag (gtag.js) - Google Analytics