我希望在我的web应用程序中发生错误或异常时收到一封电子邮件,这样我就可以快速修复。我已经设置了一个JSP错误页面。我喜欢向客户展示错误页面,同时收到一封电子邮件。我使用jsp和每个jsp对应的servlet和控制器。
当出现错误或异常时,如何调用servlet发送电子邮件?web.xml中的配置如何?
请帮帮忙。
发布于 2009-12-21 17:38:41
您可以编写自己的解决方案,也可以使用标准日志记录包中的电子邮件选项。例如,log4j提供了SMTPAppender,它将执行您所需的操作。
发布于 2009-12-22 00:23:05
这不仅取决于你已经使用的应用程序接口和/或框架(例如log4j),还取决于你如何处理全局异常。如果您刚刚在web.xml中定义了一个error-page,那么举个例子,前面提到的log4j肯定不会看到/处理它。你需要自己捕捉并记录。
您可以使用在/*的url-pattern上侦听的Filter来实现以下目的:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
try {
chain.doFilter(request, response);
} catch (Exception e) {
logger.error(e); // Let "error" level associate with SMTPAppender.
throw new ServletException(e); // Will be handled by error-page.
}
}或者在控制器servlet中(如果有):
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
View view = new View(request, response);
Action action = ActionFactory.getAction(request);
try {
action.execute(view);
} catch (Exception e) {
logger.error(e); // Let "error" level associate with SMTPAppender.
throw new ServletException(e); // Will be handled by error-page.
}
view.navigate();
}作为一种简短但在语义上令人讨厌的替代方案,您也可以在JSP中使用scriptlet。exception在JSP中作为隐式变量提供。将其记录在错误页面中,并让记录器处理邮件内容。例如。
<% logger.error(exception); %>发布于 2009-12-21 17:15:05
您可以使用Java Mail API、javadoc here和here作为开发人员指南。
https://stackoverflow.com/questions/1939036
复制相似问题