iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 14
0

今天的目標是要完成登入驗證

這次要利用ajax來完成驗證的功能,二話不多說立馬先上ajax的code。
先介紹ajax幾個重要的設定
1.url:設定接值頁面。
2.dataType:回傳類型(json,text)。
3.data:傳送值(名稱:值)。
4.error:發生錯誤時,會進入這個function。
5.success:資料處理完成後,會進入這個function。

再來說明一下處理流程,首先會把data的值傳送到checkLogin.jsp的頁面,這個頁面是負責接收傳送端的值以及判斷帳號密碼是否正確,最後會把結果回傳到success的function。

$.ajax({
    url: "./checkLogin.jsp",
    cache: false,
    async: false,
    dataType: 'text',
    type:'POST',
    data:{
        account : $("#account").val(),
        password : $("#password").val()
    },
    error: function(xhr) {
        alert('Ajax request 發生錯誤');
    },
    success: function(data) {
        if(data == "F") {
            alert("帳號密碼錯誤,請重新輸入");
        } else {
            alert("驗證成功,即將登入首頁");
        }
    }
});

現在來說明一下checkLogin.jsp頁面的處理

這邊用分段來講解,已經解釋過的就不會再出現

1.帳號密碼接值的部分,做了一點簡單的判斷,目的是不要有null出現
2.宣告了一個check,是為了最後回傳給登入頁面的結果。

String account = request.getParameter("account")!=null?request.getParameter("account"):"";
String password = request.getParameter("password")!=null?request.getParameter("password"):"";
String check = "F";

這個是搜尋的SQL語法,之前講的insert是負責新增資料到資料表裡,而這個select則是負責把資料撈出來,這樣方便我們做比對,確認帳號密碼是否一致。

String sql = " select * from account "
			 + " where account = '"+account+"' "
			 + " and password = '"+password+"' ";
rs = st.executeQuery(sql);

搜尋完畢後,我們要利用rs.next()確認是否有值,當有值就可以把check的狀態改變。

if(rs.next()) {
    check = "T";
}

最後是回傳到登入頁面,這樣登入頁面就會接收到check的值,知道帳號密碼是否正確。

response.getWriter().write(check);
response.getWriter().flush();
response.getWriter().close();

今天驗證就到這邊結束,明天要來講登入前的session寫入。


上一篇
Day13:登入功能(二)
下一篇
Day15:登入功能(四)
系列文
Java Web三十天學習歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言