我有一个问题,我确信必须有一个简单的解决方案。我正在编写一个小型 GWT 应用程序,我想在其中实现这一点:
www.domain.com:应该服务于欢迎页面
www.domain.com/xyz:应该提供页面 xyz,其中 xyz 只是数据库中项目的键。如果有与键 xyz 关联的项目,我将加载该项目并显示一个页面,否则我将显示一个 404 错误页面。
我试图相应地修改 web.xml 文件,但我无法让它工作。如果有问题的键在另一个 / 之后,我可以使用url 模式,例如:www.domain.com/search/xyz。但是,我希望将密钥xyz直接放在根 / (http://www.domain.com/xyz)之后。
就像是
<servlet-mapping>
<servlet-name>main</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
似乎不起作用,因为我不知道如何处理主页 index.html(因为它不是实际的 servlet),然后它将加载我的主 GWT 模块。
我可以通过一个不好的解决方法使其工作(见下文):将 404 异常重定向到 index.html,然后在主入口点进行查找,但我确信这不是最佳实践,也用于 SEO 目的.
谁能给我一个关于如何为我的目的使用 GWT 配置 web.xml 的提示?
非常感谢。
麦克风
通过 404 解决方法:
Web.xml:
<web-app>
<error-page>
<exception-type>404</exception-type>
<location>/index.html</location>
</error-page>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
index.html --> 主入口点 --> onModuleLoad():
String path = Window.Location.getPath();
if (path == null || path.length() == 0 || path.equalsIgnoreCase("/")
|| path.equalsIgnoreCase("/index.html")) {
... // load main page
} else {
lookup(path.substring(1)); // that's key xyz