JAVA学习笔记(五十三)- 经典三层架构实例
2015-04-05 09:12
369 查看
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');
相关文章推荐
- JAVA学习笔记(十四)-经典多态实例
- [学习笔记]Java代码构建一个线程池的自己学习写的实例,用这个你会更好的理解文章内容
- (Java2D 学习笔记系列) (一)一个简单的图像填充实例及其分析理解
- Java新手学习笔记——Java实战经典(李兴华)第三部分概述
- Java学习笔记(必看经典)(已作标记,红色部分为重点)
- [学习笔记]jsp+javaBean+Servlet 的设计模式MVC 的实例
- JAVA新手学习笔记——java实战经典(李兴华)第一部分
- Java菜鸟学习笔记--语法篇(五):位运算实例
- JAVA新手学习笔记——Java实战经典(李兴华)第二部分C
- java 从零开始,学习笔记之基础入门<线程及实例分析>(十九)
- java 数字证书信息的获取实例-java学习笔记(2)
- 黑马程序员 java学习笔记4-Io流学习后可能会用到的实例
- Java菜鸟学习笔记--面向对象篇(十):有爱的打印机实例
- (源码实例)通过层DIV实现,当鼠标放在链接上面,显示图片及文字 - 流星絮语 JAVA学习笔记 - CSDNBlog
- java SSL安全socket的通讯实例-java学习笔记(4)
- 转 java学习笔记(必看经典)
- Java学习笔记(必看经典)
- Java菜鸟学习笔记--数组篇(二):数组实例&args实例
- JAVA多线程学习初步经典实例
- JAVA新手学习笔记——Java实战经典(李兴华)第二部分D