1

如果我想删除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;
}
4

1 回答 1

5

在我们等待您解释您的代码如何“不起作用”的同时……我应该指出,如果此代码确实起作用,那将是非常危险的。

您的代码不会尝试检查是否允许用户(即发送请求的人)删除文件,或者用户尝试删除的内容。如果某个坏人向您发送了一个带有“..”的删除请求,他们可能会欺骗您的 Web 服务器尝试删除文件系统中的任何文件!!! (希望你永远不要以“root”身份运行你的网络服务器......)


更新:您的问题的答案很简单。改变

file = searchFile(request);

file = new File(searchFile(request));

但这是你的问题中最小的一个!

于 2013-11-11T11:58:09.060 回答