您好,登錄后才能下訂單哦!
前端代碼:
function createBackUp(){
var path=$("#path").val();
$.post("dataBack",{
'path' : path
}, function(data) {
if(data==1){
layer.msg("備份成功!",{time: 2000});
}else{
layer.msg("備份失敗,該路徑不存在!",{time: 2000});
}
}, "text");
}
后端實現(xiàn):
package com.cloudshield.toolbox4.accountmanage.controller;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.UnknownHostException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.text.SimpleDateFormat;
import java.util.Properties;
import java.util.Timer;
import java.util.TimerTask;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.cloudshield.toolbox4.utils.DateUtils;
/**
*
* @XXX
* @date 2016-10-28 17:24
*
*/
@Controller
@RequestMapping("/")
@Scope("prototype")
public class DataBackpController {
private static final int BACKUP_SUCCESS=1;/**表示備份成功*/
private static final int BACKUP_ERROR=0;/**表示備份失敗*/
/**手動去備份*/
@ResponseBody
@RequestMapping(value="/dataBack",method = RequestMethod.POST)
public Integer dataBack(HttpServletRequest request,HttpSession session,String time){
Connection conn = null;
try{ /**讀取備份路徑*/
String path = request.getParameter("path");
/**讀取配置文件*/
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("conn.properties");
Properties p = new Properties();
try {
p.load(inputStream);
} catch (IOException e1) {
e1.printStackTrace();
}
/**獲取用戶名密碼以及路徑*/
String driverName = p.getProperty("c3p0.driverClass");
String userName=p.getProperty("c3p0.user");
String passWord=p.getProperty("c3p0.password");
String url = p.getProperty("c3p0.jdbcUrl");
Class.forName(driverName).newInstance();
conn= DriverManager.getConnection(url,userName,passWord);
backData(path,getDbName(), conn,time);
return BACKUP_SUCCESS;
}catch(Exception e){
e.printStackTrace();
}finally{
try{conn.close();}catch(Exception e){}
}
return BACKUP_ERROR;
}
/**時間設(shè)置自動備份*/
@ResponseBody
@RequestMapping(value="/setAutoBackUp",method = RequestMethod.POST)
public Integer setAutoBackUp(HttpServletRequest request,HttpSession session){
try{
Timer timer = new Timer();
final String setupstime = request.getParameter("time");
final String path = request.getParameter("path");
TimerTask task =new TimerTask(){
public void run(){
Connection conn = null;
/**讀取配置文件*/
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("conn.properties");
Properties p = new Properties();
try {
p.load(inputStream);
/**獲取用戶名密碼以及路徑*/
String driverName = p.getProperty("c3p0.driverClass");
String userName=p.getProperty("c3p0.user");
String passWord=p.getProperty("c3p0.password");
String url = p.getProperty("c3p0.jdbcUrl");
Class.forName(driverName).newInstance();
conn= DriverManager.getConnection(url,userName,passWord);
backData(path,getDbName(),conn,setupstime);
} catch (Exception e1) {
e1.printStackTrace();
}finally{
try{conn.close();}catch(Exception e){}
}
}
};
if(setupstime!=null&&setupstime.equals("oneday")){
timer.scheduleAtFixedRate(task,DateUtils.getOneday(),DateUtils.getOneday());
}
if(setupstime!=null&&setupstime.equals("week")){
timer.scheduleAtFixedRate(task,DateUtils.getWeek(),DateUtils.getWeek());
}
if(setupstime!=null&&setupstime.equals("halfamonth")){
timer.scheduleAtFixedRate(task,DateUtils.getHalfamonth(),DateUtils.getHalfamonth());
}
if(setupstime!=null&&setupstime.equals("onemonth")){
timer.scheduleAtFixedRate(task,DateUtils.getMonth(),DateUtils.getMonth());
}
if(setupstime!=null&&setupstime.equals("halfayear")){
timer.scheduleAtFixedRate(task,DateUtils.getHalfayear(),DateUtils.getHalfayear());
}
if(setupstime!=null&&setupstime.equals("oneyear")){
timer.scheduleAtFixedRate(task,DateUtils.getOneYear(),DateUtils.getOneYear());
}
return BACKUP_SUCCESS;
}catch(Exception e){
e.printStackTrace();
}
return BACKUP_ERROR;
}
/**備份方法*/
public String backData(String path,String db_name,Connection conn,String time) throws Exception{
/**要返回備份名稱*/
String bk_name = "";
/**與數(shù)據(jù)庫進行操作*/
PreparedStatement stmt = null;
String sql = "";
try{
File databasePath = new File(path);
if(!databasePath.exists()){
databasePath.mkdir();
databasePath.setWritable(true);
}
String file = new SimpleDateFormat("yyyyMMddHHmmss").format(new java.util.Date())+".bak";
if(time!=null&&time!=""){
file="zdbf"+file;
}
File newFile=new File(path+File.separator+file);
newFile.createNewFile();
newFile.setWritable(true);
sql = "backup database "+db_name+" to disk=N'"+path+File.separator+file+"' with format,name=N'full backup of "+db_name+"'";
stmt = conn.prepareStatement(sql);
stmt.executeUpdate();
bk_name = file;
}catch(Exception e){
e.printStackTrace();
throw e;
}
finally
{
try{stmt.close();} catch(Exception e){}
}
return bk_name;
}
/**獲取要備份的數(shù)據(jù)庫名字*/
public String getDbName(){
/**讀取配置文件*/
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("other.properties");
Properties p = new Properties();
try {
p.load(inputStream);
} catch (IOException e1) {
e1.printStackTrace();
}
String dbname=p.getProperty("dbName");
return dbname;
}
/**這里不指定post或者get方式的話,默認2中方式都可以*/
@RequestMapping(value = "/autoBackupPage", produces="text/html;charset=UTF-8")
public String autoBackupPage(HttpServletRequest request, HttpServletResponse response) throws UnknownHostException, IOException{
return "jsp/accountManage/backupWindow";
}
/**跳轉(zhuǎn)數(shù)據(jù)備份的主頁面*/
@RequestMapping(value = "/toBackupPage", produces="text/html;charset=UTF-8")
public String toBackupPage(HttpServletRequest request, HttpServletResponse response) throws UnknownHostException, IOException{
return "jsp/accountManage/backUp";
}
}
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。