Java 从HttpRequest对象获取未切换的servlet路径
我有一个自定义代理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 = '
;,./
)的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映射,请查看和