1

我有一个上传图片的 index.jsp 页面。在提交时,它转到一个 servlet Upload.java。在 servlet 中,我正在检查 image("jpg","png",etc) 的扩展名并转发到新的 jsp 页面,否则它会显示错误消息并包含相同的 index.jsp 页面。

我的 servlet 是一个名为“servlets”的包。

如果我选择一个图像,那么它工作正常。但是,如果我选择图像以外的任何文件,那么它会按预期显示 index.jsp 页面的错误。到目前为止它工作正常,但如果我从这里上传任何文件甚至图像,服务器就会抱怨。

这是我在 UploadServlet.java servlet 中包含 index.jsp 页面的方式。

out.println("This type of file is not allowed. Please select an image.");
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/index.jsp");
dispatcher.include(request, response);

这是我第二次尝试上传图像时来自服务器的错误。

HTTP Status 404 - /UploadImage/servlets/servlets/UploadServlet

type Status report

message /UploadImage/servlets/servlets/UploadServlet

description The requested resource (/CropImage/servlets/servlets/UploadServlet) is not available.

Apache Tomcat/6.0.13

它将 servlet 的包名称附加到 url。

如何解决这个问题呢?

4

2 回答 2

1

显然,您在<form>.

<form action="servlets/UploadServlet" ...>

打开index.jsp时,请求的 URL 是

http://localhost:8080/UploadImage/index.jsp

当您提交表单时,操作 URL 是相对于当前文件夹的,因此请求 URL 将是

http://localhost:8080/UploadImage/servlets/UploadServlet

当您再次提交表单时,仍将相对于当前文件夹,因此您最终会进入

http://localhost:8080/UploadImage/servlets/servlets/UploadServlet

您需要将其修复为与域相关的 URL,以斜杠开头。

<form action="/UploadImage/servlets/UploadServlet" ...>

这样,URL 将相对于域根进行解析。您还可以通过以下方式动态解析上下文路径${pageContext.request.contextPath}

<form action="${pageContext.request.contextPath}/servlets/UploadServlet" ...>
于 2011-09-09T14:52:38.150 回答
0

你的网址是错误的。您可以打开web.xml并找到“servlet-mapping”元素,在那里您可以找到映射 url。

我猜您的网址可能是。您"/CropImage/servlets/UploadServlet"可以尝试删除网址中的一个“servlet”。

于 2011-09-09T05:30:44.420 回答