知识点
相关文章
更多最近更新
更多java cms 在线安装原理及详细步骤
2019-03-26 13:00|来源: 领悟书生
现在开源的web项目都带有自动安装的功能,它的原理就是把项目的web.xml等配置文件放在一个目录下(install/config),新创建一个web.xml来进行安装,包括项目的配置信息、数据库的相关配置(jdbc.properties)及初始化数据、然后再把配置文件及web.xml拷贝到相应的目录。项目如下图:
1.把项目的配置文件放在一个目录下
我这里有web.xml和springmvc的配置文件(study-servlet.xml)这两个配置文件,把他先放在install/config目录下
2.创建一个新的web.xml文件,引导安装
web.xml的代码如下:
<servlet> <servlet-name>Install</servlet-name> <servlet-class>com.naxsu.cms.InstallServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Install</servlet-name> <url-pattern>/install/install_setup.svl</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>install.html</welcome-file> </welcome-file-list>
3.创建install.html
这个html文件,会自动跳到install/index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="pragma" content="no-cache"/> <meta http-equiv="Cache-Control" content="no-cache,must-revalidate"/> <meta http-equiv="expires" content="Wed, 26 Feb 1997 08:21:57 GMT"/> <meta http-equiv="expires" content="0"/> <meta http-equiv="refresh" content="0;URL=install/index.html"/> <title>CMS安装</title> </head> <body> 您还没有安装JEECMS,将自动跳转到安装页面。<br/> 如果您的浏览器长时间没有反应,请直接点击<a href="install/index.html">CMS安装</a>。 </body> </html>
4.创建许可协议html文件:install/index.html
主要代码如下:
<form id="license_form" action="install_params.jsp" method="post"> <input type="checkbox" id="license_agree" name="license_agree"/> 我已经阅读并同意此协议 <input type="button" class="btn" value="下一步 >"/> </form>
5.许可协议后,进入install_params.jsp,配置一些参数信息
这里的代码比较简单,就是input表单,给一些默认值就可以了
域名、部署路径和端口号这里是获取的默认值,代码如下:
域名:<input name="domain" type="text" class="input" value="<%=request.getServerName()%>"/>
部署路径:<input name="cxtPath" type="text" class="input" value="<%=request.getContextPath()%>"/>
端口号:<input name="port" type="text" class="input" value="<%=request.getServerPort()%>"/>
一定要注意一下,要把数据库和初始化数据库的文件路径给传过去
<input type="hidden" name="dbFileName" value="/install/db/db.sql"/>
<input type="hidden" name="initFileName" value="/install/db/init.sql"/>
6.提交表单,进行安装InstallServlet.java
在这里就直接贴代码了,代码很简单:
package com.naxsu.cms; import java.io.IOException; import java.util.List; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class InstallServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String dbHost = request.getParameter("dbHost"); String dbPort = request.getParameter("dbPort"); String dbName = request.getParameter("dbName"); String dbUser = request.getParameter("dbUser"); String dbPassword = request.getParameter("dbPassword"); String isCreateDb = request.getParameter("isCreateDb"); String isCreateTable = request.getParameter("isCreateTable"); String isInitData = request.getParameter("isInitData"); String domain = request.getParameter("domain"); String cxtPath = request.getParameter("cxtPath"); String port = request.getParameter("port"); String dbFileName = request.getParameter("dbFileName"); String initFileName = request.getParameter("initFileName"); String dbXmlFileName = "/WEB-INF/config/jdbc.properties"; String webXmlFrom = "/install/config/web.xml"; String webXmlTo = "/WEB-INF/web.xml"; try { // 创建数据库 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 = getServletContext().getRealPath(dbFileName); List<String> sqlList = Install.readSql(sqlPath); Install.createTable(dbHost, dbPort, dbName, dbUser, dbPassword,sqlList); } // 初始化数据 if ("true".equals(isInitData)) { String initPath = getServletContext().getRealPath(initFileName); List<String> initList = Install.readSql(initPath); Install.createTable(dbHost, dbPort, dbName, dbUser, dbPassword,initList); } // 处理数据库配置文件 String dbXmlPath = getServletContext().getRealPath(dbXmlFileName); Install.dbXml(dbXmlPath, dbHost, dbPort, dbName, dbUser,dbPassword); // 处理web.xml String webXmlFromPath = getServletContext().getRealPath(webXmlFrom); String webXmlToPath = getServletContext().getRealPath(webXmlTo); Install.webXml(webXmlFromPath, webXmlToPath); } catch (Exception e) { throw new ServletException("install failed!", e); } RequestDispatcher dispatcher = request .getRequestDispatcher("/install/install_setup.jsp"); dispatcher.forward(request, response); } }
Install.java
package com.naxsu.cms; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; /** * 安装类 */ public class Install { public static void dbXml(String fileName, String dbHost, String dbPort, String dbName, String dbUser, String dbPassword) throws Exception { String s = FileUtils.readFileToString(new File(fileName)); s = StringUtils.replace(s, "DB_HOST", dbHost); s = StringUtils.replace(s, "DB_PORT", dbPort); s = StringUtils.replace(s, "DB_NAME", dbName); s = StringUtils.replace(s, "DB_USER", dbUser); s = StringUtils.replace(s, "DB_PASSWORD", dbPassword); FileUtils.writeStringToFile(new File(fileName), s); } public static Connection getConn(String dbHost, String dbPort, String dbName, String dbUser, String dbPassword) throws Exception { Class.forName("com.mysql.jdbc.Driver"); Class.forName("com.mysql.jdbc.Driver").newInstance(); String connStr = "jdbc:mysql://" + dbHost + ":" + dbPort + "/" + dbName+ "?user=" + dbUser + "&password=" + dbPassword + "&characterEncoding=utf8"; Connection conn = DriverManager.getConnection(connStr); return conn; } public static void webXml(String fromFile, String toFile) throws Exception { 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"); Class.forName("com.mysql.jdbc.Driver").newInstance(); String connStr = "jdbc:mysql://" + dbHost + ":" + dbPort + "?user=" + dbUser + "&password=" + dbPassword + "&characterEncoding=UTF8"; 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 UTF8"; stat.execute(sql); stat.close(); conn.close(); } public static void changeDbCharset(String dbHost, String dbPort, String dbName, String dbUser, String dbPassword) throws Exception { Connection conn = getConn(dbHost, dbPort, dbName, dbUser, dbPassword); Statement stat = conn.createStatement(); String sql = "ALTER DATABASE " + dbName + " CHARACTER SET UTF8"; 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) { System.out.println(dllsql); stat.execute(dllsql); } 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), "UTF-8")); List<String> sqlList = new ArrayList<String>(); StringBuilder sqlSb = new StringBuilder(); String s = null; while ((s = br.readLine()) != null) { if (s.startsWith("/*") || s.startsWith("#") || StringUtils.isBlank(s)) { 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; } }
7.安装成功
本文链接:java cms 在线安装原理及详细步骤,转载请注明出处
相关问答
更多-
现请教安装java 的详细步骤。谢谢[2021-03-05]
直接双击安装就可以了,装完以后配置系统环境变量,选中"我的电脑"右击后选属性-->>高级-->>环境变量新建环境变量,Windows下JAVA用到的环境变量主要有3个,JAVA_HOME、CLASSPATH、PATH。下面逐个分析。 JAVA_HOME指向的是JDK的安装路径,如x:\JDK_1.4.2,在这路径下你应该能够找到bin、lib等目录。值得一提的是,JDK的安装路径可以选择任意磁盘目录,不过建议你放的目录层次浅一点,如果你放的目录很深,比如x:\XXXXXX\xxxxx\XXXX\xxxx\X ... -
请问JAVA安装详细步骤[2022-05-27]
安装JDK....然后配置JDK1.6的系统环境.....你下载一个“JDK1.6”..记得你要配置JDK1.6的系统环境 配置环境:首先右键点我的电脑。打开属性。然后选择“高级”里面的“环境变量”,在新的打开界面中的系统变量里需要设置三个属性“java_home”、“path”、“classpath”,其中在没安装过jdk的环境下,path属性是本来存在的。而java_home和classpath是不存在的。 首先点“新建”,然后在变量名写上java_home,顾名其意该变量的含义就是java的安装路径, ... -
java cms[2022-03-04]
CMS是什么? CMS是Content Management System的缩写,意位“内容管理系统”。内容管理系统是一种位于Web前端(Web服务器)和后端办公系统或流程(内容创作、编辑)之间的软件系统。 内容的创作人员、编辑人员、发布人员使用内容管理系统来提交、修改、审批、发布内容。这里指的“内容”还包括文件、表格、图片、数据库中的数据甚至视频等一切你想要发布到互联网中的信息。 一个内容管理系统通常有几个要素:文档模板、脚本语言或标记语言、与数据库集成。内容的包含物右内嵌入页面的特殊标记控制。这些标记对 ... -
JAVA CMS系统生成HTML文件?[2021-10-09]
确实是这样,每次留言后自动生成一次html,留言一般都有分页,所以自动生成,并不浪费什么性能。 -
cms用Java语言好还是用什么语言好[2022-04-15]
cms的Java版本目前有一些比较成熟的开源系统,比如jeecms,可以上网去找找看. 但相比而言,dedecms可能会更成熟更稳定一些.不过是PHP的.^____^ -
CMS,PHP,MYSQL安装指导[2023-10-02]
如果不管是哪个CMS都出错的话,可能php,mysql的问题, 建议使用AMP套件, LAMP的话,ubuntu server不错,ubuntu linux集成了apache,mysql,php WAMP套件也不少,appserv很好,XAMPP,easyphp貌似也不错, 我用的是appserv(php+apache+mysql+phpmyadmin) + windows xp 安装discuz,phpbb,phpwind,mediawiki都没出错, 或者是你自己的操作问题, appserv官方站点 h ... -
你的MySQL配置似乎没问题。 您必须记住,最重要的是所有配置都需要在repository.xml文件中正确。 一旦第一次初始化存储库,就会从repository.xml文件中生成/提取workspace.xml 。 因此,如果您在为MySQL设置正确之前部署了Hippo,则可能在目录中有一个旧的workspace.xml,这会导致使用H2数据库。 您链接到的第一篇文章包含一个名为“使存储库使用此配置文件”的部分。 如果您想使用自己的配置而不是利用H2数据库的内置配置,这一点非常重要。 如果您不提供此系统属 ...
-
开源Java CMS [关闭](Open Source Java CMS [closed])[2022-08-09]
首先,我可以断言,这是一个完全合理的问题,因为CMS Web技术的重要性,它运行着WWW的很大一部分,并且被许多Java感知的人正确地询问,因为所有的许多(仍然受欢迎)基于PHP的系统,如Drupal,Wordpress和Joomla,包括: 无法很好地与图形统一建模语言(UML)工程集成 大量使用自由泳字符串作为哈希数组键(而不是作为系统范围的共享预定义字符串常量),将数据结构作为难以置信的惯例,以hashmaps的形式进行掩埋,并将所有的“Don” t重复自己(DRY)原则,而不是使用面向对象的可重用封 ... -
http://prismic.io是一个CMS SaaS / PaaS后端,可以很好地集成到Play中。 你是什么意思Play不支持freemarker? Play可以使用任何可以在Java中使用的模板引擎,使用Play中的freemarker是微不足道的。 http://prismic.io is a CMS SaaS/PaaS backend that integrates into Play nicely. What do you mean Play doesn't support freemarke ...
-
调整GC(CMS)的参数(Adjust parameters for GC (CMS))[2022-12-09]
好吧,让我们来详细了解一下。 首先我会注意到,所有时间似乎都是用户,而不是sys,所以主要的嫌疑人是JVM和应用程序。 GC是在旧版本触发的。 容量为12582912K的8617524K的占用率。 堆使用总量为17105967K,大小为23907584K。 初始标记大约需要5秒。 3519696.386: [GC [1 CMS-initial-mark: 8617524K(12582912K)] 17105967K(23907584K), 4.9369140 secs] [Times: user=4.94 ...