隨筆-199  評論-203  文章-11  trackbacks-0
            我們在做文件上傳或者下載,或者過濾等操作時,可能要用到頁面的輸出流.

              例如在JSP使用:

          response.reset();
          response.setContentType(”application/vnd.ms-excel”);
          OutputStream s = response.getOutputStream();

              拋出異常:

          ERROR [Engine] StandardWrapperValve[jsp]: Servlet.service()
          for servlet jsp threw exception
          java.lang.IllegalStateException: getOutputStream()
          has already been called for this response

              從網(wǎng)上找了下資料,綜合一下原因分析:

              這是WEB容器生成的servlet代碼中有out.write(””),這個和JSP中調(diào)用的response.getOutputStream()產(chǎn)生沖突。即Servlet規(guī)范說明,不能既調(diào)用 response.getOutputStream(),又調(diào)用response.getWriter(),無論先調(diào)用哪一個,在調(diào)用第二個時候應(yīng)會拋出 IllegalStateException,因為在jsp中,out變量是通過response.getWriter得到的,在程序中既用了response.getOutputStream,又用了out變量,故出現(xiàn)以上錯誤。

              解決方案:

              1.在程序中添加:
              out.clear();
              out = pageContext.pushBody();
              就可以了;

              2,不要在%][%之間寫內(nèi)容包括空格和換行符

              3,在頁面寫入圖片的時候,需要

          flush()
           OutputStream utput=response.getOutputStream();
           output.flush();

              4,在頁面確定寫入

          posted on 2009-04-14 07:55 Werther 閱讀(1171) 評論(0)  編輯  收藏 所屬分類: 10.Java
          主站蜘蛛池模板: 福清市| 舞阳县| 三亚市| 车致| 龙州县| 正阳县| 衢州市| 古蔺县| 大英县| 赤峰市| 五台县| 铁岭县| 沧州市| 东城区| 加查县| 武安市| 富平县| 湘潭市| 嵊州市| 武山县| 高碑店市| 丹寨县| 石屏县| 瓦房店市| 巴青县| 天台县| 扶风县| 汝州市| 万全县| 栖霞市| 松潘县| 怀宁县| 龙门县| 连山| 泽州县| 禹州市| 马尔康县| 阿瓦提县| 温泉县| 贡觉县| 喜德县|