前面已經完成了登錄界面的設計,單擊確認按鈕可以獲取輸入的用戶名和密碼,下面來將演示實現真實的登錄(輸入值和數據庫的比對)
1、設計“登錄服務”
通常我們根據業務關系,對相應的操作人員提供對外的各種服務,下面創建一個管理員服務類AdminService
AdminService.java(定義服務,方法實現下面補充)
package com.demo.service;
/*
* 項目名稱:
*
* 文件名稱為:AdminService.java
* 文件創建人:daxiang
*
* @author daxiang
* @version
* @time 2018年6月13日 下午10:04:15
* @copyright daxiang
*/
public class AdminService {
/**
* 登錄服務
*
* @param id
* @param pwd
* @return 1、成功 2、用戶名錯誤 3、密碼錯誤
*/
public int login(String id, String pwd) {
return 0;
}
/**
* 修改密碼服務
*
* @param id
* @param pwd
* @param newpwd
* @return false 修改失敗 true 修改成功
*/
public boolean changePwd(String id, String pwd, String newpwd) {
return false;
}
}
2、為登錄服務提供數據庫查詢操作
在第一節中為管理員提供了兩種服務1、登錄 2、修改密碼,但並未實現具體過程,下面來完成登錄服務的具體過程。
要判斷用戶是否能成功登錄需要兩步
(1)根據輸入的用戶名查詢數據庫中是否有該用戶
(2)如存在該用戶則比對輸入的密碼是否和數據庫中存儲的密碼相同
新建一個Admin實體數據庫操作類,利用dbutil工具實現查詢
AdminDao.java
package com.demo.dao;
import java.sql.ResultSet;
import com.demo.model.Admin;
import com.demo.util.DbUtil;
/*
* 項目名稱:
*
* 文件名稱為:AdminDao.java
* 文件創建人:daxiang
*
* 修改記錄:
* 修改人 修改日期 備注
*
*
*
* @author daxiang
* @version
* @time 2018年6月13日 下午10:25:06
* @copyright daxiang
*/
public class AdminDao {
public Admin query(String username) throws Exception {
// 實例化操作類
DbUtil dbUtil = new DbUtil();
// 查詢語句,由於username是字符串,所以需要username='" + username+"'"這樣拼接
String sql = "select * from admin where username='" + username+"'";
// 執行查詢
ResultSet rs = dbUtil.query(sql);
// 創建null的admin對象
Admin admin = null;
// 判斷是否有結果,並循環
while (rs.next()) {
// new一個新對象賦值給admin
admin = new Admin();
// 給對象賦值
admin.setId(rs.getInt("id"));
admin.setUsername(rs.getString("username"));
admin.setPassword(rs.getString("password"));
}
// 返回查詢結果
return admin;
}
}
下面完善AdminService中的登錄服務
package com.demo.service;
import com.demo.dao.AdminDao;
import com.demo.model.Admin;
/*
* 項目名稱:
*
* 文件名稱為:AdminService.java
* 文件創建人:daxiang
*
* @author daxiang
* @version
* @time 2018年6月13日 下午10:04:15
* @copyright daxiang
*/
public class AdminService {
/**
* 登錄服務
*
* @param id
* @param pwd
* @return 1、成功 2、用戶名錯誤 3、密碼錯誤
* @throws Exception
*/
public int login(String username, String pwd) throws Exception {
// 新建admin數據庫操作對象
AdminDao adminDao = new AdminDao();
// 1、根據輸入的用戶名查詢數據庫中是否有該用戶
Admin admin = adminDao.query(username);
// 判斷查詢出的用戶是否存在
if (admin != null) {
//2、比對輸入的密碼是否和數據庫中存儲的密碼相同
if (admin.getPassword().equals(pwd)) {
// 返回成功的代碼
return 1;
}
// 返回密碼錯誤的代碼
return 3;
}
// 返回用戶名錯誤的代碼
return 2;
}
/**
* 修改密碼服務
*
* @param id
* @param pwd
* @param newpwd
* @return false 修改失敗 true 修改成功
*/
public boolean changePwd(String id, String pwd, String newpwd) {
return false;
}
}
修改LoginView中的處理
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
// 獲取管理員操作服務
AdminService adminService = new AdminService();
// 處理登錄
int i = adminService.login(textField.getText(), new String(
passwordField.getPassword()));
//顯示各種結果
switch (i) {
case 1:
JOptionPane.showMessageDialog(null, "登錄成功");
// 釋放屏幕資源
dispose();
// 打開主界面
new MainView();
break;
case 2:
JOptionPane.showMessageDialog(null, "用戶名錯誤!");
break;
case 3:
JOptionPane.showMessageDialog(null, "密碼錯誤!");
break;
default:
break;
}
} catch (Exception e1) {
e1.printStackTrace();
}
}
});
截圖
用戶名錯誤

密碼錯誤

登錄成功

