gpt4 book ai didi

jsp - Struts 2 自定义 404 错误页面从不显示

转载 作者:行者123 更新时间:2023-12-04 18:27:13 25 4
gpt4 key购买 nike

我正在将 Struts 2 框架用于 web 应用程序。在尝试创建自定义 404 错误页面时,我发现 Struts 2 为我做的工作比预期的要多。

我只使用一个 struts.xml 和一个 web.xml 文件。在 web.xml 文件中,我添加了以下代码:

<error-page>
<error-code>404</error-code>
<location>/error/Error404.jsp</location>
</error-page>

现在,当我启动我的 web 应用程序时,它会像往常一样进入主页。当我尝试这种类型的网址时(所有不存在的网址):

http://localhost:8080/MyWebApp/fhgfhfhfhgfhgfhfhfh
http://localhost:8080/MyWebApp/fhgfhfhfhgfhgfhfhfh.action

Struts 将处理请求,运行拦截器,并自动重定向到默认页面。我本来希望我的 404 错误页面会显示在这些页面上。我什至在 struts.xml 中删除了这一行,但它仍然重定向!

<default-action-ref name="index" />

当我使用以下网址时:

http://localhost:8080/MyWebApp/fhgfhfhfhgfhgfhfhfh.jsp

Struts 只是显示一个空白屏幕,并且没有处理任何请求(没有拦截器,没有重定向......)。我也觉得这很奇怪,因为我看不到该请求的无效之处(除了不存在的 JSP 文件)

所以我想我需要修改我的 struts.xml 以便我可以覆盖一些默认的重定向行为(我不希望通过访问主页来掩盖 404 错误),并且我的 web.xml 还可以处理任何模糊的请求(因此用户输入的任何 URL 都将被实际处理,而不仅仅是显示空白屏幕。我的配置中缺少什么?

PS:我不是在谈论 Java 异常/错误,而只是在谈论 HTTP 错误。 Java 异常得到了正确的处理,就像我希望它们的行为一样。

最佳答案

我找到了它没有显示的原因。

黑屏问题如下:我的404页面路径不正确。它应该是从 webContent 文件夹开始的路径,并以斜杠“/”开头。

默认操作的问题可能是服务器重新启动或缓存问题。我关闭了浏览器和 IDE,然后重新启动了一切。然后 default-action-ref 真的消失了。

我还发现了另一个有趣的怪癖:struts2 只处理 Action 映射,例如:

http://www.mywebsite.com/webapp/whatever
http://www.mywebsite.com/webapp/whatever.action

但它不会像这样处理服务器资源(注意文件扩展名)

http://www.mywebsite.com/webapp/whatever.zip
http://www.mywebsite.com/webapp/whatever.jsp
http://www.mywebsite.com/webapp/whatever.html

您可以通过在 web.xml 文件中添加额外的过滤器映射来解决此问题:

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

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/error/*</url-pattern>
<dispatcher>ERROR</dispatcher>
</filter-mapping>

关于jsp - Struts 2 自定义 404 错误页面从不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24106197/

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