1.在jsp向頁面輸出圖片的時(shí)候,使用response.getOutputStream()會(huì)有這樣的異常錯(cuò)誤提示信息:java.lang.IllegalStateException: getOutputStream() has already been called for this response的解決辦法:
只需要在jsp頁面的最后加上兩條語句: out.clear();out=pageContext.pushBody();即可(其中out,pageContext均為jsp內(nèi)置對(duì)象!)
2.柱狀圖在顯示橫軸時(shí)名稱不能全部顯示解決方案(讓坐標(biāo)傾斜30度):
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(Math.PI/6.0));
plot.setDomainAxis(domainAxis);
3.JFreeChart將柱圖中的Y軸數(shù)字顯示為整數(shù)
NumberAxis numberaxis = (NumberAxis)plot.getRangeAxis();
numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
4.JSP的會(huì)話跟蹤技術(shù)
1. Cookie:服務(wù)器在一個(gè)應(yīng)答首部傳遞給瀏覽器的名稱/值對(duì)。瀏覽器保存的時(shí)間由cookie的過期時(shí)間屬性來指定。當(dāng)瀏覽器向某個(gè)服務(wù)器發(fā)送一個(gè)請(qǐng)求時(shí),它會(huì)檢查其保存的cookie,并在請(qǐng)求首部中包含從同一臺(tái)服務(wù)器上接收到的所有cookie。
2.Session tracking:在瀏覽器和服務(wù)器之間不直接傳送所有的狀態(tài)信息,而只是傳遞表示符(session ID)。瀏覽器發(fā)送sessionID,服務(wù)器跟蹤與該會(huì)話相關(guān)聯(lián)的所有信息。傳遞sessionID可以通過cookie和URL復(fù)寫技術(shù),大部分容器都支持這兩種技術(shù)。服務(wù)器無法分辨用戶是否關(guān)閉了瀏覽器,因此關(guān)閉瀏覽器意味著與先前的會(huì)話關(guān)聯(lián)的所有會(huì)話數(shù)據(jù)都保留在服務(wù)器上,直到會(huì)話超時(shí),服務(wù)器銷毀會(huì)話對(duì)像。®跟蹤同一會(huì)話中的請(qǐng)求的會(huì)話ID可以有多種方法,主要有cookie和url復(fù)寫。
3.URL復(fù)寫:把會(huì)話ID編碼在URL中。 例:counter.jjsp;jsessionnid=be8d697876787876befdbde898789098980這樣,即使瀏覽器不支持cookie,也能夠?qū)崿F(xiàn)會(huì)話跟蹤。對(duì)于URL復(fù)寫,服務(wù)器從請(qǐng)求的URI中提取出會(huì)話ID,并把該請(qǐng)求與相應(yīng)的會(huì)話關(guān)聯(lián)起來,然后在訪問會(huì)話數(shù)據(jù)的時(shí)候,JSP頁面所進(jìn)行的處理方式就和使用cookie跟蹤會(huì)話id時(shí)所使用的方式完全相同。所以sesssion的實(shí)現(xiàn)要依靠cookie或URL復(fù)寫技術(shù)。如果想為不支持cookie的瀏覽器提供會(huì)話跟蹤,就必須使用<c:url>行為對(duì)應(yīng)用程序中的所有URL進(jìn)行復(fù)寫。這意味著應(yīng)用程序中的所有頁面(至少是那些帶有對(duì)其他頁面引用的頁面)都必須是JSP頁面,這樣頁面引用才能以動(dòng)態(tài)方式進(jìn)行編碼,如果遺漏了一個(gè)ur,那么服務(wù)就會(huì)失去對(duì)會(huì)話的跟蹤。
4.隱藏表單域:隱藏表單域是將會(huì)話ID添加到HTML的隱藏表單中(類型為hidden的input)。重定向和轉(zhuǎn)發(fā)可以使用兩種方法來調(diào)用另一個(gè)頁面,重定向和轉(zhuǎn)發(fā)。i) 轉(zhuǎn)發(fā):<jsp:forward page=”userInfo.jsp”/>轉(zhuǎn)發(fā),JSP容器將使用一個(gè)內(nèi)部方法來調(diào)用目標(biāo)頁面,新的頁面繼續(xù)處理同一個(gè)請(qǐng)求,而瀏覽器不會(huì)知道這個(gè)過程涉及到了多個(gè)頁面。瀏覽器URL會(huì)保持不變。ii) 重定向:<c:redirect url=”userInfo.jsp”/>重定向與轉(zhuǎn)發(fā)不同,重定向時(shí),第一個(gè)頁面會(huì)通知瀏覽器發(fā)送一個(gè)新的目標(biāo)頁面的請(qǐng)求。瀏覽器所顯示的URL會(huì)變成新頁面的URL。重定向的速度比轉(zhuǎn)發(fā)要慢,因?yàn)闉g覽器得發(fā)出一個(gè)新的請(qǐng)求。同時(shí),由于重定向產(chǎn)生了一個(gè)新的請(qǐng)求,所以經(jīng)過一次重定向之后請(qǐng)求作用域內(nèi)的對(duì)象將無法再使用了。
5.JFreeChart柱狀圖數(shù)字顯示在柱子上方:
renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setItemLabelsVisible(true);
// 默認(rèn)的數(shù)字顯示在柱子中,通過如下兩句可調(diào)整數(shù)字的顯示
renderer.setPositiveItemLabelPosition(new ItemLabelPosition(
ItemLabelAnchor.OUTSIDE12,TextAnchor.BASELINE_LEFT));