本文共 3908 字,大约阅读时间需要 13 分钟。
这里我们来做一个登陆练习,现在没有学习web开发,所以我们把网页的登录框,用一个类来表示,运行这个类的main方法,在控制台打印告诉用户输入用户名和密码。第二个类是执行登录的功能,这个类调用前面我们封装的DBUtils下得到连接和关闭全部资源的方法,然后根据用户名和密码去执行sql语句查询,如果查询的结果能返回是一个student对象,那么就打印这个学习的名字。如果查询没有结果,我们给出提示“用户名或者密码有误”。
1.相关代码和文件
2.类Login.java的代码
package com.anthony.login;import java.util.Scanner;public class Login { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入用户名:"); String user = scan.nextLine(); System.out.println("请输入密码:"); String pwd = scan.nextLine(); //调用DoLogin类的findUser方法 DoLogin dl = new DoLogin(); Student s = dl.findUser(user, pwd); //判断是否登录成功 if(s != null) { System.out.println("欢迎回来," + s.getName()); }else { System.out.println("用户名或密码错误!"); } }}
3.DoLogin.java的代码
package com.anthony.login;import java.sql.Connection;import java.sql.ResultSet;import java.sql.Statement;import com.anthony.utils.DBUtils;public class DoLogin { public Student findUser(String username, String password) { Connection conn = null; Statement stmt = null; ResultSet rs = null; Student s = null; try { conn = DBUtils.getConnection(); stmt = conn.createStatement(); String sql = "SELECT * FROM student WHERE Name='"+ username +"' AND pwd='"+ password +"'"; rs = stmt.executeQuery(sql); if(rs.next()) { s = new Student(); s.setName(rs.getString("Name")); s.setAge(rs.getInt("Age")); s.setGender(rs.getString("Gender")); s.setId(rs.getInt("ID")); s.setPassword(rs.getString("pwd")); } } catch (Exception e) { e.printStackTrace(); } return s; }}
4.DBUtils.java代码
package com.anthony.utils;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ResourceBundle;public class DBUtils { private static String classDriver; private static String url; private static String user; private static String password; static { // 用于加载properties文件 ResourceBundle rb = ResourceBundle.getBundle("dbinfo"); //注意这里不需要文件扩展名.properties classDriver = rb.getString("classDriver"); url = rb.getString("url"); user = rb.getString("user"); password = rb.getString("password"); try { Class.forName(classDriver); } catch (ClassNotFoundException e) { e.printStackTrace(); } } //得到连接的方法 public static Connection getConnection() throws Exception{ return DriverManager.getConnection(url, user, password); } //关闭资源方法 public static void close(Connection conn, Statement stmt, ResultSet rs) { if(rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } rs = null; //赶紧垃圾回收 } if(stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } stmt = null; } if(conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } conn = null; } }}
5.Student.java代码
package com.anthony.login;public class Student { private int Id; private String Name; private String Gender; private int Age; private String password; public Student() {} public int getId() { return Id; } public void setId(int id) { Id = id; } public String getName() { return Name; } public void setName(String name) { Name = name; } public String getGender() { return Gender; } public void setGender(String gender) { Gender = gender; } public int getAge() { return Age; } public void setAge(int age) { Age = age; } @Override public String toString() { return "Student [Id=" + Id + ", Name=" + Name + ", Gender=" + Gender + ", Age=" + Age + ", password=" + password + "]"; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
测试结果,下来一个正确用户名和密码登录
请输入用户名:Anthony请输入密码:123456欢迎回来,Anthony
再来一个错误密码登录
请输入用户名:Anthony请输入密码:123用户名或密码错误!
这个例子,作为一个测试工程师,可能更加需要去知道,大概登录的设计思路或者原理。有时候面试官为了考察你的测试思路清晰和考虑问题严谨。他可能会拿这个登录的例子去让你去写测试用例。如果你知道这段代码,然后结合你测试基本功,你先去思考一下,然后去回答,效果可能更好。
转载地址:http://buows.baihongyu.com/