Java URL - 传递参数 - Servlet

时间:2009-09-02 11:07:20

标签: java url servlets

目前使用HTTPServletRequest类,特别是.getQueryString方法来检索输入的URL。

它将解析的URL是server / package / servlet?args1 / args2 / arg3 ..

我想从网址中删除问号(?),但我不知道如何完成此操作。我只想用正斜杠(/)替换它,但是每次尝试这个时我都会遇到错误。有谁知道如何将问号改为正斜杠?

6 个答案:

答案 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)

听起来像是在进行某种网址重写之后。

this应该可以为tomcat和其他j2ee服务器执行此操作。

自己从未使用过它。

答案 5 :(得分:0)

从你对Brian Agnew的回复:“理想情况下,我只是喜欢用斜杠划分的网址。但是目前我必须在争论之前加上那个问号。”呃,是的,问号是URL规范的基本部分,它将所请求的资源(例如,页面)与参数分开以提供资源。

听起来你正在尝试做一些事情RESTful。如果是这样,您必须在servlet配置中设置servlet映射条目,以将URL映射到servlet,然后servlet可以从URL检索其参数。如果您搜索“+ java + RESTful”,您将找到几种资源来帮助您实现这一目标。