どうやら URI パスでは角かっこは許可されていません。
これが Tomcat の問題かどうかはわかりませんが、パスに]
.
言い換えると
request.getRequestURL() == "http://localhost:8080/a]b"
request.getRequestURI() == "/a]b"
ところで getRequestURL() と URI は通常エスケープされます。http://localhost:8080/a b
request.getRequestURL() == "http://localhost:8080/a%20b"
あなたがやろうとすると:
new URI("http://localhost:8080/a]b")
new URI(request.getRequestURL())
URI 解析例外で失敗します。パスをエスケープすると、%20
ダブルがエスケープされます。
サーブレット リクエスト URL を URI に変換するにはどうすればよいですか?