我已经设置了一个简单的 servlet,旨在用作文件服务器。我使用 Weblogic 10.3.2 作为容器。
我想处理 PUT 请求,所以我实现了doPut方法。由于它是一个 PUT 请求,我希望在标题中找到我推送到服务器的文件的名称。
我推送了一个名为 test.txt 的文件,其中包含“Hello World”。
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
使用 servlet 和 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 会改变并反映 servlet 映射而不是原始信息?