前天,一组程序 (TFW's Web Base / MVC New Generation (Experimental) / 01 Name Guess) 在工作位的计算机上爆出“getOutputStream() has already called”异常:
当即 Debug 追踪,初步圈定范围,将出错的部分提取、最简化至一个 JSP 中,以便随时重现问题及试验各种解决办法:
试验结果:
1. forward 到 JSP ,一切正常:
2. sendRedict 到静态页面,一切正常:
3. forward 到静态页面,出此异常:
然而同样的程序也跑在个人网站上和自己的计算机上,立刻前往个人网站访问,无此异常;下班后在自己的计算机上试验,也无此异常:
Debug 验明正身,的确是 forward 到静态页面:
之后想到可能是环境差异所致:
1. 工作位计算机:Win7 x86 + Oracle JDK 1.8.X + Tomcat 7.0.59 ,forward 到静态页面异常;
2. 私人计算机:Linux x86-64 + Open JDK 1.8.X + Tomcat 7.0.59 ,forward 到静态页面正常;
3. 个人网站虚拟主机:Linux x86-64 + Oracle JDK 1.7.X + Tomcat 7.0.X ,forward 到静态页面正常。
但问题依然存在:
1. JSP / Servlet 到底能不能 forward 到静态页面?
2. JSP / Servlet 如何正确地 forward 到静态页面?