gpt4 book ai didi

java - Tomcat - 当 ServletContextListener 失败时重定向到错误页面

转载 作者:行者123 更新时间:2023-11-28 22:23:33 25 4
gpt4 key购买 nike

当 Tomcat 启动时,它调用我的 ServletContextListener 来获取数据库连接,稍后我将在其他 servlet 中使用 getServletContext()。它在我的 web.xml 中被称为:
listener<br/>
listener-class org.ppdc.database.DBCPoolingListener /listener-class<br/>
/listener>
(我删除了 < >,因为它们无法在此消息中正确显示。>
如果在 Tomcat 启动时我无法连接到数据库,我会收到 404 错误,因为 Tomcat 无法启动应用程序。

此时如何将用户重定向到自定义错误页面?我在我的 web.xml 中尝试了以下内容(我在原始文件中有 < > 括号):
(错误页面)
(错误代码 404/错误代码)
(位置/file_not_found.html/位置)
(/错误页面)

关于在 Tomcat 尝试启动应用程序时如何将用户重定向到我的错误页面之一的任何想法?

谢谢维克

最佳答案

如果您的应用程序加载失败,就是这样。 Tomcat 没有运行它,也不提供您的错误页面。

所以,想要对付半死状态,就需要从半死状态开始。幸运的是,如果您安装了一个过滤器,您的 servlet 中的代码可以免于检查应用程序是否处于半死状态,它会在控制权转移到任何 servlet 之前执行此操作。

在 web.xml 中声明一个过滤器:

<filter>
<filter-name>IsHalfDeadFilter</filter-name>
<filter-class>my.package.IsHalfDeadFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>IsHalfDeadFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>

然后执行 doFilter 方法重定向到您的错误页面。

@Override
public void doFilter (
final ServletRequest request,
final ServletResponse response,
final FilterChain chain
) throws
IOException,
ServletException
{
if ( isHalfDead )
{
// redirect to error page
return;
}

chain.doFilter( request, response );
}

阅读有关过滤器的更多信息 here

关于java - Tomcat - 当 ServletContextListener 失败时重定向到错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2923278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com