【发布时间】:2011-10-17 12:42:27
【问题描述】:
我在我的 GWT 应用程序(从 GAE 运行)中为桌面和移动客户端使用不同的实现。一种解决方案是 GWT 中的用户代理检测。此解决方案将桌面和移动实现都加载到客户端中。
更简洁的解决方案是在服务器 servlet 上检测用户代理。此解决方案仅返回客户端的正确实现。
如何从 GAE 返回这些不同的实现?
【问题讨论】:
标签: java google-app-engine gwt
我在我的 GWT 应用程序(从 GAE 运行)中为桌面和移动客户端使用不同的实现。一种解决方案是 GWT 中的用户代理检测。此解决方案将桌面和移动实现都加载到客户端中。
更简洁的解决方案是在服务器 servlet 上检测用户代理。此解决方案仅返回客户端的正确实现。
如何从 GAE 返回这些不同的实现?
【问题讨论】:
标签: java google-app-engine gwt
我确实做到了。您将欢迎页面声明为映射到 servlet 的 url
<welcome-file-list>
<welcome-file>/urlToSomeServlet</welcome-file>
</welcome-file-list>
在这个 servlet 中,您可以获得 userAgent 值:
String userAgent = request.getHeader("User-Agent");
然后,根据该值,您可以转发或重定向到桌面页面或移动页面:
request.getRequestDispatcher("desireedHtmlPage.html").forward(request,response);
或
response.sendRedirect("desireedHtmlPage.html");
Forward 会让浏览器认为他还在初始请求中,它仍然会显示欢迎页面 url,而执行重定向实际上会告诉浏览器他正在被重定向到另一个资源,因此将显示该资源的 url在导航栏中。
【讨论】:
您是否查看过来自 GWT 的 MobileWebApp 示例?
【讨论】:
这里还有一个很好的例子GWT 2.1 Seminar 2010。这使用服务器端用户代理检查返回查询参数 (m=1)。它在应用程序 gwt.xml 文件中执行此操作。
【讨论】: