国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

getOutputStream() has already been called for this response的理解

2019-11-08 01:35:53
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
前言
在做Excel導(dǎo)出的時(shí)候,使用到了response.getOutputStream(),然后在sPRingmvc的方法中return了一個(gè)jsp視圖路徑出去,導(dǎo)致這個(gè)錯(cuò)誤。getOutputStream()是以字節(jié)流的方式寫(xiě)出數(shù)據(jù)瀏覽器得有對(duì)應(yīng)的編碼表來(lái)把字節(jié)流解析為字符而如果又實(shí)用getWriter()來(lái)以字符的形式寫(xiě)出,編碼變沖突。。所有規(guī)范兩者不能同時(shí)使用
分析
我們都知道jsp的內(nèi)置對(duì)象有一個(gè)out,它是通過(guò)PageContext.getOut()來(lái)獲取的,而在j2ee的開(kāi)發(fā)api文檔中寫(xiě)有Calling flush() on the ServletOutputStream commits the response. Either this method or getWriter() may be called to write the body, not both.調(diào)用flush()方法會(huì)提交response流,getWriter()和getOutPutStream()兩者只能被調(diào)用一個(gè)
原因
兩個(gè)流使用的是同一個(gè)緩沖區(qū),當(dāng)緩沖區(qū)滿后 才會(huì)被寫(xiě)出(或手動(dòng)調(diào)用flush寫(xiě)出) 在編譯后的jsp類中,有一句: if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);} 釋放時(shí)會(huì)調(diào)用response.getWriter()

如果流沒(méi)有關(guān)閉 tomcat會(huì)自動(dòng)關(guān)閉,但也提倡手動(dòng)關(guān)閉流,遵循j2ee的開(kāi)發(fā)規(guī)范,具體細(xì)節(jié)只能考慮參看源碼分析了,后續(xù)查詢相關(guān)資料再來(lái)補(bǔ)充


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 体育| 牙克石市| 车致| 手游| 安义县| 渭南市| 长岛县| 深泽县| 神农架林区| 稷山县| 湟源县| 利津县| 增城市| 外汇| 宣城市| 崇州市| 阳江市| 措美县| 水城县| 章丘市| 怀柔区| 汨罗市| 黑水县| 连江县| 普格县| 阿拉善右旗| 南丹县| 明星| 阿图什市| 三明市| 新余市| 永平县| 河北省| 南平市| 浙江省| 彭水| 沅陵县| 三都| 阿尔山市| 德庆县| 云林县|