【发布时间】:2019-12-31 23:38:13
【问题描述】:
我在 Eclipse 中创建了一个名为 testWarNotMaven 的动态 Web 项目。我使用以下代码在 web 内容文件夹中创建了一个 index.html 文件
<!DOCTYPE html>
<html lang="en">
<head>
<title>File Upload</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h2>Add Questions</h2>
<form method="POST" action="/upload" enctype="multipart/form-data" >
File:
<input type="file" name="file" id="file" /> <br/>
<input type="submit" value="Upload" name="upload" id="upload" />
</form>
</body>
</html>
然后我创建了一个以以下开头的 servlet 类
@WebServlet("/upload")
@MultipartConfig
public class UploadServlet extends HttpServlet {
当我通过将 EAR 项目部署到服务器来部署此项目时,加载了 index.html 页面。但是,当我单击上传按钮将我带到 servlet 类时,
HTTP 状态 404 错误。请求的资源不可用。
1) 我研究过这个问题,发现应该编译 servlet 类并放在 WEB-INF/classes 文件夹中。我在 Java Resources/src/ 中只有 .java 文件。我没有 classes 文件夹,也没有 .class 文件。为什么会这样,我需要它们吗?
2) 当我在服务器上运行项目时,我被定向到 http://localhost:8080/testWarNotMaven/,当我单击表单上传按钮时,我被定向到 http://localhost:8080/upload。我想我缺少对上下文如何工作的理解 - 根。我知道网址是http://localhost:8080//。为什么按下上传按钮时缺少上下文根?
3) 或者为什么无法访问 servlet?
编辑:
【问题讨论】:
-
您是如何将它部署到服务器的?是的,您可能确实需要将 servlet 上下文路径添加到您的
formaction值之前,无论是动态还是其他方式。 -
你定义了明确的 web.xml 吗?
-
@nitind 我尝试将其部署为将项目导出为 WAR 文件并将其粘贴到 payara5\glassfish\domains\domain1\autodeploy。但是当我尝试访问localhost:8080/testWarNotMaven 时,出现了 HTTP 404 错误。因此,我尝试通过将 testWarNotMavenEAR 项目添加到服务器来在服务器上运行,然后我就能够访问localhost:8080/testWarNotMaven
-
@Kris。我改用网络注释。 web.xml 已保留默认值。我找不到任何需要添加的内容。有什么要补充的吗?
标签: servlets http-status-code-404