站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Java 专题JSP中执行dos命令

JSP中执行dos命令

摘要: JSP中执行dos命令

</td> </tr> <tr> <td height="35" valign="top" class="ArticleTeitle"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="271" height="86" align="center" valign="top"> </td> <td width="413" valign="top">

在JSP中我们经常要调用服务器端的一些dos命令,已达到一些特殊的效果,但同时调用服务器端的dos命令也存在着一些安全隐患,因此需要慎重使用。

以下以一个例子来说明用jsp执行dos的过程,比如在服务器端调用jar.exe命令将c:\java\bmp目录下所有文件打包到:
c:\java\20060722.jar
目录名称为当天的日期,备份完后再把c:\java\bmp下所有文件删除。

如果在服务器上,我们可以在dos下直接执行:

c:\jdk1.5\bin\jar cf c:\java\20060722.jar c:\java\bmp 命令, 然后再把c:\java\bmp目录删除即可。

在JSP中我们应当这么来写: </td> </tr> </table>

<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.io.*"%>
<%


//执行dos命令

String commandstr = "c:/jdk1.5/bin/jar cf c:/java/20060722.jar c:/java/bmp";

Process p ;

try {

  p = Runtime.getRuntime().exec(commandstr);

  //等待刚刚执行的命令的结束

  while (true){

    if(p.waitFor() == 0) break;

}

} catch (Exception e) {

  out.println(e.toString());

}

//删除已经打包的文件及其目录

  File f = new File("c:/java/bmp");

  String[] allFiles = f.list();

  for (int i = 0; i < allFiles.length; i++) {

   File delF = new File("c:/java/bmp/",allFiles[i]);

   delF.delete();

  }

File delD = new File("c:/java/bmp");

delD.delete();

%>
成功完成任务!!!

在jsp中以下代码必须执行,如果没有该代码,则由于删除文件的速度快于打包的速度,因此当压缩包还没有打包完成,一些文件已经被删除,加入下面的代码,会在此一直做循环,一直p.waitFor()(这个方法的说明是:等待子进程的结束,如果已经结束,一般返回0)返回0为止才会接着执行后面的代码
while (true){
if(p.waitFor() == 0) break;
}

</td> </tr> <tr>


↑返回目录
前一篇: 表单Form中的get和post方法
后一篇: jsp入门实例:购物车