我使用演示JSP和servlet一个小的应用,目前有这样的代码,以处理DAO中抛出的异常和参数的验证从请求:处理异常在Servlet中
// Get ID from request.
int id = 0;
try {
id = Integer.parseInt(request.getParameter("id"));
}
catch (NumberFormatException e) {
messages.addMessage(e.getMessage());
request.setAttribute("messages", messages.getMessages());
response.sendRedirect("/jsp/exceptions/error500.jsp");
}
// Check person exists.
PersonDAOImpl personDAO = new PersonDAOImpl();
Person person = null;
try {
person = personDAO.get(id);
}
catch (DAOException e) {
messages.addMessage(e.getMessage());
request.setAttribute("messages", messages.getMessages());
response.sendRedirect("/jsp/exceptions/error500.jsp");
}
所以,当一个异常被抛出它可以被抓到servlet中并显示在一般的错误页面上。消息对象只是Messages实用程序类的一个实例,它将一些消息存储在一个数组列表中。
但我困惑的是如何最好地消除由异常处理代码引起了servlet的这样杂乱的内容:
messages.addMessage(e.getMessage());
request.setAttribute("messages", messages.getMessages());
response.sendRedirect("/jsp/exceptions/error500.jsp");
任何想法?
简单验证消息目前的处理方式不同。如果需要向用户显示消息,例如如果一个servlet的数字参数超出范围,则这些消息将被写入一个Messages对象。然后将此对象写入JSP,使用JSTL标签可以显示消息。但是这里可以使用一个通用的例外。
我的主要目标是尽量保持这种简单而不会“过度”,因为这个应用程序只是一个演示。堆栈跟踪文本是否显示在页面上并不重要。
你可以看看这个http://stackoverflow.com/questions/6182771/how-to-properly-handle-exceptions-in-a-jsp-servlet-app – user3470953
等等,你在使用Spring框架吗?或只是普通的Java? – JamesENL
我正在使用普通的Java。 –