ファイルサーバーとして使用するための単純なサーブレットをセットアップしました。コンテナーとして Weblogic 10.3.2 を使用しています。
PUTリクエストを処理したいので、doPutメソッドを実装しました。これは PUT リクエストなので、サーバーにプッシュしたファイルの名前がヘッダーに含まれていることを期待しています。
「Hello World」を含む test.txt という名前のファイルをプッシュします。
curl -T test.txt http://xxxxxxx:71xxx
curl と netcat を使用したリクエストは次のとおりです。
PUT /test.txt HTTP/1.1
User-Agent: curl/7.19.0 (x86_64-suse-linux-gnu) libcurl/7.21.2 OpenSSL/0.9.8h zlib/1.2.3
Host: xxxxxxxxx:71xx
Accept: */*
Content-Length: 12
Expect: 100-continue
Hello World
サーブレットと weblogic 10.3.2 を使用した場合のHTTPServletRequestは次のとおりです。これは、curl コマンドを送信した後、HTTPServletRequest Java オブジェクトを出力する doPut メソッドで停止したときに取得したものです。
weblogic.servlet.internal.ServletRequestImpl@17d11f0[
PUT /WebServer/FileServlet HTTP/1.1
User-Agent: curl/7.19.0 (x86_64-suse-linux-gnu) libcurl/7.21.2 OpenSSL/0.9.8h zlib/1.2.3
Accept: */*
Content-Length: 12
Expect: 100-continue
]
HTTPServletRequest の入力ストリームを処理すると、ファイルの内容は取得されますが、ファイル名は失われます。
HTTPServletRequest で元のファイル名を取得する方法はありますか? 何が起こったのか説明していただけますか?
編集:実際に私が理解していないのは、requestURL と requestURI が変更され、元の情報ではなくサーブレット マッピングが反映される理由です。