zoukankan      html  css  js  c++  java
  • Java课程设计---实现登录(2)

      前面已经完成了登录界面的设计,单击确认按钮可以获取输入的用户名和密码,下面来将演示实现真实的登录(输入值和数据库的比对)

    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();
    				}
    			}
    		});

    截图

      用户名错误

      密码错误

       

      登录成功

      

  • 相关阅读:
    HDU 2276
    HDU 2254
    HDU 1536 & 1944
    HDU 1538
    HDU 2177
    HDU 2176
    HDU 1209
    HDU 1254
    c++ 11 default delete
    ssh免密登录
  • 原文地址:https://www.cnblogs.com/daxiang2008/p/9172277.html
Copyright © 2011-2022 走看看