在我的一个项目中,我需要处理404(未找到资源)和403(拒绝访问)。我在web.xml中给出配置为
<error-page>
<error-code>404</error-code>
<location>/WEB_INF/jsp/web/exception/weberror.jsp</location>
</error-page>
<error-page>
<error-code>403</error-code>
<location>/WEB_INF/jsp/web/exception/accessDenied.jsp</location>
</error-page>
</error-page>
现在,当访问被拒绝生成时,浏览器显示我本机404.我还删除了浏览器中的友好错误页面设置,但删除后我得到一个空白页面。
我的jsps在WEB-INF文件夹中。所有jsps所在的路径是
/WEB_INF/jsp/
请帮帮我。如果我遗失了什么?
答案 0 :(得分:9)
/WEB-INF/
下的文件受到保护,不会被客户端直接访问,这是defined in the Java EE specification。因此,您的错误页面必须位于此目录之外。尝试将它们移动到专用位置,例如G。 /errors/404.jsp
。
答案 1 :(得分:4)
在您的web.xml中使用WEB-INF
而不是WEB_INF
有什么用?
答案 2 :(得分:3)
问题是您使用的是WEB_INF而不是WEB-INF。 WEB-INF中提到的所有资源都受到客户端的保护,无法直接访问,因此将其移出WEB-INF始终是一种很好的做法。
由于
答案 3 :(得分:0)
上面指出的错误在web.xml上显示为cvc-complex-type.2.4.a:从元素'location'开始发现无效内容。
<error-page><location>/error</location></error-page>
它生成的错误是
{“java.sun.com/xml/ns/javaee":error-code, 预计会有“java.sun.com/xml/ns/javaee":exception-type}。
使用servlet 3.0规范开始避免使用错误页面映射特定错误代码是正确的,所以我通过以下更改解决了它: http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd版本= 3.0
将版本更改从任何内容看 3.0