【问题标题】:Browser plugin or debug panel for JSP applicationsJSP 应用程序的浏览器插件或调试面板
【发布时间】:2011-07-07 00:45:28
【问题描述】:
我已经习惯了 Django 漂亮的错误页面,上面有所有的细节,所以我真的很苦恼 Tomcat/JSP 无法对基本的 JasperExceptions 做同样的事情,原因是 JSP 标签拼写错误等等。他们都走了进入localhost.log,它们很难被检测或阅读。
是否有浏览器插件或小型 JSP 应用程序可以很好地做到这一点?
我可以 try/catch 我的 JSP 中的所有异常并将其传递给该应用程序/插件,因此它可以很好地在浮动 div 或其他内容中显示错误详细信息。
【问题讨论】:
标签:
java
debugging
jsp
tomcat
error-handling
【解决方案1】:
我不知道有这样的事情。而且我怀疑很难比现在做得更好;例如针对 JSP 编译错误的 HTTP 500 响应,以及...对于 JSP 执行错误,没有任何有用的信息传递给浏览器。
根本问题是Servlet和JSP的实现模型。基本上,一个 servlet 一打开输出流就“提交”一个 HTTP 响应。一旦发生这种情况,就无法更改响应标头。您无法更改响应状态代码。您无法更改内容类型标头。
如果在执行 JSP 或 Tag 的过程中抛出了一些异常,则没有好的方法可以将这种情况报告给浏览器。很可能响应是使用“text/html”内容类型提交的,并且 JSP 已经开始编写 HTML。无法撤消。太晚了。对不起。
如果 JSP 不能可靠地将诊断消息传递给浏览器,浏览器插件将无济于事。
“修复”此问题的唯一方法是让 JSP 将响应主体写入内存缓冲区,并且仅在完成后将其复制到输出流,并确定不会抛出任何异常.由于性能影响,这无法解决。