今天的目標是要完成登入驗證
這次要利用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寫入。