在web.xml中添加条件

时间:2013-06-11 11:45:13

标签: java java-ee servlets web-applications web.xml

这是我的web.xml的一部分

    <error-page>
    <error-code>500</error-code>
    <location>/index</location>
    </error-page>

有没有办法告诉web.xml文件在开发模式下:

<location>/displayException</location>

对于上述location property

或通过代码添加条件的任何方式?

尝试执行此操作的目的是:在开发模式下,我希望在页面和实时模式中看到异常,我想在发生异常时将其重定向到默认页面。

3 个答案:

答案 0 :(得分:3)

您无法在web.xml级别执行此操作。如果web.xml尊重系统属性但事实并非如此,那么这可能是一个很酷的功能。

所以你只能在代码中这样做。幸运的是,你有各种可能性。您可以将错误URL映射到JSP,您可以根据系统属性或存储在属性文件,DB或其他所需位置的其他参数来实现逻辑。您也可以在HTTP过滤器中执行此操作。

您还可以创建web.xml的多个版本:一个用于生产,另一个用于测试。如果要避免重复,请使用模板中的自动生成创建这些版本。

答案 1 :(得分:1)

在Wildfly中,有一种不可移植的方法可以在web.xml(以及其他类似persistence.xml)中启用系统属性评估。为此,请在ee子系统中的服务器配置(standalone.xml或其他)中指定以下内容:

<subsystem xmlns="urn:jboss:domain:ee:2.0">
    <spec-descriptor-property-replacement>true</spec-descriptor-property-replacement>
    <!-- ... -->
</subsystem>

然后你可以做这样的事情:

<location>${myapp.errorpage.location}</location>

答案 2 :(得分:0)

您可以在错误或位置页面中使用if语句。 web.xml不支持if语句。

//error page
if("blog".equals(url))
    blog content ......
else if("profile".equals(url))
    profile content ......