1

我正在开发一个 GAE/J 应用程序,我有以下结构:

- war
    |
    - mobile
    |      |
    |      - assets
    |      |      |
    |      |      + a.jpg
    |      |      + b.gif
    |      |      + c.js
    |      + a.jsp
    |      + b.jsp
    |      + index.jsp
    |      + d.css
    |      + e.css
    |
    + landing.jsp

现在在 web.xml 中,我有一个/mobile 指向<jsp-file>/mobile/index.jsp<jsp-file>. 在我的index.jsp中,我使用相对寻址来引用所有必需的资源,如 JS 文件、CSS 文件和图像;our_domain/mobile/index.jsp如果我在浏览器中输入,这效果很好。但是当我键入时our_domain/mobile,它会提供正确的文件(index.jsp),但每个相对地址都会中断,这意味着没有 CSS、没有 JS、没有图像。根据我的调查,它似乎web.xml实际上并没有重定向,而是调用指定的 JSP/Servlet 来响应特定的 URL 模式。这不适用于相对寻址,因为对于真正的重定向来说是正确的路径信息会留在根目录中。在这种情况下,如何确保相对地址按预期工作?

[编辑] 我尝试了多种配置。现在/mobileURL 可以正常工作,我的所有 CSS 都已加载,但/mobile/没有加载我的 CSS。这是我的映射:

<servlet> <description>Landing page on mobile site</description> 
 <display-name>MobileIndex</display-name>
 <servlet-name>MobileIndex</servlet-name>
 <jsp-file>/mobile/index.jsp</jsp-file> 
</servlet>

<servlet-mapping>
 <servlet-name>MobileIndex</servlet-name>
 <url-pattern>/mobile/</url-pattern>
</servlet-mapping> 

<servlet-mapping>
 <servlet-name>MobileIndex</servlet-name>
 <url-pattern>/mobile</url-pattern>
</servlet-mapping>
4

1 回答 1

1

我不确定重定向是你真正想要的。您的应用程序的良好组织是:

myapp/ pom.xml src/ main/ java/ ... Your Source Code ... webapp landing.jsp assets/ a.jpg b.gif c.js mobile/ index.jsp a.jsp b.jsp 当然,您可以使用appengine-web.xml<public-root>的和<static-files>元素 更改资产的位置。

于 2017-07-12T00:33:25.590 回答