1、關閉數據庫連接
使用數據庫連接時,記住要在finally中關閉,如果用到了連接池的話,實際上關閉操作實際上把連接歸還給連接池;
2、從1開始
在使用ResultSet讀取列值時,列是從左到右編號,第一列是1;比如"select id,name from student",可以使用rs.getString(2),也可以使用rs.getString("name")讀取,但是前一種速度快些,后面一種可維護性強些,并且第二種方法中使用列名作為參數的時候,列名是不區分大小寫的,所以也可是使用rs.getString("Name")讀取;另外在用PreparedStatement的設置參數的時候,也是從1開始的;
3、安全的提供文件下載
在提供文件下載的時候,要防止盜連.內容被盜的損失不計,還加重了自己服務器的負擔,而且還防止有人循環下載某一區間段的所有附件.解決問題的方法常見的有通過Apache Http Server來配置,只有滿足一定條件的HTTP請求才允許下載;另一種是服務器生成一個隨即的值,并放在Session對象中,當用戶下載的文件的時候,必須把該隨即值傳回到服務器端,服務器斷再判斷該隨即值是否和Session中的隨即值一致;
4、forword與sendRedirect的區別
forword:RequestDispatcher dispatcher=request.getRequestDispatcher("/test.jsp");
dispatcher.forword(request,response);
sendRedirect:response.sendRedirect("/test.jsp");
如果稱forword是一個導水渠,那么redirect則是一個指路人.forword將上一個流程的數據轉向下一個流程,而redirect只是提示瀏覽器需要訪問的下一個頁面.因此forword只可以在同一個context中使用;
5、Action與DispatchAction
如果很多操作都是觸發同一個已定義的Action,只是所帶的method參數不同,這樣設計方便把功能類似的操作定義在同一個Action里面,然后根據不同的method參數調用不同的方法.在定義Action的時候繼承DispatchAction;而且在應用服務器中,每個Servlet就是一個線程,后一種辦法會導致系統中存在大量的處理用戶請求的線程,線程之間的切換的開銷回嚴重降低應用服務器的性能;
6、sesson的關閉
一般情況下session都是存儲在內存里,當服務器進程被停止或者重啟的時候,內存里的session也會被清空.但是并不是瀏覽器關閉的時候session就消失了,這是不正確的.一般說來,session在下列情況下會被刪除:
1)程序調用HttpSession.invalidate();
2)距離上一次收到客戶端發送的session id時間間隔超過了session的超時限制;
3)服務器進程被停止或者重啟;
7、java函數值傳遞還是引用傳遞?
java數據類型有兩類:元數據類型和引用數據類型.在使用元數據類型進行傳遞的時候傳遞的是元數據類型本身的值,在傳遞引用數據類型的時候,傳遞的是這個引用對象的地址;
☆頁面編碼設置
1、保證JSP向客戶端輸出時是采用中文編碼方式輸出的,JSP源代編中加入以下一行:
<%@page contentType="text/html; charset=gb2312"%>
2、讓JSP能正確獲得傳入的參數,在JSP源文件頭加入下面一句:
<%request.setCharacterEncoding("GB2312");%>
3、讓JSP編譯器能正確地解碼我們的含有中文字符的JSP文件,在JSP源文件中指定我們的JSP源文件的編碼格式
<%@page pageEncoding="GB2312"%>
posted on 2007-05-30 17:17
破繭而出 閱讀(335)
評論(0) 編輯 收藏 所屬分類:
Java