无法显示jsp

时间:2010-10-06 04:23:58

标签: java jsp

我正在尝试在jsp中显示动态数据。为此我使用jsp表达式在jsp中调用java方法。这个java方法花了很多时间,但它返回了一些值。(我不能减少方法执行时间。) 但我的jsp显示空白。 任何人都可以解释原因和解决方法。 这段代码不是我写的但是我需要找出根本原因。

我的jsp代码看起来像

  display.jsp

       ..... hello......start...

       <%= obj.getDynamicData() %>     

      .....completed .... end     

2 个答案:

答案 0 :(得分:2)

可能是因为您(ab)使用JSP来执行一些原始Java代码。当在发送JSP输出的过程中抛出异常时,JSP的残余将不再发送到浏览器。但是,网络服务器不能将响应更改为具有异常详细信息的错误页面,并且web浏览器最终将显示半页HTML输出,该输出通常显示为空白页。

任何未捕获的异常通常都会记录到服务器的日志文件中。您需要在服务器的日志中挖掘异常和堆栈跟踪,以便您可以解决问题的根本原因。例外包含有关问题原因的有价值信息。

半熟的HTML页面只是一个不完整的HTML页面,导致web浏览器无法理解如何正确显示它。在webbrowser中右键单击该页面,然后选择查看源。如有必要,请在w3 validator的帮助下验证是否符合预期。

此外,尝试使用Firefox和Chrome等不同(更好)的网络浏览器可能是值得的。众所周知,当MSIE6 / 7收到极大的HTML <table>时,它会像这样窒息。它有一个糟糕的表渲染引擎。


为了避免这样的未来麻烦,我建议将所有Java代码移到Servlet类中,这样你就可以获得更友好(至少比挖掘服务器的日志文件更好)错误页面以防万一Java代码中的异常另请参阅How to avoid Java code in JSP?

答案 1 :(得分:1)

根据in BalusC's answer发表的评论:

  

当我评论对obj.getDynamicData()的调用时,jsp页面正确呈现。

两件事中的任何一件都可能发生:

  1. obj.getDynamicData()正在抛出未被捕获和处理的异常
  2. 您的servlet容器/服务器可能配置了某种“请求超时”,如果处理请求花费的时间超过一定时间,则会关闭HTTP连接,并且obj.getDynamicData()需要很长时间才能执行正在触发此超时。
  3. 您的代码或JSP中是否有任何类型的日志记录,告诉您在此方法完成处理后服务器端发生了什么?如果在浏览器停止等待请求/收到空白页后继续从处理JSP请求(和obj.getDynamicData())的线程中看到日志活动,那么强烈提示#2正在发生。

    为了排除简单的事情,你确定服务器实际上是返回一个空的响应,而不是你的浏览器显示空白页面,因为服务器返回了半个HTML页面?请务必检查View Source,使用Firebug之类的工具,和/或从命令行工具中执行与浏览器相同的HTTP请求,例如 curlwget