目前使用HTTPServletRequest类,特别是.getQueryString方法来检索输入的URL。
它将解析的URL是server / package / servlet?args1 / args2 / arg3 ..
我想从网址中删除问号(?),但我不知道如何完成此操作。我只想用正斜杠(/)替换它,但是每次尝试这个时我都会遇到错误。有谁知道如何将问号改为正斜杠?
答案 0 :(得分:3)
你想要它,所以输入的URL可以是http:/example.com/servlet/arg1/arg2/arg3?
如果是这样,那么你想在行上添加一个servlet映射 / sevletname / *到你的web.xml。
所以在你想要的web.xml中:
<servlet>
<servlet-name>ServletName</servlet-name>
<servlet-class>biggle.whatever.Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletName</servlet-name>
<url-pattern>/webxml_random/*</url-pattern>
</servlet-mapping>
答案 1 :(得分:2)
如果您的某些内容会以您希望的格式生成请求,那么您可以使用/foo/*
形式指定servlet映射,并调用getRequestURI()来获取该路径。然后,您只需通过调用String.split("/")
来解析参数。
但是,真正的问题是如何生成这样的URL。正如其他海报所指出的那样,问号是URL specification的一部分,HTML GET表单将以该形式生成URL - 无论您的服务器是用Java,Python,PHP还是用户编写,都无关紧要别的什么。
答案 2 :(得分:0)
您需要HttpServletRequest.getRequestURI()和HttpServletRequest.getQueryString()的组合,然后将它们与'/'结合起来。
然而,我对你为什么这样做以及你真正想要达到的目标感兴趣。
答案 3 :(得分:0)
网址中的问号由HTTP specification定义。只要有任何数据通过URL发送到服务器,它就会成为URL的一部分。您无法重新定义HTTP规范定义的URL的基本结构。
答案 4 :(得分:0)
答案 5 :(得分:0)
从你对Brian Agnew的回复:“理想情况下,我只是喜欢用斜杠划分的网址。但是目前我必须在争论之前加上那个问号。”呃,是的,问号是URL规范的基本部分,它将所请求的资源(例如,页面)与参数分开以提供资源。
听起来你正在尝试做一些事情RESTful。如果是这样,您必须在servlet配置中设置servlet映射条目,以将URL映射到servlet,然后servlet可以从URL检索其参数。如果您搜索“+ java + RESTful”,您将找到几种资源来帮助您实现这一目标。