使用Java在Google App Engine中读取请求参数[重复]

问题描述 投票:3回答:3

这个问题在这里已有答案:

我正在修改Eclipse在使用Google Web Toolkit和Google App Engine创建新项目时创建的默认项目。 它是GreetingService示例项目。

如何在客户端的.java文件中读取请求参数?

例如,当前的URL是http://127.0.0.1:8887/MyProj.html?gwt.codesvr=127.0.0.1&foo=bar ,我想使用像request.getParameter("foo") == "bar"

我看到文档提到了Python的Request类,但我找不到Java的等价物。 它列在google.appengine.ext.webapp包中,但如果我尝试将其导入我的.java文件(带有com.前缀),则说它无法解析ext部分。

java google-app-engine gwt parameters httpwebrequest
3个回答
4
投票

Google App Engine使用Java Servlet API

GWT的RemoteServiceServlet通过以下方式提供对请求的访问:

HttpServletRequest request = this.getThreadLocalRequest();

你可以从中调用request.getQueryString() ,并以你想要的任何方式解释查询字符串,或者你可以调用request.getParameter("foo")


4
投票

我能够通过这个答案使用Window.Location让它工作:

import com.google.gwt.user.client.Window;

// ...

Window.Location.getParameter("foo") // == "bar"

注意:

位置是一个非常简单的包装器,因此并非所有浏览器怪癖都对用户隐藏。


0
投票

使用java.net.URL解析URL,然后使用String.split()解析查询字符串。

URL url = new URL("http://127.0.0.1:8887/MyProj.html?gwt.codesvr=127.0.0.1&foo=bar");
String query[] = url.getQuery().split("&");
String foo = null;
for (String arg : query) {
  String s[] = arg.split("=");
  if (s[0].equals("foo"))
    System.out.println(s[1]);
}

请参见http://ideone.com/Da4fY

© www.soinside.com 2019 - 2024. All rights reserved.