Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想使用http doDelete()方法从服务器中删除文件_Java_Servlets - Fatal编程技术网

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

Java 我想使用http doDelete()方法从服务器中删除文件,java,servlets,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 =

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

当我们等待你解释你的代码如何“不工作”时。。。我应该指出,如果这段代码真的起作用,它将非常危险

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


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

file = searchFile(request);


但这是你的最小问题

当我们等待您解释您的代码如何“不工作”时。。。我应该指出,如果这段代码真的起作用,它将非常危险

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


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

file = searchFile(request);


但这是你的最小问题

这不管用吗?如何?该文件是.war文件的一部分吗?您的代码工作吗?如果没有,它是如何失败的?运行servlet容器的用户是否有删除该文件的权限?我的searchFile方法返回字符串,在doDelete中它不会作为字符串,如果我声明一个变量文件类型,即file file=null,它会给我错误…..除此之外还有其他方法吗?这不起作用吗?如何?该文件是.war文件的一部分吗?您的代码工作吗?如果没有,它是如何失败的?运行servlet容器的用户是否有删除该文件的权限?我的searchFile方法返回字符串,在doDelete中它不会作为字符串,如果我声明一个变量文件类型,即file file=null,它会给我错误…..除此之外还有其他方法吗?我的serachFile方法在doDelete中返回字符串方法,它不会作为字符串。当我清除可变文件时,即file file=null,然后on file=searchFile(请求);行它给了我错误不兼容的类型,正如你说的,如果有坏人向你发送了一个带有“.”的删除请求,他们可能会欺骗你的web服务器试图删除文件系统中的任何文件!!!如何防止这种情况发生???简单的方法是测试URL,看看它是否包含“.”路径组件,如果包含,则拒绝请求。但我真正的观点是,在设计web服务时,您应该考虑到这类事情。验证输入的合理性,并验证发送请求的源。首先应用用户身份验证。我的serachFile方法返回字符串,而在doDelete方法中它不会作为字符串。当我取消可变文件(即file file=null)时,则在file=searchFile(请求)时;行它给了我错误不兼容的类型,正如你说的,如果有坏人向你发送了一个带有“.”的删除请求,他们可能会欺骗你的web服务器试图删除文件系统中的任何文件!!!如何防止这种情况发生???简单的方法是测试URL,看看它是否包含“.”路径组件,如果包含,则拒绝请求。但我真正的观点是,在设计web服务时,您应该考虑到这类事情。验证输入的合理性,并验证发送请求的源。首先应用用户身份验证。