1、实体层:com.java.model;
创建一个model实体的包。首先创建一个用户的实体。
在model包下创建一个名为 user 类,封装了一些User的信息、get set方法以及构造方法:
package com.java.model;
public class User {
// 编号
private int id;
// 用户名
private String userName;
// 密码
private String passWord;
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(String userName, String passWord) {
super();
this.userName = userName;
this.passWord = passWord;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
}
2、数据访问层:com.java.dao;
我们先在数据库db_book里面新建一个t_user表,存储了登录界面的用户名和密码信息:
3、在数据访问层Dao里面新建用户的数据访问类UserDao,主要是登录验证的信息:
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import model.User;
/**
* 用户Dao类。登陆验证
* @author 123
*
*/
public class UserDao {
/**
* 登陆验证
* @param con
* @param user
* @return
* @throws Exception
*/
public User login(Connection con,User user) throws Exception{
//登陆正确,返回用户的所有实体信息
User resultUser = null;
//预处理
String sql = "select * from t_user where userName = ? and password = ?";
//获取PreparationsStatement接口
PreparedStatement pstmt = con.prepareStatement(sql);
// 设置未知量的值
pstmt.setString(1, user.getUserName());//user为界面传过来的数据
pstmt.setString(2, user.getPassword());//user为界面传过来的数据
//执行sql,返回的是一个结果集
ResultSet rs = pstmt.executeQuery();
//判断结果集是否有下一条记录如果查到,则对结果集进行实例化
if(rs.next()) {
//对用户进行实例化,取其中的set方法;
resultUser = new User();
//取第一行id这个属性的数据,将结果返回给User实体的信息
resultUser.setId(rs.getInt("id"));
//取第一行UserName这个属性的数据,将结果返回给User实体的信息
resultUser.setUserName(rs.getString("userName"));
// 取第一行PassWord这个属性的数据,将结果返回给User实体的信息
resultUser.setPassword(rs.getString("password"));
}
return resultUser;
}
}
3、视图层:com.java.view;
创建一个view(视图层)的包
(在视图层里面写登录的界面,这里要用到WindowBuilder这个插件)
右键view包,里面新建一个名设置为LogOnFrm类:右键点击view包->new->Other->WindowBuilder->Swing Designer->JFrame类;
接下来会自动生成代码,我们选择 Design ,对登录窗口进行设计
(1)
(2)
具体布局功能请参照:https://www.cnblogs.com/lukelook/p/11185418.html
(3)继续完成相关的设计
(4) 用户名需要重命名
(5)密码同样需要重命名
(5) 首先是重置按钮功能:
右键重置按钮->Add event handler->action->actionPerformed;
然后会在Source里面自动生成一个方法:
可以自动生成该方法对应的函数体:
在方法体里面,我们写上如下代码:
用文本自带的setText方法将框里面的内容设置为空!这样就可以了;
(6)登录功能按钮:
右键登录按钮->Add event handler->action->actionPerformed;
这里我们在actionPerformed()方法里面写一个loginActionPerformed(e)方法,
可以自动生成该方法对应的函数体:
首先要判断用户输入的用户名和密码是否为空:
当然,这里我们要写一个判断字符串是否为空的StringUtil工具类(写在com.java.util包里面):
package util;
/**
* 字符串工具类
* @author 123
*
*/
public class StringUtil {
/**
* 判断是否是空
* @param str
* @return
*/
public static boolean isEmpty(String str) {
//trim() 函数移除字符串两侧的空白字符或其他预定义字符。
if(str == null || "".equals(str.trim())) {
return true;
}else {
return false;
}
}
/**
* 判断是否不是空
*/
public static boolean isNotEmpty(String str) {
if(str != null && "".equals(str.trim())) {
return true;
}else {
return false;
}
}
}
(7)再连接一下数据库 :
然后ctrl + 鼠标左键 跳转进入方法;alt shift + s 可以生成构造方法
自动生成代码如下:
自动生成代码如下:
(8)连接一下数据库:
登陆成功,到这里登录界面就完成了!