`
thtwin
  • 浏览: 165039 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

java web和servlet结合使用为数据库备份

阅读更多
使用Runtime类的方法备份数据库和web下载结合起来,就可以得到想要的功能.源代码如下(tomcat+mysql):  
 
   
 
 
 
package org.liuxuan.jsp;  
 
import java.io.*;  
import java.text.SimpleDateFormat;  
import javax.servlet.*;  
import javax.servlet.http.*;  
 
 
public class Backup extends HttpServlet ...{  
      
 
    public void doGet(HttpServletRequest request, HttpServletResponse response)  
            throws ServletException, IOException ...{  
        SimpleDateFormat dateFm = new SimpleDateFormat("yyyy-MM-dd"); // 格式化当前系统日期  
        String dateTime = dateFm.format(new java.util.Date());  
        File file = null;  
        InputStream is = null;  
        String fileName = null;  
        int fileSize = 0;  
        String mysql = "mysqldump -uroot -p123456 rudisc > c:\" + dateTime+ ".sql";//mysql备份语句  
        try ...{  
            Process p=java.lang.Runtime.getRuntime().exec("cmd /c " + mysql);  
             while(true)...{         
                                                               if(p.waitFor()==0)       break;   //直到进程结束,才退出循环  
                                          }             
 
        } catch (Exception e) ...{  
            e.printStackTrace();  
        }  
 
        file = new File("c:\"+dateTime+".sql");  
        is = new FileInputStream(file);  
        fileName = file.getName();  
        fileSize = (int) file.length();  
 
        fileName = toUTF8String(fileName);  
        // 设置下载文件使用的报头域。  
        response.setContentType("application/x-msdownload");  
        String str = "attachment; filename=" + fileName;  
        response.setHeader("Content-Disposition", str);  
        response.setContentLength(fileSize);  
 
        // 得到响应对象的输出流,用于向客户端输出二进制数据。  
        ServletOutputStream sos = response.getOutputStream();  
        byte[] data = new byte[2048];  
        int len = 0;  
        while ((len = is.read(data)) > 0) ...{  
            sos.write(data, 0, len); // 向浏览器输出文件数据  
        }  
        is.close(); // 关闭输入流  
        sos.close();// 关闭输出流  
 
    }  
 
    public void doPost(HttpServletRequest request, HttpServletResponse response)  
            throws ServletException, IOException ...{  
        doGet(request, response);  
    }  
                        
    public static String toUTF8String(String str) ...{  
        StringBuffer sb = new StringBuffer();  
        int len = str.length();  
 
        for (int i = 0; i < len; i++) ...{  
            char c = str.charAt(i);  
            if (c >= 0 && c <= 255) ...{  
                sb.append(c);  
            } else ...{  
                byte[] b;  
                try ...{  
                    b = Character.toString(c).getBytes("UTF-8");  
                } catch (UnsupportedEncodingException ex) ...{  
                    System.err.println(ex);  
                    b = null;  
                }  
                for (int j = 0; j < b.length; j++) ...{  
                    int k = b[j];  
                    if (k < 0) ...{  
                        k &= 255;  
                    }  
                    sb.append("%" + Integer.toHexString(k).toUpperCase());  
                }  
            }  
        }  
        return sb.toString();  
    }  
}  
 
   
 
   
 
注意1:Runtime类的exec()方法是在单独的进程中执行指定的字符串命令,所以得在该进程结束后,才能找到备份    的sql文件.  
 
注意2:由于是使用响应对象的getOutputStream()方法得到二进制输出流,而假如使用jsp来实现的话,由于隐含对象out的存在,很有可能导致冲突,异常的发生.所以我使用的是servlet来实现该功能.

数据库的恢复:
public static void load() {
try {
String fPath = "d:/xytx.sql";
Runtime rt = Runtime.getRuntime();

// 调用 mysql 的 cmd:
Process child = rt.exec("C:/Program Files/MySQL/MySQL Server 5.0/bin/mysql.exe -uroot -proot xytx ");
OutputStream out = child.getOutputStream();//控制台的输入信息作为输出流
String inStr;
StringBuffer sb = new StringBuffer("");
String outStr;
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(fPath), "utf8"));
while ((inStr = br.readLine()) != null) {
sb.append(inStr + "\r\n");
}
outStr = sb.toString();

OutputStreamWriter writer = new OutputStreamWriter(out, "utf8");
writer.write(outStr);
// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
writer.flush();
// 别忘记关闭输入输出流
out.close();
br.close();
writer.close();

System.out.println("");

} catch (Exception e) {
e.printStackTrace();
}

}



 
分享到:
评论

相关推荐

    BBS论坛课程设计结合HTML+JAVA bean+java servlet开发模式,包括SQL数据库设计,数据库备份,源代码

    总结来说,这个BBS论坛课程设计涵盖了Web开发中的前端HTML、后端JAVA bean和Servlet技术,以及数据库设计和管理的关键概念。通过实际操作,学习者可以深入理解这些技术在实际项目中的应用,提高解决问题的能力,并为...

    jsp数据库备份.rar

    【标题】"jsp数据库备份.rar...综上,这个"jsp数据库备份.rar"压缩包提供了一个实践性的学习案例,涵盖了JSP开发、数据库管理和备份策略等多个方面的知识,对于想要深入了解Web开发和数据库管理的初学者来说极具价值。

    java quartz计划任务中间件使用教程,每天定时备份数据库的插件jspweb java网站工程.rar

    本教程将深入讲解如何使用Quartz来实现每天定时备份数据库的功能,这对于Java Web应用程序尤其重要,确保数据的安全性和完整性。 1. **Quartz基础知识** - **核心概念**:Quartz主要由Job(任务)、Trigger...

    基于Java web的电话计费系统(源码+数据库).zip

    在Java Web中,可以使用JDBC(Java Database Connectivity)接口来连接和操作数据库。此外,为了提高安全性,系统可能还采用了Spring Security进行身份验证和授权,保护用户数据的安全。 账单查询和历史记录查看...

    gusetSys-java.rar_java 数据库_jsp备份

    JSP是Java的一种Web开发技术,用于动态生成HTML,结合Servlet可以实现服务器端的业务逻辑处理。 在压缩包内的文件“www.pudn.com.txt”可能是一个文档,提供了关于项目或源代码的额外信息,例如开发指南或用户手册...

    java servlet+Jdbc+Oracle

    综上所述,这个项目涉及了使用MyEclipse IDE进行Java Servlet和JDBC的开发,通过Servlet处理Web请求并与Oracle数据库交互,以实现数据的存取。开发者需要熟悉Java Web开发、数据库操作以及IDE的使用,才能有效地进行...

    java servlet关爱农民工网(mysq数据库)

    在这个项目中,“java servlet”与“MySQL数据库”结合,构建了一个关爱农民工的网络平台。Java Servlet是Java Web开发中的一个重要技术,它用于扩展服务器的功能,特别是在Web服务器上动态生成网页。在这里,...

    【Java毕业设计】此为本人毕业设计,采用Java Web技术编写,上传备份.zip

    Java Web技术是开发动态网站和企业级应用的重要工具,它结合了Java编程语言的强大功能和Web的交互性。本项目“【Java毕业设计】上传备份”便是一个基于Java Web的实现,旨在展示如何利用这些技术进行实际的系统开发...

    Java+JSP+Servlet+Mysql实现Web学生选课管理系统

    这个系统利用了Java编程语言、JSP(JavaServer Pages)、Servlet和Mysql数据库技术,构建了一个稳定且功能齐全的平台。以下是对这些关键技术的详细说明: 1. **Java**:Java是一种广泛使用的面向对象的编程语言,...

    Elecve Web Application (Java servlet)

    结合给定的文件名称,我们推测"Java CA 20100621 0258.sql"可能是一个数据库备份文件,其中包含了Elecve系统的数据。这种文件通常用于恢复数据库到某个特定时间点的状态,或者用于在新环境中快速搭建系统。而"LAPSME...

    jsp备份mysql数据库,用属性文件操作

    在JSP中执行MySQL数据库备份,通常涉及创建一个Servlet或者JSP页面,该页面将调用Java代码来执行备份操作。 `mysql_util.java`可能是一个包含数据库操作逻辑的类文件。这个类可能包含了连接数据库、执行SQL语句...

    Java Web编程宝典光盘 源码

    本书可能涵盖了从基础到高级的Java Web技术,包括Servlet、JSP、JavaBean、MVC框架(如Spring MVC)、持久层框架(如Hibernate或MyBatis)以及Web服务器的配置和部署等。 1. **Servlet与JSP**:Servlet是Java Web的...

    基于Java web的图书馆管理系统(源码+数据库).zip

    Java Web应用程序通常基于Servlet和JSP(JavaServer Pages)技术,结合JavaBean组件,构建出动态、交互式的Web应用。在这个图书馆管理系统中,Servlet负责处理客户端请求,执行业务逻辑,而JSP则用于展示用户界面,...

    JAVA WEB企业内部管理系统

    系统采用JAVA WEB技术栈,包括Servlet、JSP、JavaBean等基础组件,结合STRUTS2、Spring、Hibernate(SSH)三大框架进行构建,实现了业务逻辑与表现层的分离,提高了代码的可维护性和可扩展性。 STRUTS2作为MVC模式...

    软件工程课程设计-面向对象java-web

    在本项目“软件工程课程设计-面向对象Java-Web”中,主要涵盖了使用Java技术和Web技术构建一个大学城体育信息管理系统。这个系统旨在管理和优化体育活动的信息,包括但不限于赛事安排、运动员信息、成绩记录等。下面...

    java+Orcle数据库,网上选修课管理系统

    2. **Servlet与JSP**:Java Web应用程序通常会使用Servlet处理HTTP请求,JSP用于动态生成视图。Application1.jws可能是Web应用的主入口点。 3. **JDBC连接数据库**:Java通过Java Database Connectivity (JDBC) API...

    学生管理系统-数据挖掘,jsp+servlet,文件上传下载,数据库导入导出,excel导入导出。.zip

    总结来说,这个学生管理系统是一个综合运用了Java Web技术,包括jsp、servlet和MySQL数据库的项目,具备数据挖掘、文件上传下载、数据库及Excel数据的导入导出等功能。对于学习Java Web开发或进行毕业设计的学生而言...

    网上购物系统(JAVA+SQL2000+SERVLET)

    《网上购物系统(JAVA+SQL2000+SERVLET)》是一个综合性的Web应用程序,它基于JAVA、SQL SERVER、STRUTS和SERVLET技术构建,旨在提供一个便捷、安全的在线购物平台。该系统由前台和后台管理两大部分构成,涵盖了电子...

    卖书网站java web实现

    后端处理业务逻辑和数据操作,这里使用的是Java Web技术,如Servlet和JSP。 2. **MySQL数据库**:MySQL是一种流行的开源关系型数据库管理系统,适用于处理大量数据。在这个项目中,MySQL被用作存储书籍信息、用户...

    轻量级Java Web整合开发入门资料二二

    通过这些代码,读者可以学习如何配置和使用关键的Java Web组件,如Servlet、Filter、Listener,以及如何处理MVC模式中的模型、视图和控制器。 此外,书中可能还涉及了数据库连接和查询、用户认证与授权、模板引擎的...

Global site tag (gtag.js) - Google Analytics