我正在尝试在我的Java WebApp中使用error.html
条目生成web.xml
错误页面,如下所示:
<error-page>
<location>/error.html</location>
</error-page>
将目录列为:
--App
-- index.html
-- error.html
-- css/
-- ...
-- js/
-- ...
-- img/
-- ...
-- folder/
-- index.html
当我输入地址时说:
/App/some-wrong-address
或/App/folder/some-wrong-address
在这两种情况下,我都能看到错误页面作为404
错误的一部分被调用,但在后者的情况下,我没有得到caa
这样的资源,js
或img
拉了。
我知道资源是用./...
路径相对调用的,在第二种情况下,由于目录更改,它期望它是../...
,但是我想要克服这个问题,我不是直接在生产服务器上工作,我无法使用localhost
的所有内容的确切网址,因为它必须在以后的任何地方更改。
让我知道我该怎么做?
我使用的是Tomcat 8.0.28,而WebApp版本是3.1
。
答案 0 :(得分:0)
关键是要正确生成webapp生成的所有HTML。 HTML必须在引用其他资源(CSS,图像,javascript)的元素中具有正确的URL(注意:它们是URL,而不是路径)。
将生产系统的绝对URL放在源文件中是不正确的。
在我工作的JavaEE Web应用程序中,我们使用JSF Facelets作为生成HTML的模板系统。我们写了这样的每个URL:
<script src="#{request.contextPath}/foo/bar/baz.js" />
<img src="#{request.contextPath}/img/something.png" />
这允许URL层次结构中任何位置的任何模板引用任何资产。 JavaEE应用服务器处理填充正确的上下文路径,以便浏览器处理的结果URL无论托管位置如何都是正确的。
答案 1 :(得分:0)
application.getContextPath()
将为您提供页面上下文,您可以在此之后相应地根据您的URL ...将在本地服务器以及服务器上工作。
例如:... href=" <%=application.getContextPath()%>/css/yourcss.css" ...
等。