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

分享到:
评论

相关推荐

    jeecmsv5 eclipse

    JeecmsV5是一款基于Java技术的企业级内容管理系统,它专为中大型网站设计,具有高效、稳定、易用的特点。这款系统集成了强大的内容管理功能,包括文章、图片、下载等多种类型的资源管理,同时也提供了丰富的模板引擎...

    jeecms introduction

    JEECMS是一款基于JavaEE技术栈的内容管理系统,专为构建高性能、高稳定性的网站而设计。其主要特点包括: - **技术栈**: 使用SpringMVC3 + Spring3 + Hibernate3 + Freemarker等主流技术。 - **高度定制化**: 用户...

    cmd-bat-批处理-脚本-rimraf.zip

    cmd-bat-批处理-脚本-rimraf.zip

    ADS官网的混频器仿真教程

    该资源文件详细介绍了如何在ADS软件中进行混频器仿真,内容涵盖了仿真设置、参数调整、结果分析等多个方面。

    cmd-bat-批处理-脚本-Messagebox_Cancel_TryAgain_Continue.zip

    cmd-bat-批处理-脚本-Messagebox_Cancel_TryAgain_Continue.zip

    基于C#的OpcUa通讯实现:KEPserverEX服务器远程连接与测试工具UaExpert的应用 OpcUa

    内容概要:本文详细介绍了如何使用C#客户端实现OpcUa通讯,具体包括远程连接KEPserverEX服务器的方法及其应用。文中不仅提供了详细的环境准备工作指导,还给出了具体的代码示例用于创建会话和连接服务器,最后通过UaExpert测试工具验证了整个流程的有效性。这是一套亲测稳定高效的解决方案,适用于工业自动化领域的数据传输和控制。 适合人群:从事工业自动化领域的研发人员和技术爱好者,尤其是那些有C#编程经验并对OpcUa通讯感兴趣的开发者。 使用场景及目标:①帮助开发者掌握C#客户端连接KEPserverEX服务器的具体方法;②提供实用的代码示例和测试工具使用指南,便于快速上手;③确保数据传输的安全性和稳定性,提高工作效率。 其他说明:文章强调了环境准备的重要性,包括安装必要的开发工具和库,同时也指出了可能遇到的问题及解决办法。此外,还提到了UaExpert作为一款优秀的测试工具,在验证连接和数据交互方面的优势。

    人工智能中的自动逻辑推理.zip

    人工智能中的自动逻辑推理.zip

    cmd-bat-批处理-脚本-os2_cid_install.zip

    cmd-bat-批处理-脚本-os2_cid_install.zip

    C++实现贝塞尔法大地主题正算与反算

    在武汉大学大地测量学基础的编程作业中,我已完成相关任务。通过使用教材中的算例进行验证,程序运行结果的误差极小,这充分证明了程序的准确性和可靠性。在公式推导过程中,我严格遵循步骤,确保每一步都清晰严谨,从而保证了最终结果的高精度。作业中还提供了灵活的选择,用户可以根据自己的需求选择正算或反算操作,并且可以手动输入任意坐标,方便进行多样化的计算和验证。

    警 院指挥教学数字训练系统设计-公 安院校电子沙盘教学系统设计.zip

    警 院指挥教学数字训练系统设计——公 安院校电子沙盘教学系统设计.zip

    cmd-bat-批处理-脚本-un-java.zip

    cmd-bat-批处理-脚本-un-java.zip

    cmd-bat-批处理-脚本-SetForegroundWindow.zip

    cmd-bat-批处理-脚本-SetForegroundWindow.zip

    GSP软件在航空发动机及燃气轮机模型设计中的应用:稳态与瞬态性能仿真 瞬态性能

    内容概要:本文详细介绍了GSP软件在航空发动机和燃气轮机模型设计中的应用。首先,讨论了如何利用GSP软件构建不同类型的航空发动机(如涡扇、涡喷、涡轴)和燃气轮机模型,涵盖了从进气道到涡轮各组成部分的建模。接着,阐述了稳态特性的循环计算方法,包括空气、燃油、燃气等组分的变换及其能量转换和物质交换的计算。最后,探讨了瞬态性能计算和部件性能衰退降级仿真,通过时间序列分析和动态仿真模块,模拟发动机在不同工况下的瞬态响应和故障数据,从而全面评估发动机的性能。 适合人群:从事航空发动机和燃气轮机研究的设计工程师、研究人员和技术专家。 使用场景及目标:适用于需要深入了解航空发动机和燃气轮机构造、稳态和瞬态性能的研究和开发项目。目标是提高对发动机工作原理的理解,优化设计流程,提升性能预测精度。 其他说明:文中提到的技术手段不仅限于理论分析,还包括实际操作层面的代码实现,帮助读者掌握具体的建模和仿真技巧。

    cmd-bat-批处理-脚本-installtrusted.zip

    cmd-bat-批处理-脚本-installtrusted.zip

    用MATLAB编写的二维动态破裂建模的BIEM代码,.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    威布尔杂波下扩展目标检测.zip

    威布尔杂波下扩展目标检测.zip

    remotesensing-13-04370-v2.pdf

    remotesensing-13-04370-v2.pdf

    二十四节气之霜降介绍.pptx

    二十四节气之霜降介绍.pptx

    2025年网络安全技术漏洞扫描.docx

    2025年网络安全技术漏洞扫描.docx

    cmd-bat-批处理-脚本-virtualcam-uninstall.zip

    cmd-bat-批处理-脚本-virtualcam-uninstall.zip

Global site tag (gtag.js) - Google Analytics