IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java使用SSM框架实现数据备份 -> 正文阅读

[Java知识库]Java使用SSM框架实现数据备份

环境要求:JDK1.7? TOMCAT8和mySQL数据库

其中另外需要辅助jar包为的jodd-core-5.0.0.jar

其下载地址为:https://mvnrepository.com/artifact/org.jodd/jodd-core

下面直接上代码:

前台JSP界面中主要代码为:

<a class="button bg-main icon-check-square-o"
					href="<%=path %>/exportSQL" style="margin:80px 0px;"> 导出</a>

控制层代码为:

@RequestMapping("/exportSQL")
	@ResponseBody
	public void exportSQL(HttpServletRequest request, HttpServletResponse response) throws FileNotFoundException, IOException {
		int beginIndex = dbURL.lastIndexOf("/") + 1;
		int endIndex = dbURL.indexOf("?");
		//截取,获得数据库名字
		String databaseName = dbURL.substring(beginIndex, endIndex);
		// 设置导出编码为utf8。这里必须是utf8。cmd命令,-u和-p后边没有空格
		String cmd = "mysqldump -u" + dbUser + " -p" + dbPwd + " -hlocalhost --set-charset=utf8 --databases " + databaseName;
		try {
			Runtime runtime = Runtime.getRuntime();
			// 调用 MySQL 的 CMD
			Process child = runtime.exec(cmd);
			// 把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。注:如果不对控制台信息进行读出,则会导致进程堵塞无法运行
			InputStream in = child.getInputStream();// 控制台的输出信息作为输入流
			InputStreamReader xx = new InputStreamReader(in, "utf8");// 设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码
			String inStr;
			StringBuffer sb = new StringBuffer("");
			String outStr;
			// 组合控制台输出信息字符串
			BufferedReader br = new BufferedReader(xx);
			while ((inStr = br.readLine()) != null) {
				sb.append(inStr + "\r\n");
			}
			outStr = sb.toString();
			//取得系统缓存目录
			String tmpDir = System.getProperty("java.io.tmpdir");
			//获得当前时间戳
			String date = UUIDUtil.getTimeString();
			String localFilePath = tmpDir + "db_shms-" + date + ".sql";
			File localFile = new File(localFilePath);
			byte[] data = outStr.getBytes("UTF-8");
			try (final OutputStream output = new FileOutputStream(localFile)) {
				IOUtils.write(data, output);
			}
			File zipFile = ZipUtil.zip(localFile);
			byte[] zipData;
			try (final FileInputStream inputStream = new FileInputStream(zipFile)) {
				zipData = IOUtils.toByteArray(inputStream);
			}
			//设置响应相关的参数
			response.setContentType("application/zip");
			final String fileName = "db_shms-" + date + ".zip";
			response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
			final ServletOutputStream outputStream = response.getOutputStream();
			outputStream.write(zipData);
			in.close();
			xx.close();
			br.close();
			outputStream.flush();
			outputStream.close();
			//删除缓存目录的缓存文件,sql文件和zip文件
			localFile.delete();
			zipFile.delete();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章           查看所有文章
加:2021-11-18 11:04:23  更:2021-11-18 11:06:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:13:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码