我想使用http doDelete()方法从服务器删除文件

Nil*_*esh 1 java servlets

如果我想删除welcome.html文件如何删除它使用http doDelete()方法如何做到这一点我是java的新手所以请帮助我

public void doDelete(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
  boolean success = false;
  File file = null;
  try {
    file = searchFile(request);
  } catch (Exception ex) {
    java.util.logging.Logger.getLogger(Request.class.getName()).
       log(java.util.logging.Level.SEVERE, null, ex);
  }
  if (!file.exists()) {
    response.sendError(HttpServletResponse.SC_NOT_FOUND); 
    return;
  } else {
    success = file.delete(); // actual delete operation
  }
  if (success) {
    response.setStatus(HttpServletResponse.SC_NO_CONTENT);
  }
}

private  String searchFile(HttpServletRequest req) throws Exception {
  String fileName = req.getPathInfo();
  fileName = fileName.substring(1);
  return fileName;
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*n C 5

在我们等待为您讲解如何代码"不工作" ......我要指出的是,如果这个代码所做的工作,那将是非常危险的.

您的代码不会尝试检查是否允许用户(即发送请求的人)删除该文件,或者用户尝试删除的内容.如果有些坏人发送了带有".."的DELETE请求,他们可能会欺骗你的网络服务器试图删除文件系统中的任何文件! (希望您永远不会将您的Web服务器作为"root"运行...)


更新:你的问题的答案很简单.更改

file = searchFile(request);
Run Code Online (Sandbox Code Playgroud)

file = new File(searchFile(request));
Run Code Online (Sandbox Code Playgroud)

但这是你遇到的最少的问题!

  • 简单的方法是测试URL以查看它是否包含任何".."路径组件,如果有,则拒绝该请求.但我的真实观点是,**你应该在设计Web服务时考虑这种事情. (3认同)