Java Servlet异常处理:转发到具有不同消息的同一错误页
如何处理servlet中的异常,将异常转发到具有不同消息的同一错误页? 在我的servlet中,我有下面的doGet(此处简化)方法,带有一个开关案例:Java Servlet异常处理:转发到具有不同消息的同一错误页,java,jsp,exception,servlets,web.xml,Java,Jsp,Exception,Servlets,Web.xml,如何处理servlet中的异常,将异常转发到具有不同消息的同一错误页? 在我的servlet中,我有下面的doGet(此处简化)方法,带有一个开关案例: public class NewServlet extends HttpServlet { //[...] protected void doGet( //[...] try { DAO ldapdao = new DAO(); List<Entry> entr
public class NewServlet extends HttpServlet {
//[...]
protected void doGet(
//[...]
try {
DAO ldapdao = new DAO();
List<Entry> entries = null;
switch (enumPage.fromString(operation)) {
// [...]
case add:
String values[] = request.getParameterValues("item");
try {
ldapdao.addentry(values);
link = "entryadded.jsp";
} catch (Exception exp) { // 2
throw new MyException("Entry Not Added");
}
break;
case remove:
entries = ldapdao.searchEntry(request.getParameter("item"));
if (entries.isEmpty()) {
throw new MyException("Entry Not Removed"); //3
} else {
ldapdao.remove(request.getParameter("item"));
link = "entryremoved.jsp";
}
break;
case modified:
String values1[] = request.getParameterValues("item");
try {
ldapdao.modify(values1);
link = ("modified.jsp");
} catch (Exception exp) { //4
throw new MyException("Entry Not Modified");
}
// [...]
和web.xml文件:
<error-page>
<location>/Error.jsp</location>
</error-page>
/Error.jsp
尝试指示异常类型:
<error-page>
<exception-type>com.mycompany.test_servlet.MyException</exception-type>
<location>/Error.jsp</location>
</error-page>
com.mycompany.test_servlet.MyException
/Error.jsp
您可以在捕获异常时尝试在请求对象中设置属性
request.setAttribute("exception", ex.getMessage());
然后在error.jsp中获取该属性,例如:
<% if (request.getAttribute("exception") != null) { %>
<tr>
<td colspan='2'><p align=right>Authentication Error (try again):<br>
<%=request.getAttribute("exception")%>
</p></td>
</tr>
<%}%>
验证错误(重试):
<% if (request.getAttribute("exception") != null) { %>
<tr>
<td colspan='2'><p align=right>Authentication Error (try again):<br>
<%=request.getAttribute("exception")%>
</p></td>
</tr>
<%}%>