jdbc-实现用户登录业务(存在sql注入)

package com.cqust;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

//模拟用户登录,验证成功还是失败
public class JDBCTest05 {
public static void main(String[] args) throws Exception {
//初始化界面,返回用户输入的信息,使用map集合存储
Map

}

/**
 * 用户登录界面
 * @return 返回用户的信息,存在集合中
 */
public static Map<string,string> initLogin(){
    Map<string,string> userInfo = new HashMap<>();
    System.out.print("&#x8BF7;&#x8F93;&#x5165;&#x4F60;&#x7684;&#x7528;&#x6237;&#x540D;:");
    Scanner scanner = new Scanner(System.in);
    String username =  scanner.next();
    System.out.print("&#x8BF7;&#x8F93;&#x5165;&#x4F60;&#x7684;&#x5BC6;&#x7801;:");
    String userpwd = scanner.next();
    userInfo.put("username",username);
    userInfo.put("userpwd",userpwd);

    return userInfo;
}

/**
 * &#x4F7F;&#x7528;jdbc&#x6280;&#x672F;&#x5B8C;&#x6210;&#x767B;&#x5F55;&#x68C0;&#x6D4B;
 * @param map &#x7528;&#x6237;&#x7684;&#x4FE1;&#x606F;&#x5B58;&#x50A8;&#x5728;&#x96C6;&#x5408;map&#x4E2D;
 * @return  &#x6700;&#x540E;&#x8FD4;&#x56DE;&#x767B;&#x5F55;&#x6210;&#x529F;&#x8FD8;&#x662F;&#x5931;&#x8D25;
 * @throws Exception &#x8FD9;&#x91CC;&#x4E3A;&#x4E86;&#x7701;&#x70B9;&#x52B2;&#x76F4;&#x63A5;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.&#x6CE8;&#x518C;&#x9A71;&#x52A8;
    Class.forName("com.mysql.jdbc.Driver");
    //2.&#x83B7;&#x53D6;&#x8FDE;&#x63A5;
    Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/cqust_db",
            "root","hch1");
    //3.&#x83B7;&#x53D6;&#x6570;&#x636E;&#x5E93;&#x64CD;&#x4F5C;&#x5BF9;&#x8C61;
    Statement statement = connection.createStatement();

    //4.&#x5199;sql&#xFF0C;&#x6267;&#x884C;sql
    String sql = "select username,userpwd from t_user_login where username = '"+username+"' and userpwd = '"+userpwd+"'";

    ResultSet resultSet = statement.executeQuery(sql);
    //5.&#x8FD9;&#x91CC;&#x53EA;&#x9700;&#x8981;&#x770B;&#x662F;&#x5426;&#x6709;&#x6570;&#x636E;&#xFF0C;&#x5982;&#x679C;&#x67E5;&#x8BE2;&#x5230;&#x6570;&#x636E;&#xFF0C;&#x5219;&#x767B;&#x5F55;&#x6210;&#x529F;&#xFF0C;&#x76F4;&#x63A5;loginInfo = true;
    if (resultSet.next()){
        loginInfo = true;

    }

    //6.&#x5173;&#x95ED;&#x8D44;&#x6E90;
    if (resultSet!=null){
        resultSet.close();
    }
    if (statement!=null){
        statement.close();
    }

    if (connection!=null){
        connection.close();
    }

    return loginInfo;
}
</string,string></string,string></string,string>

}

Original: https://www.cnblogs.com/journeyhch/p/15573926.html
Author: journeyhch
Title: jdbc-实现用户登录业务(存在sql注入)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/508024/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • How to code like a pro in 2022 and avoid If-Else

    高级开发人员如何编写代码: var input = "Dog"; var map = new Dictionary<string, string> …

    数据库 2023年6月11日
    071
  • Javaweb10-javaweb其他知识点

    1、详解DefaultServlet与JspServlet 当服务端收到关于 Servlet的请求之后交由 自定义Servlet处理。 当服务端收到关于 静态资源的请求时交由 De…

    数据库 2023年6月16日
    077
  • SQL中针对不规范数字order by排序的处理方式

    在操作数据库的时候经常需要order by进行排序,但是有的时候数据并没有很好的格式化导致排序的结果不合我们的心意,如下图: 如果我们要按照value进行排序的话,就会得到上面截图…

    数据库 2023年5月24日
    0109
  • Xshell连接Centos7无法输入密码

    使用命令vi /etc/ssh/sshd_config 修改文件 在最后一行找到 PasswordAuthentication 改成yes 重新运行 systemctl resta…

    数据库 2023年6月14日
    0100
  • 23种设计模式之模板模式

    文章目录 概述 模版模式的优缺点 * 优点 缺点 模版模式的使用场景 模板模式的结构和实现 * 模式结构 模式实现 总结 ; 概述 模板模式指:一个抽象类中,有一个主方法,再定义1…

    数据库 2023年6月6日
    0105
  • JavaWeb 07_创建web项目连接MySQL实现注册登录功能

    一、创建一个web项目,参照JW/01_创建web项目及部署 二、在NAVICat 里建数据库 db_01,建表tb_user ,字段UName 、Pwd 三、在web下创建一个D…

    数据库 2023年5月24日
    076
  • NO.2 Windows桌面图标-间距参数调整

    遇到如下问题: 桌面图标自动排序后间隔过大,且如图二这种指向图标能看到图标之间的间隔虚框,此方法可调整虚框的水平和垂直距离,即调整图标之间的间距。 测试电脑: 华为 mateboo…

    数据库 2023年6月14日
    0100
  • java XML标记语言

    可扩展标记语言( Extensive Markup Language),标签中的元素名是可以自己随意写,可拓展是相对于html来说 标记语言:由一对尖括号括起来 用来当做配置文件 …

    数据库 2023年6月16日
    079
  • 3 访问修饰符public,private,protected以及不写(默认)时的区别

    private 私有的,只对本类公开。 default 类的成员不写访问修饰符时默认为default,默认对于同一个包中的其它类相当于公开(public),对于不是同一个包中的其它…

    数据库 2023年6月6日
    094
  • B树-查找

    B树系列文章 1. B树-介绍 2. B树-查找 3. B树-插入 4. B树-删除 查找 假设有一棵3阶B树,如下图所示。 下面说明在该B树中查找 52的过程 首先,从根结点出发…

    数据库 2023年6月14日
    0139
  • Linux_连接工具_SecureCRT的使用教程

    什么是SecureCRT? SecureCRT是一款支持 SSH2、SSH1、Telnet、Telnet/SSH、Relogin、Serial、TAPI、RAW 等协议的终端仿真程…

    数据库 2023年6月11日
    0119
  • shutdown 关机与取消关机命令

    Windows 系统自带一个名为Shutdown.exe的程序,可以用于关机操作(位置在Windows\System32下) shutdown -a 取消关机 shutdown -…

    数据库 2023年6月11日
    086
  • MySQL45讲之表空间回收

    本文介绍了为什么在删除部分表数据后表文件的大小保持不变,以及如何回收表空间。 [En] This article describes why the size of the tab…

    数据库 2023年5月24日
    064
  • LeetCode 26. 删除有序数组中的重复项

    给你一个 升序排列 的数组nums,请你 原地 删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。 由于在某些语言中不能改变数组的长度,…

    数据库 2023年6月11日
    082
  • Redis进阶(一)

    通过简单的KV数据库理解Redis 分为访问模块,操作模块,索引模块,存储模块 底层数据结构 除了String类型,其他类型都是一个键对应一个集合,键值对的存储结构采用哈希表 哈希…

    数据库 2023年6月16日
    087
  • break&continue&return

    作用 1. 跳出整个循环体,进入循环下面的语句 2. 在多层嵌套循环中,break跳出内层循环 3. 可以使用带标签的break语句,跳出外层循环 编码 //break终止循环 p…

    数据库 2023年6月14日
    0104
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球