2010年11月28日 星期日

JSP 教學 - 檔案上傳

檔案上傳廣泛運用在網路硬碟上,提供使用者一個空間儲存資料,接下來介紹一下檔案上傳的一些關鍵點

首先是 HTML 的部份,通常都會用一個 form 來執行,而讓使用者選擇檔案的標籤則是 input type="file",看看底下的HTML片段吧
<form action="/regLogIdent/upload.do"method="post"
                                        enctype="multipart/form-data" >
            <input type="file" name="uploadFile" />
            <input type="submit" value="submit" />
</form>
以上的 form 標籤中有一個要點即是 enctype="multipart/form-data",這是上傳文件時須加載的屬性,所以 form 送出請求時的封包格式會有些差異
以下來看看上傳檔案時封包所顯示的格式,以下為程式片斷,觀察封包的標頭及值


//透過 HttpServletRequest 的 getHeaderNames() 取得所有標頭,注意型態為 Enumeration
Enumeration e = request.getHeaderNames(); 

while(e.hasMoreElements()){
    String headername = (String)e.nextElement(); //取得標頭
      out.println(headername + " : " + 
        request.getHeader(headername) + "<br />");//用 getHeader(String headerName) 取得該標頭值
}

2010年11月21日 星期日

JSP 教學 - PreparedStatement 的使用

在一般的 Java 程式裡如果要插入一筆資料到資料表中,最基本的方法都是用 java.sql.Statement 去做,譬如:
Statement state = connection.createStatement();
state.executeUpdate("SQL 語法");
通常上面的 SQL 語法會寫的太凌亂,譬如太多的單引號和雙引號交錯導致可讀性不易,例如


state.executeQuery("INSERT INTO temp(account, user, password) VALUES('" + account + "','" + username + "','" + password + "')"); //以上的三個變數都為字串
以上有個替代方法就是利用 java.sql.PreparedStatement
可以很簡單的表示成以下


String sql = "INSERT INTO temp(account, user, password) VALUES(?, ? ,?)";
PreparedStatement prestate =  connection.prepareStatement(sql); //先建立一個 SQL 語句並回傳一個 PreparedStatement 物件
prestate.setString(1, account); //對應到第一個問號
prestate.setString(2, user); //對應到第二個問號

2010年11月15日 星期一

JSP 教學 - JavaMail 電子郵件處理

我們可以透過 JavaMail API 來進行電子郵件的處理,首先必須先去下載 JavaMail 套件

可以到 http://www.oracle.com/technetwork/java/javamail-1-4-2-141075.html

下載最新的 JavaMail 1.4.2 API ,可以選擇下載壓縮檔,下載完成並解壓縮後

我們需要的是 mail.jar 即可,如果需要處理附加檔案的話則還要另外下載

JavaBeans Activation FrameworkJAF來配合 JavaMail
接下來介紹一下 JavaMail 的用途,在寫 JSP 的登入的時候如果使用者忘記密碼


那就是用到 JavaMail 的時候了,我以 NetBeans 為例實現寄送電子郵件的功能


首先將剛剛下載的 mail.jar 匯入到 project 中,在側邊欄的 Liberaries 點擊右鍵 > Add Library

接下來可以在一個 Servlet 中進行郵件處理,在這之前可能需要先讓使用者

2010年11月13日 星期六

JSP 教學 - 圖文驗証碼製作

概述:在登入或是註冊的時候加上驗證碼,可以防止有心人批量的註冊或登入或是到取別人的
帳密。

圖形驗證碼的製作以 Java 2D 為基礎,透過 Servlet 動態產生驗證碼

這邊作法有兩種,一種是已經事先產生好大量的驗證碼再去隨機取一張,另一種是如上述的方法

動態產生一張圖形驗證碼,這樣是比較安全的狀況,如果把驗證的圖放在某目錄下又沒加以保護

很容易讓人直接以URL取得你的所有圖檔,

以 Xuite 為例就是如此,在我這製作專題的過程中就是碰到類似問題幸好.....Xuite 不是動態產生,不然專題早掛摟....

首先先配置一個 Servlet 吧,以下為 SignalPage.java