jdbc-实现用户登录业务(解决sql注入问题)
2021/11/19 2:11:45
本文主要是介绍jdbc-实现用户登录业务(解决sql注入问题),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
package com.cqust;
import java.sql.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
/**
- 解决sql注入问题使用预编译
- 在还没有拼接sql的时候,直接编译
- 需要传值的位置使用?
- 使用PreparedStatement 效率比较高,sql一次编译可以执行n次,Statement是编译一次执行一次
- 多数时候使用PreparedStatement,如果要求使用sql注入,或者字符串拼接则使用Statement
- PreparedStatement statement = connection.prepareStatement(sql);
-
statement.setString(1,username);传值这里传值会做类型检查比较安全
-
statement.setString(2,userpwd);传值
-
1,2分别指的是第一个,第二个?
- statement.executeQuery();这里执行的时候不需要传sql了
*/
public class JDBCTest06 {
public static void main(String[] args) throws Exception {
//初始化界面,返回用户输入的信息,使用map集合存储
Map<String,String> userInfo = initLogin();
//登录方法,返回值是布尔类型
Boolean loginInfo = login(userInfo);
System.out.println(loginInfo ? "登录成功":"登录失败");
} /** * 用户登录界面 * @return 返回用户的信息,存在集合中 */ public static Map<String,String> initLogin(){ Map<String,String> userInfo = new HashMap<>(); System.out.print("请输入你的用户名:"); Scanner scanner = new Scanner(System.in); String username = scanner.next(); System.out.print("请输入你的密码:"); String userpwd = scanner.next(); userInfo.put("username",username); userInfo.put("userpwd",userpwd); return userInfo; } /** * 使用jdbc技术完成登录检测 * @param map 用户的信息存储在集合map中 * @return 最后返回登录成功还是失败 * @throws Exception 这里为了省点劲直接throws */ public static boolean login(Map<String,String> map) throws Exception{ String username = map.get("username"); String userpwd = map.get("userpwd"); boolean loginInfo = false; //1.注册驱动 Class.forName("com.mysql.jdbc.Driver"); //2.获取连接 Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/cqust_db", "root","hch1"); //3.获取数据库操作对象,预编译sql String sql = "select username,userpwd from t_user_login where username = ? and userpwd = ?"; PreparedStatement statement = connection.prepareStatement(sql); statement.setString(1,username); statement.setString(2,userpwd); //4.执行sql //String sql = "select username,userpwd from t_user_login where username = '"+username+"' and userpwd = '"+userpwd+"'"; ResultSet resultSet = statement.executeQuery(); //5.这里只需要看是否有数据,如果查询到数据,则登录成功,直接loginInfo = true; if (resultSet.next()){ loginInfo = true; } //6.关闭资源 if (resultSet!=null){ resultSet.close(); } if (statement!=null){ statement.close(); } if (connection!=null){ connection.close(); } return loginInfo; }
}
这篇关于jdbc-实现用户登录业务(解决sql注入问题)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-03微信支付提示下单账户与支付账户不一致-icode9专业技术文章分享
- 2024-07-03微信支付提示订单号重复-icode9专业技术文章分享
- 2024-07-02微服务启动nacos注册上去了,但是一直没有收到请求-icode9专业技术文章分享
- 2024-07-02如何检查文件的编码格式-icode9专业技术文章分享
- 2024-07-02sublime 更改编码格式-icode9专业技术文章分享
- 2024-06-30uniAPP 实现全屏左右滚动滚动的效果-icode9专业技术文章分享
- 2024-06-30如何在本地使用授权或插件-icode9专业技术文章分享
- 2024-06-30伪静态规则配置方法汇总-icode9专业技术文章分享
- 2024-06-29易优CMS安装常见问题汇总-icode9专业技术文章分享
- 2024-06-28易优新手必读安装教程-icode9专业技术文章分享