JAVA學習筆記(五十三)- 經典三層架構執行個體,java學習筆記

來源:互聯網
上載者:User

JAVA學習筆記(五十三)- 經典三層架構執行個體,java學習筆記
UserDAO介面

/* * UserDAO介面 */public interface UserDAO {    //插入使用者    public void insert(User user);    //刪除使用者    public void delete(int id);    //更新使用者    public void update(User user);    //查詢所有使用者    public List<User> getAllUsers();    //根據使用者名稱或密碼查詢使用者    public boolean checkUser(User user);    //根據編號查詢使用者    public User getUserById(int id);}
UserDAOImpl實作類別
import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.List;/* * UserDAOImpl實作類別 */public class UserDAOImpl implements UserDAO{    Connection conn=null;    PreparedStatement pstmt=null;    ResultSet rs=null;    @Override    public void insert(User user) {        // TODO Auto-generated method stub    }    @Override    public void delete(int id) {        // TODO Auto-generated method stub    }    @Override    public void update(User user) {        // TODO Auto-generated method stub    }    @Override    public List<User> getAllUsers() {        // TODO Auto-generated method stub        return null;    }    @Override    public boolean checkUser(User user) {        boolean flag=false;        String sql="select * from user where username=? and password=?";        try {            conn=DBUtil.getConnection();            pstmt=conn.prepareStatement(sql);            pstmt.setString(1, user.getUsername());            pstmt.setString(2, user.getPassword());            rs=pstmt.executeQuery();            if(rs.next()){                flag=true;            }        } catch (SQLException e) {            e.printStackTrace();        }finally{            DBUtil.closeAll(rs, pstmt, conn);        }        return flag;    }    @Override    public User getUserById(int id) {        // TODO Auto-generated method stub        return null;    }}
UserService介面
/* * UserService介面 */public interface UserService {    //使用者註冊    public void register(User user);    //使用者登陸    public boolean login(User user);}
UserServiceImpl實作類別,調用DAO完成相應的功能
/* * UserServiceImpl實作類別,調用DAO完成相應的功能 */public class UserServiceImpl implements UserService {    //建立UserDAO執行個體    UserDAO ud=new UserDAOImpl();    @Override    public void register(User user) {        ud.insert(user);    }    @Override    public boolean login(User user) {        return ud.checkUser(user);    }}
資料庫工具類
import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;/* * 資料庫工具類 */public class DBUtil {    //擷取資料庫連接    public static Connection getConnection(){        Connection conn=null;        try {            Class.forName("com.mysql.jdbc.Driver");            conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");        } catch (ClassNotFoundException e) {            e.printStackTrace();        } catch (SQLException e) {            e.printStackTrace();        }        return conn;    }    //關閉所有資源     public static void closeAll(ResultSet rs,Statement stmt,Connection conn){        try {            if(rs!=null)                rs.close();            if(stmt!=null)                stmt.close();            if(conn!=null)                conn.close();        } catch (SQLException e) {            e.printStackTrace();        }    }}
登陸表單
/* * 登陸表單 */public class Login implements ActionListener {    //定義一個UserService執行個體    UserService us=new UserServiceImpl();    // 登陸表單組件    private JFrame frmLogin = new JFrame("登陸");    private JPanel[] pnls = new JPanel[4]; // 4行面板    private JLabel lblWelcome = new JLabel("歡迎使用小型超市管理系統!");    private JLabel lblUsername = new JLabel("使用者名稱:");    private JTextField txtUsername = new JTextField(20);    private JLabel lblPassword = new JLabel("密  碼:");    private JPasswordField txtPassword = new JPasswordField(20);    private JButton btnLogin = new JButton("登陸");    private JButton btnExit = new JButton("退出");    // 初始化組件    public Login() {        // 初始化4行面板,並添加到表單中        for (int i = 0; i < pnls.length; i++) {            pnls[i] = new JPanel();            pnls[i].setOpaque(false);// 設定面板透明            frmLogin.add(pnls[i]);// 將面板添加到組件中        }        // 初始化JLabel和文字框,並添載入面板中        lblWelcome.setFont(new Font("黑體", Font.BOLD, 20));        lblWelcome.setForeground(Color.red);        pnls[0].add(lblWelcome);        pnls[1].setLayout(new FlowLayout(FlowLayout.CENTER, 20, 0));        pnls[1].add(lblUsername);        pnls[1].add(txtUsername);        pnls[2].setLayout(new FlowLayout(FlowLayout.CENTER, 20, 0));        pnls[2].add(lblPassword);        pnls[2].add(txtPassword);        pnls[3].setLayout(new FlowLayout(FlowLayout.CENTER, 20, 0));        pnls[3].add(btnLogin);        pnls[3].add(btnExit);        // 添加監聽        btnLogin.addActionListener(this);        btnExit.addActionListener(this);        //設定表單背景圖片        ImageIcon iconBg=new ImageIcon("images/bg.jpg");        JLabel lblBg=new JLabel(iconBg);        lblBg.setSize(iconBg.getIconWidth(), iconBg.getIconHeight());        JLayeredPane layeredPane=frmLogin.getLayeredPane();        layeredPane.add(lblBg, new Integer(Integer.MIN_VALUE));        JPanel contentPane=(JPanel) frmLogin.getContentPane();        contentPane.setOpaque(false);        //初始化表單        frmLogin.setLayout(new GridLayout(4, 1));        frmLogin.setSize(400,300);        frmLogin.setResizable(false);        frmLogin.setLocationRelativeTo(null);        frmLogin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        frmLogin.setVisible(true);    }    @Override    public void actionPerformed(ActionEvent e) {        String cmd = e.getActionCommand(); // 擷取按鈕上的文字        if (cmd.equals("登陸")) {            String username=txtUsername.getText();            String password=new String(txtPassword.getPassword());            User user=new User(username,password);            if(us.login(user)){                frmLogin.dispose();//隱藏登陸表單                new JFrame().setVisible(true);            }else{                JOptionPane.showMessageDialog(frmLogin, "使用者名稱或密碼不正確!");            }        } else {            int choice=JOptionPane.showConfirmDialog(frmLogin, "確定要退出嗎?", "提示",                    JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);            if(choice==0){ //如果選擇是,則退出程式                System.exit(0);            }        }    }    public static void main(String[] args) {        new Login();    }}
資料庫設計
create table user(    id int primary key auto_increment,    username varchar(20) not null,    password varchar(20) not null);insert into user values (null,'admin','123');insert into user values (null,'tom','456');

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.