在web.xml中,当我更改以下内容时:
<error-page>
<error-code>403</error-code>
<location>/unauthorized.jsp</location>
</error-page>对此:
<error-page>
<error-code>403</error-code>
<location>/WEB-INF/unauthorized.jsp</location>
</error-page>页面不再显示。
这两个文件都存在并且是相同的,其他错误类型的页面可以很好地处理WEB。
为什么会发生这种事?
发布于 2015-02-08 08:31:27
WEB中的文件受客户端直接访问的保护。它是在JavaEE规范中定义的。因此,当您将文件放在WEB文件夹下时,它们将变得不可访问。因此,如果需要直接访问这些(静态)文件,最好将它们放在WEB目录之外。
注意:您可以将应该被客户端直接访问的文件放在WEB文件夹下。
例如:WEB/jsp/protected.jsp ted.jsp
详细说明你在下面的评论。
您可以使用如下所示的控制器映射来映射403错误页。在这里,您将有一个公共的exception.jsp页面,根据错误代码的不同,它位于WEB文件夹中。
@Controller
public class ExceptionController {
/** Holds key for access denied exception. */
private static final String ACCESS_DENIED = "COMMON.EXCEPTION.403";
/** Holds return model attribute ACCESS_DENIED. */
private static final String ACCESS_DENIED_ATT = "accessDenied";
/** Holds return model PAGE ACCESS_DENIED. */
private static final String ACCESS_DENIED_HTM = "/accessDenied.htm";
/** Holds return page of exception. */
private static final String EXCEPTION = "exception";
/**
* Handle access denied exception and display proper message.
*
* @param model - ModelMap
* @return the name of the view.
*/
@RequestMapping(value = ACCESS_DENIED_HTM, method = RequestMethod.GET)
public String accessDenied(ModelMap model) {
String message = new ErrorMsgLoader().getErrorMessage(ACCESS_DENIED);
model.addAttribute(ACCESS_DENIED_ATT, message);
return EXCEPTION;
}
}web.xml中的错误映射如下所示。
<error-page>
<error-code>403</error-code>
<location>/accessDenied.htm</location>
</error-page>在上面的代码中,我使用了基于Spring的视图处理程序映射。但是,在应用程序中不使用任何框架的情况下,您也可以对简单的Servlet映射进行同样的操作。
https://stackoverflow.com/questions/28391177
复制相似问题