Java 我想使用http doDelete()方法从服务器中删除文件
如果我想删除welcome.html文件如何使用http doDelete()方法删除它如何做我是java新手所以请帮助我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 =
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服务时,您应该考虑到这类事情。验证输入的合理性,并验证发送请求的源。首先应用用户身份验证。