1

画像をアップロードするindex.jspページがあります。送信すると、サーブレットUpload.javaに移動します。サーブレットでは、image( "jpg"、 "png"など)の拡張子が新しいjspページに転送されるかどうかを確認しています。そうでない場合は、エラーメッセージが表示され、同じindex.jspページが含まれます。

私のサーブレットは「servlets」という名前のパッケージです。

画像を選択すると、正しく機能しています。しかし、画像以外のファイルを選択すると、意図したとおりにindex.jspページでエラーが表示されます。今までは問題なく動作しましたが、ここから画像でもファイルをアップロードすると、サーバーからエラーが発生します。

これが、UploadServlet.javaサーブレットに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);

画像を2回アップロードしようとしたときのサーバーからのエラーは次のとおりです。

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

サーブレットのパッケージ名をURLに追加しています。

この問題を解決する方法は?

4

2 に答える 2

1

どうやらあなたはあなたので相対アクションURLを使用しています<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

URLが間違っています。を開いてweb.xml「servlet-mapping」要素を見つけることができます。そこにマッピングURLがあります。

あなたのURLはそうかもしれません"/CropImage/servlets/UploadServlet"。URLから1つの「サーブレット」を削除してみてください。

于 2011-09-09T05:30:44.420 に答える