将更新文件夹压缩为zip格式上传,解析更新。
大致步骤为:
1、前台上传文件;
2、上传文件至服务器;
3、验证上传版本信息;
4、更新文件;
前台html&js代码:
<form name="cForm" action="" enctype="multipart/form-data" method="post"> <input name="file" id="file" style="width: 400px" type="file" /> <input type="button" class="btn" value="数据上传" onclick="dopass(this.form)" /> </form> <iframe name="uploadFrame" height="0px" width="0px" style="display: none;"></iframe>
function dopass(form) { if (form.file.value == '') { alert('请选择需要升级的文件!'); return false; } if ((form.file.value.toLocaleUpperCase()).indexOf('.ZIP') <= 0) { alert('上传文件只能为 zip 文件!'); return false; } if (confirm('将执行系统升级,确定要升级当前系统吗?')) { document.cForm.action = "do_deploy"; document.cForm.target = "uploadFrame"; document.cForm.submit(); } else { return false; } }
在Controller层获取文件-->上传服务器-->部署文件:
@RequestMapping("/do_deploy") public void doDeploy(HttpServletRequest request,HttpServletResponse response) { try { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; OutData od = deployService.uploadDeployFile(multipartRequest); //od为上传文件反馈 if(od.getCode() == -1) { logger.warn(od.getMsg()); render(response, "<script>alert('" + od.getMsg() + "');</script>", "text/html;charset=UTF-8"); return; } String downPath = od.getMsg();//上传文件所在路径 String rootPath = multipartRequest.getSession().getServletContext().getRealPath("/");/获取根目录 File zip = new File(downPath); //获取版本文件进行验证 File versionFile = deployService.getVersionFile(zip, "version.xml", rootPath); od = deployService.versionCheck(versionFile, rootPath); if(od.getCode() == -1) { logger.warn(od.getMsg()); render(response, "<script>alert('" + od.getMsg() + "');</script>", "text/html;charset=UTF-8"); return; } //文件部署 od = deployService.deployProject(zip, rootPath); if(od.getCode() == -1) { logger.warn(od.getMsg()); render(response, "<script>parent.alertMessage('" + od.getMsg() + "');</script>", "text/html;charset=UTF-8"); return; } render(response, "<script>parent.alertMessage('部署成功!');parent.grid0.load();</script>", "text/html;charset=UTF-8"); } catch (Exception e) { e.printStackTrace(); logger.error("内部出错,出错原因:" + e.getMessage()); render(response, "<script>parent.alertMessage('内部出错!出错代码:" + e.getMessage() + "');parent.grid0.load();</script>", "text/html;charset=UTF-8"); } } public void render(HttpServletResponse response, String text, String contentType) { try { response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); response.setContentType(contentType); response.getWriter().write(text); response.getWriter().close(); } catch (IOException e) { e.printStackTrace(); } } }
deployService代码:
public OutData deployProject(File file, String rootPath) { OutData od = new OutData(); ZipFile zipFile = null; try { zipFile = new ZipFile(file, "GBK"); ZipEntry ze = null; Enumeration enumeration = zipFile.getEntries(); Map<String, List<String>> fileLimit = this.getDeployFilesDetails(); String filesInfo=""; while (enumeration.hasMoreElements()) { ze = (ZipEntry) enumeration.nextElement(); String entryName = ze.getName(); // File.separator系统分隔符 String path = rootPath +File.separator + entryName; logger.info("部署文件:" + path); if (ze.isDirectory()) { File decompressDirFile = new File(path); if (!decompressDirFile.exists()) { decompressDirFile.mkdirs(); } }else { createFile(path, zipFile, ze); filesInfo+="||"+path; } od.setMsg("部署文件:"+filesInfo); } } catch (IOException e) { od.setCode(-1); od.setMsg(e.getMessage()); } finally { if(zipFile != null) try { zipFile.close(); } catch (IOException e) { zipFile =null; } } return od; } private File createFile(String path, ZipFile zipFile, ZipEntry ze) throws IOException{ File decompressFile = new File(path); if(!decompressFile.getParentFile().exists()) decompressFile.getParentFile().mkdirs(); if(!decompressFile.getParentFile().exists()) decompressFile.createNewFile(); OutputStream outputStream = new FileOutputStream(decompressFile); InputStream inputStream = zipFile.getInputStream(ze); int length = 0; byte b[] = new byte[1024]; while ((length = inputStream.read(b)) > 0) { outputStream.write(b, 0, length); outputStream.flush(); } inputStream.close(); outputStream.close(); return decompressFile; }
相关推荐
Jboss 项目部署文档是指在 Jboss 服务器上部署项目的详细步骤,包括环境变量的配置、项目打包、配置文件的修改、JNDI 的配置等。以下是 Jboss 项目部署文档的详细知识点: 一、环境变量配置 在部署 Jboss 项目之前...
标签同样是“mars-MP3项目整合(包括源码+tomcat部署文件)”,它再次强调了项目的关键特性,即提供了完整的源代码和部署方案,这对于开发者、学生或者对Java Web技术感兴趣的人来说,是一个宝贵的资源,可以用来学习...
《项目部署方案详解》 项目部署是软件开发过程中的关键环节,它涉及到系统的硬件环境、软件环境、中间件安装、数据库配置以及应用程序的部署与验证等多个方面。以下是一份详尽的项目部署方案模板,旨在为您的软件...
Subversion(SVN)是一种集中式版本控制系统,它允许团队成员对项目文件进行版本控制,包括源代码、文档和其他资源。每个团队成员可以在本地工作,然后通过提交更改到中央仓库,与其他人同步。SVN的主要功能包括:...
C# 安装部署项目 C# 安装部署项目是使用 Visual Studio 创建的安装项目,以便将应用程序部署到目标机器上。下面将详细介绍 C# 安装部署项目的创建和配置过程。 一、新建安装部署项目 要创建一个新的安装部署项目...
此外,还包括计划文件、功能规范、分类设置示例、变更请求日志和测试案例等,这些工具帮助跟踪项目进度,控制变更影响,验证系统功能,并确保最终配置符合用户期望。 综上所述,企业项目管理部署是一个涉及多学科...
通常,开发者会将WAR文件部署到Tomcat的`webapps`目录下。具体步骤如下: 1. 将WAR文件复制到Tomcat的`webapps`目录下。 2. 执行Maven命令`clean package`来打包项目为WAR文件。 3. 如果WAR文件名与目录名称相同,...
5. **打包项目**:将所有项目文件和目录打包成WAR文件。在命令行中,可以使用`jar`命令或者IDE的相应功能完成此步骤。 6. **部署WAR文件**:将WAR文件复制到Tomcat的`webapps`目录下。Tomcat会自动解压并部署该文件...
Tomcat是一款轻量级且功能强大的Web容器,广泛应用于Java Web应用的部署。安装与配置方法同样可以参考上述文章。 - **数据库**:大部分Java Web应用都需要使用数据库来存储数据。这里以MySQL为例,其安装与配置方法...
在部署自己的项目时,需要首先将项目打包为 war 格式,可以使用 Eclipse 的 Export 功能,选择 war 格式,然后将其上传到服务器的 admin-tomcat/webapps 目录下。上传完成后,可以使用 lsof -i:8022 命令查看 8022 ...
* Weblogic 的部署方式:Weblogic 提供了多种部署方式,例如 war 文件部署、ear 文件部署、 exploded 目录部署等。 * Weblogic 的安全机制:Weblogic 提供了多种安全机制,例如身份验证、授权、加密等,可以确保 Web...
- 标签中的“源码”可能指的是Java项目的源代码,开发者可以查看和修改这些代码来实现特定功能。 - “工具”可能包括IDE(如Eclipse, IntelliJ IDEA)、构建工具(如Maven, Gradle)、版本控制系统(如Git)等,...
在.NET项目的开发完成后,安装和部署是将应用程序推送到生产环境的关键步骤。本文将深入探讨ASP.NET项目安装部署的详细过程,以及在此过程中需要注意的重要问题。 首先,我们需要确保开发环境和目标部署环境的兼容...
- **项目部署包**: 通常是指待部署的应用程序或者项目的打包文件。 **1.2 安装Weblogic** - **步骤一**: 启动Weblogic安装向导。 - **操作**: 点击安装向导图标开始安装过程。 - **步骤二**: 配置安装目录。 - **...
- 使用批处理脚本(.bat)或PowerShell脚本,可以自动化完成复制项目文件、设置环境变量、启动服务等操作。这一步骤是实现“一键部署”的关键,通过脚本标准化部署流程,避免手动操作的错误和重复工作。 5. **配置...
这个“JAVA文件上传,可直接部署”的项目提供了一个经过调试并可成功运行的示例,旨在帮助开发者解决在实现文件上传过程中遇到的问题。从描述来看,作者在尝试运行网络上的不同示例时遇到了错误,但通过对代码进行...
Nginx是一个流行的Web服务器软件,它提供了许多实用的功能来帮助开发者快速部署和管理Web项目。在这个步骤中,需要安装Nginx 1.16.1版本,注意其他版本可能会出现未知的错误。 第3步:安装Python项目管理器 Python...
部署完成后,应通过浏览器访问网站,检查功能是否正常,页面是否能正确加载,数据库交互是否顺利,以及安全性设置是否生效。 总之,.NET中Web项目的部署涉及多个环节,从环境配置、项目打包、IIS设置到问题排查,每...
本文将深入探讨SSM项目整合的过程,以及如何进行部署,以帮助初学者理解和掌握这一核心技术。 首先,Spring框架是核心的依赖注入(DI)和面向切面编程(AOP)容器,它负责管理对象的生命周期和依赖关系。Spring MVC...