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