我在练习项目中遇到了一些麻烦。
我有一个用 Servlets/JSP 编写的小型媒体门户项目。在这个项目中,我创建了一些自定义异常层次结构来处理诸如“密码错误”、“这样的用户已经注册”等情况。在 Servlet 中,我抛出错误是这样的:
if (login.length() == 0) {
log.error("Login field is empty!");
throw new EmptyFieldException(i18n.getString("Login_field_is_empty!"));
}
我也有错误页面,如下所示:
<%@ page contentType="text/html" pageEncoding="windows-1251" isErrorPage="true" import="java.util.ResourceBundle,java.io.*" %>
<%@ taglib uri="/WEB-INF/taglib.tld" prefix="taglib" %>
<!DOCTYPE html>
<%
ResourceBundle resources = ResourceBundle.getBundle("i18n.MediaPortal", request.getLocale());
%>
<html style="height:100%;">
<head>
<link rel="stylesheet" type="text/css" href="../css/style.css">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title><%= resources.getString("Login_page")%></title>
</head>
<body>
<div id="sidecolumn"> </div>
<div id="content">
<div><h1><%= resources.getString("You_have_encountered_an_error")%>.</h1></div>
<div><h3><%= exception.getMessage() %></h3></div>
</div>
<div id="sidecolumn"> </div>
<div id="footer"><taglib:sign/></div>
</body>
</html>
问题是当我抛出异常时 - 除了错误页面根本不加载任何样式外,一切正常!只有文字。但是当我直接转到错误页面 url 时 - 样式已加载。问题是 servlet 以状态码 500 结尾,如果我理解正确,这个代码会取消 style.css 文件的加载。
请任何人指出这个问题的解决方案。每一个答案都值得赞赏。