Java Web App中所有目录的常见错误页面

时间:2016-01-21 16:32:41

标签: java tomcat8 custom-error-pages

我正在尝试在我的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这样的资源,jsimg拉了。

我知道资源是用./...路径相对调用的,在第二种情况下,由于目录更改,它期望它是../...,但是我想要克服这个问题,我不是直接在生产服务器上工作,我无法使用localhost的所有内容的确切网址,因为它必须在以后的任何地方更改。

让我知道我该怎么做?

我使用的是Tomcat 8.0.28,而WebApp版本是3.1

2 个答案:

答案 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" ...等。

NB:最好设计你的错误页面,因为它不依赖于任何其他文件。在这种情况下,styling和资源应该是绝对的或内联的,如果有的话,图像应该驻留在同一个文件夹中你的错误页面