这个问题在这里已有答案:
我正在修改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
部分。
Google App Engine使用Java Servlet API 。
GWT的RemoteServiceServlet通过以下方式提供对请求的访问:
HttpServletRequest request = this.getThreadLocalRequest();
你可以从中调用request.getQueryString()
,并以你想要的任何方式解释查询字符串,或者你可以调用request.getParameter("foo")
我能够通过这个答案使用Window.Location让它工作:
import com.google.gwt.user.client.Window;
// ...
Window.Location.getParameter("foo") // == "bar"
注意:
位置是一个非常简单的包装器,因此并非所有浏览器怪癖都对用户隐藏。
使用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]);
}