jdbc登录与注册

 

package com.homework;

import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

import com.util.JDBCUtil;

import java.sql.Connection;

/*
 * */
public class Login2 {
    static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        welcome();
    }

    public static void welcome() {

        System.out.println("1  登录");
        System.out.println("2  注册");
        System.out.println("请选择:");
        String number = scanner.nextLine();
        switch (Integer.parseInt(number)) {
        case 1:
            login();
            break;
        case 2:
            register();
            break;
        default:
            System.out.println("输入有误!");
            welcome();
            break;
        }
    }

    public static void login() {
        System.out.println("*****用户登录*******");
        System.out.println("请输入用户名:");
        String username = scanner.nextLine();
        System.out.println("请输入密码:");
        String password = scanner.nextLine();
        Connection conn = null;
        PreparedStatement stat = null;
        ResultSet rs = null;
        try {
            conn = JDBCUtil.getConnect();
            String sql = "select * from t_user where username=? and password=?";
            stat = conn.prepareStatement(sql);
            stat.setString(1, username);
            stat.setString(2, password);
            rs = stat.executeQuery();
            // 创建表时指定了用户名唯一性约束
            if (rs.next()) {
                System.out.println("登录成功");
                int money = getMoney(username);
                System.out.println("你的账户余额是" + money + "元");
                while (true) {
                    loginWelcome(username);
                }
            } else {
                System.out.println("用户名或密码错误");
                login();
            }
        } catch (Exception e) {
            e.printStackTrace();

        } finally {
            try {
                JDBCUtil.closeConnect(rs, stat, conn);
            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    }

    private static void loginWelcome(String username) {
        System.out.println("1  修改密码");
        System.out.println("2  添加账户");
        System.out.println("3  查看账户余额");
        System.out.println("4  删除用户及账户");
        System.out.println("请选择:");
        String number = scanner.nextLine();
        switch (Integer.parseInt(number)) {
        case 1:
            updatePwd(username);
            break;
        case 2:
            addAccount2(getId(username));
            break;
        case 3:
            System.out.println("你的账户余额是" + getMoney(username)+ "元");
            break;
        case 4:
            deleteAccount(username);
            deleteUser(username);
            System.exit(0);
            break;
        default:
            System.out.println("输入有误!");
            loginWelcome(username);
            break;
        }
    }

    public static void register() {
        System.out.println("*****用户注册*******");
        System.out.println("请输入要注册的用户名:");
        String username = scanner.nextLine();
        System.out.println("请输入要注册的密码:");
        String password = scanner.nextLine();
        Connection conn = null;
        PreparedStatement stat = null;
        ResultSet rs = null;
        try {
            conn = JDBCUtil.getConnect();
            String sql = "insert into t_user(username,password) values(?,?)";
            stat = conn.prepareStatement(sql);
            stat.setString(1, username);
            stat.setString(2, password);
            int count = stat.executeUpdate();
            if(count>0) {
                System.out.println("注册成功!");
                addAccount(getId(username));
            }
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("注册失败,用户名已存在");
            register();
        } finally {
            try {
                JDBCUtil.closeConnect(rs, stat, conn);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    // 获取用户的id
    public static int getId(String username) {
        Connection conn = null;
        PreparedStatement stat = null;
        ResultSet rs = null;
        int id = 0;
        try {
            conn = JDBCUtil.getConnect();
            String sql = "select id from t_user where username=?";
            stat = conn.prepareStatement(sql);
            stat.setString(1, username);
            rs = stat.executeQuery();
            if (rs.next()) {
                id = rs.getInt("id");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            return id;
        }
    }

    // 添加账户余额
    public static void addAccount(int id) {
        Connection conn = null;
        PreparedStatement stat = null;
        ResultSet rs = null;
        try {
            conn = JDBCUtil.getConnect();
            String sql = "insert into t_account values(null,10000,?)";
            stat = conn.prepareStatement(sql);
            stat.setInt(1, id);
            int count = stat.executeUpdate();
            if(count>0) {
                System.out.println("添加账户余额成功!");
                login();
            }
            else {
                System.out.println("添加账户余额失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("添加账户余额失败");
        } finally {
            try {
                JDBCUtil.closeConnect(rs, stat, conn);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    // 添加账户余额
    public static void addAccount2(int id) {
        System.out.println("输入金额");
        int money = Integer.parseInt(scanner.nextLine());
        Connection conn = null;
        PreparedStatement stat = null;
        ResultSet rs = null;
        try {
            conn = JDBCUtil.getConnect();
            String sql = "insert into t_account values(null,?,?)";
            stat = conn.prepareStatement(sql);
            stat.setInt(1, money);
            stat.setInt(2, id);
            int count = stat.executeUpdate();
            if(count>0) {
                System.out.println("添加账户余额成功!");
            }
            else {
                System.out.println("添加账户余额失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                JDBCUtil.closeConnect(rs, stat, conn);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    // 查询总余额
    public static int getMoney(String username) {
        Connection conn = null;
        PreparedStatement stat = null;
        ResultSet rs = null;
        int id = getId(username);
        int money = 0;
        try {
            conn = JDBCUtil.getConnect();
            String sql = "select sum(money) from t_account where u_id=?";
            stat = conn.prepareStatement(sql);
            stat.setInt(1, id);
            rs = stat.executeQuery();
            if(rs.next()) {
                money= rs.getInt(1);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCUtil.closeConnect(rs, stat, conn);
            return money;
        }
    }

    // 修改密码
    public static void updatePwd(String username) {
        System.out.println("请输入旧密码");
        String oldpwd = scanner.nextLine();
        Connection conn = null;
        PreparedStatement stat = null;
        ResultSet rs = null;
        try {
            conn = JDBCUtil.getConnect();
            String sql = "select * from t_user where username=? and password=?";
            stat = conn.prepareStatement(sql);
            stat.setString(1, username);
            stat.setString(2, oldpwd);
            rs = stat.executeQuery();
            // 创建表时指定了用户名唯一性约束
            if (rs.next()) {
                JDBCUtil.closeConnect(rs, stat, conn);
                System.out.println("请输入新密码");
                String pwd = scanner.nextLine();
                Connection conn2 = null;
                PreparedStatement stat2 = null;
                ResultSet rs2 = null;
                try {
                    conn2 = JDBCUtil.getConnect();
                    String sql2 = "update t_user set password=? where username=?";
                    stat2 = conn2.prepareStatement(sql2);
                    stat2.setString(1, pwd);
                    stat2.setString(2, username);
                    int count2 = stat2.executeUpdate();
                    if(count2>0) {
                        System.out.println("密码修改成功!");
                    }
                    else {
                        System.out.println("密码修改失败");
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    try {
                        JDBCUtil.closeConnect(rs2, stat2, conn2);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            } else {
                System.out.println("密码错误");
            }
        } catch (Exception e) {
            e.printStackTrace();

        }

    }

    // 删除账户
    public static void deleteAccount(String username) {
        Connection conn = null;
        PreparedStatement stat = null;
        int id = getId(username);
        try {
            conn = JDBCUtil.getConnect();
            String sql = "delete from t_account where u_id=?";
            stat = conn.prepareStatement(sql);
            stat.setInt(1, id);
            int count=stat.executeUpdate();
            if(count>0) {
                System.out.println("删除账户成功!");
            }
            else {
                System.out.println("删除账户失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCUtil.closeConnect(null, stat, conn);
        }
    }

    // 删除用户
    public static void deleteUser(String username) {
        Connection conn = null;
        PreparedStatement stat = null;
        try {
            conn = JDBCUtil.getConnect();
            String sql = "delete from t_user where username=?";
            stat = conn.prepareStatement(sql);
            stat.setString(1, username);
            stat.executeUpdate();
            System.out.println("删除用户成功");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCUtil.closeConnect(null, stat, conn);
        }
    }
}

 

转载于:https://www.cnblogs.com/zys2019/p/11211578.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JDBCJava数据库连接的缩写,是Java语言中用于连接和操作数据库的API。Servlet是Java Web开发中的一种技术,用于处理HTTP请求和响应。JSP是Java Server Pages的缩写,是一种动态网页技术,可以将Java代码嵌入到HTML页面中。 在注册登录方面,可以使用JDBC连接数据库,将用户信息存储在数据库中。在Servlet中处理用户提交的注册登录请求,通过JDBC操作数据库进行验证和存储。在JSP中可以使用Java代码获取数据库中的用户信息,并根据用户的登录状态显示不同的页面内容。 ### 回答2: JDBCJava Database Connectivity)是一种用于在Java程序和数据库之间进行通信的API。在实现注册登录功能时,JDBC可以很好地帮助我们进行用户信息的存储和查询。 首先,我们需要在数据库中建立一张用户表,用于存储用户的信息,包括用户名和密码等。在Java程序中,我们可以使用JDBC连接数据库,并使用SQL语句增加、修改、删除和查询用户信息。 在Servlet中,我们可以编写处理HTTP请求的Servlet,并使用JDBC连接数据库,在用户注册时将新用户的信息插入到用户表中,而在用户登录时则使用JDBC进行查询,检查用户名和密码是否与数据库中的记录一致。 JSP(JavaServer Pages)则可以用来展示用户注册登录的界面。我们可以编写JSP页面,用于向用户展示注册登录表单,并将用户输入的信息传递给Servlet进行处理。同时,我们还可以使用JSP中的EL表达式和JSTL标签库来完成动态数据的显示和页面的渲染。 总之,JDBC、Servlet和JSP三种技术的结合可以帮助我们实现用户注册登录的功能。通过连接数据库和处理HTTP请求,我们可以便捷地存储和查询用户信息,而通过JSP的页面展示和渲染功能,我们可以让用户操作更加友好和美观。 ### 回答3: 在 Java Web 开发中,很多应用都需要用户注册登录的功能,以保护用户的隐私信息或实现个性化服务等。 其中,JDBC 是数据库连接工具,可以连接 Java 应用与数据库之间的桥梁,提供对数据的读写操作。而 JSP 和 Servlet 则是 Java web 应用的核心组件,分别负责页面展示和处理请求。 下面将以一个简单的用户注册登录功能为例,介绍 JSP、Servlet、JDBC 在Web 开发中的应用。 1. 用户注册 用户注册需要收集用户输入的信息,将其保存到数据库中。 首先,在 JSP 页面中,我们需要使用 HTML 表单元素来收集用户信息。 ```html <form method="post" action="register"> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> 邮箱:<input type="email" name="email"><br> <input type="submit" value="注册"> </form> ``` 当用户提交注册表单时,Servlet 将会处理请求,将收集到的用户信息存储到数据库中。在 Servlet 中,我们需要使用 JDBC 连接数据库并执行 SQL 语句。 ```java // 处理注册请求 @WebServlet("/register") public class RegisterServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 获取用户输入 String username = req.getParameter("username"); String password = req.getParameter("password"); String email = req.getParameter("email"); // 连接数据库 String url = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC"; String user = "root"; String passwd = "123456"; try (Connection conn = DriverManager.getConnection(url, user, passwd); PreparedStatement stmt = conn.prepareStatement("INSERT INTO user(username, password, email) VALUES (?, ?, ?)")) { // 执行 SQL 语句,插入用户信息到数据库 stmt.setString(1, username); stmt.setString(2, password); stmt.setString(3, email); stmt.executeUpdate(); // 返回注册成功提示页面 resp.sendRedirect("register_success.jsp"); } catch (SQLException e) { e.printStackTrace(); } } } ``` 2. 用户登录 用户登录需要验证用户输入的用户名和密码是否匹配,并在匹配成功时创建会话信息。 同样在 JSP 页面中,用户需要输入用户名和密码。 ```html <form method="post" action="login"> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> <input type="submit" value="登录"> </form> ``` 当用户提交登录表单时,Servlet 会对用户输入进行校验,验证用户信息是否匹配。同样需要使用 JDBC 连接数据库并执行 SQL 语句。 ```java // 处理登录请求 @WebServlet("/login") public class LoginServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 获取用户输入 String username = req.getParameter("username"); String password = req.getParameter("password"); // 连接数据库 String url = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC"; String user = "root"; String passwd = "123456"; try (Connection conn = DriverManager.getConnection(url, user, passwd); PreparedStatement stmt = conn.prepareStatement("SELECT * FROM user WHERE username = ?")) { // 执行 SQL 语句,查询用户信息 stmt.setString(1, username); ResultSet rs = stmt.executeQuery(); if (rs.next() && rs.getString("password").equals(password)) { // 验证成功,设置 Session 并跳转到主页 HttpSession session = req.getSession(); session.setAttribute("username", username); resp.sendRedirect("index.jsp"); } else { // 验证失败,返回登录页面 resp.sendRedirect("login.jsp"); } } catch (SQLException e) { e.printStackTrace(); } } } ``` 在主页中,我们可以通过会话信息获取当前用户并显示欢迎信息。 ```html <% HttpSession session = request.getSession(); String username = (String) session.getAttribute("username"); %> <p>欢迎 <%=username%> 登录</p> ``` 以上就是 JSP、Servlet、JDBC 在Web 开发中实现用户注册登录的简单应用。总之,这些工具都是很实用的 Web 开发工具,可以帮助我们实现更加完善的 Web 应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值