Java Servlet异常处理:转发到具有不同消息的同一错误页

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

如何处理servlet中的异常,将异常转发到具有不同消息的同一错误页? 在我的servlet中,我有下面的doGet(此处简化)方法,带有一个开关案例:

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>
                        <%}%>