博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaWeb学习-JDBC系列-9-基于JDBC做一个登陆练习
阅读量:4302 次
发布时间:2019-05-27

本文共 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/

你可能感兴趣的文章
工作流中文乱码问题解决
查看>>
maven打包本地依赖包
查看>>
spring boot jpa 实现拦截器
查看>>
jenkins + maven+ gitlab 自动化部署
查看>>
Pull Request流程
查看>>
Lambda 表达式
查看>>
函数式数据处理(一)--流
查看>>
java 流使用
查看>>
java 用流收集数据
查看>>
java并行流
查看>>
CompletableFuture 组合式异步编程
查看>>
mysql查询某一个字段是否包含中文字符
查看>>
Java中equals和==的区别
查看>>
JVM内存管理及GC机制
查看>>
Java:按值传递还是按引用传递详细解说
查看>>
全面理解Java内存模型
查看>>
Java中Synchronized的用法
查看>>
阻塞队列
查看>>
linux的基础知识
查看>>
接口技术原理
查看>>