Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从HttpRequest对象获取未切换的servlet路径_Java_Http_Rest_Servlets_Url Encoding - Fatal编程技术网

Java 从HttpRequest对象获取未切换的servlet路径

Java 从HttpRequest对象获取未切换的servlet路径,java,http,rest,servlets,url-encoding,Java,Http,Rest,Servlets,Url Encoding,我有一个自定义代理servlet,它必须处理路径中包含特殊字符(例如,;,./)的URL-s。这是因为它是一个RESTful应用程序,在设计上具有丑陋的路径参数。(不要评论它,因为它不是我的。) 我的客户机(实际上是wget,因为浏览器倾向于显示未缩放的URL)向此URL发送请求: http://localhost:8080/MyApplication/proxy/foo/ugly%3Apart%2Fcomes%3Bhere/children //note: %2F = '/', %3A = '

我有一个自定义代理servlet,它必须处理路径中包含特殊字符(例如,
;,./
)的URL-s。这是因为它是一个RESTful应用程序,在设计上具有丑陋的路径参数。(不要评论它,因为它不是我的。)

我的客户机(实际上是
wget
,因为浏览器倾向于显示未缩放的URL)向此URL发送请求:

http://localhost:8080/MyApplication/proxy/foo/ugly%3Apart%2Fcomes%3Bhere/children
//note: %2F = '/', %3A = ':', %3B = ';'
在我的servlet(映射到
/proxy/*
)中,当我尝试转发GET请求时,我无法重新构造它,因为
HttpRequest.getPathInfo()
返回了未跳过的URL:

因此,
/
s和
的信息或未转义的代码丢失。举例来说,这对我来说是有区别的;使我的URL成为所谓的矩阵URL,请参见,或者所有REST路径参数都被斜杠移位

事实上,我在Glassfish服务器上发现了这个问题,所以我不确定不同的应用程序服务器是否对此有不同的处理方式。我在Servlet API中只找到了以下内容:

getPathInfo()返回与 客户端发出此请求时发送的URL


如何获取客户端发送的原始、未替换的请求URL?

请查看
HttpServletRequest
的功能和方法


如果需要删除上下文和servlet映射,请查看和。

查看
HttpServletRequest
的和方法

如果需要删除上下文和servlet映射,请查看和