Java实现登录注册

2023-05-16

Day one

一、JAVA常用快捷键

ctrl + shift + t

ctrl + shift + r

ctrl + alt + v

二、java web

网络上一切电子设备都可以叫终端,其中能提供服务的叫服务器

端口与监听器:相当古代的城门和士兵

1.tomcat:

bin 为运行文件-----------------------------------startup

webapp 放文件

服务器软件 (打开端口)

2.cpolar 内网穿透

把 cpolar.exe 放到c/windows/system32中去

windows:
链接用户:
cpolar authtoken NmI5NjIzYTQtYTZjZS00MTQzLTljMzEtY2VjMDg0YzEzYmE4

启动http通道
cpolar http 80
------------------------------------------------------------------------------------------------------------
Linux:
链接用户:
./cpolar authtoken NmI5NjIzYTQtYTZjZS00MTQzLTljMzEtY2VjMDg0YzEzYmE4

启动http通道(开启80端口)
./cpolar http 80

三、面向对象

1.面向对象和面向过程

面向过程:完事亲力亲为,过程要一步步的实现出来;

面向对象:调用对象本身具备的功能来实现;

2.类和对象

java中的类

/**
 * byte short int long float double
 * char boolen
 */

public class Person {
//成员变量
    String name;    //姓名
    int age;
    char sex;

//方法的定义
    /*吃饭*/
    public  void eat(){
    }

    /*睡觉*/
    public void sleep(){
    }

    /*玩游戏*/
    public void playGame(){
    }

}

Java中的对象

/*
        * 对象的创建语法
        * 类名 对象名、变量名 = new 类();
        *
        * */
public class Demo {

    public static void main(String[] args) {

        Person person = new Person();
        Person p1 = new Person();
        Person p2 = new Person();

        A a = new A();
    }

}

给属性赋值

/*
* 对象名.属性名 = 值
*/

        person.name = "胡磊";
        person.age = 21 ;
        person.sex ='男';

调用对象的方法

    /*
    * 对象名.方法名
    */
    
    System.out.println(person.name);
    System.out.println(person.age);
    System.out.println(person.sex);

综上代码:

运行文件(demo)/*
        * 对象的创建语法
        * 类名 对象名、变量名 = new 类();
        *
        * */
public class Demo {

    public static void main(String[] args) {

        Person person = new Person();
        Person p1 = new Person();
        Person p2 = new Person();

        A a = new A();

        person.name = "胡磊";
        person.age = 21 ;
        person.sex ='男';

        System.out.println(person.name);
        System.out.println(person.age);
        System.out.println(person.sex);

        person.eat();
        person.sleep();
        person.playGame();
    }

}

类文件(person):
    
/**
 * byte short int long float double
 * char boolen
 */

public class Person {

    String name;    //姓名
    int age;
    char sex;

    /*吃饭*/
    public  void eat(){
        System.out.println("别问了,在吃饭!");
    }

    /*睡觉*/
    public void sleep(){
        System.out.println("别看了,在睡觉!");
    }

    /*玩游戏*/
    public void playGame(){
        System.out.println("别骂了,在打游戏!");
    }
}

类中的方法

实例方法:
public void eat(){
    }

调用方法:

		new 对象();
		对象名.方法名
静态方法:
public static void say(){
	}

调用方法:

		类名.方法

案例1:

 /**
     *
     * 一个类A有两个成员变量v,num;v有一个初值100;
     *
     * 定义一个方法guess,对A类的成员变量v,用num 进行猜
     *
     * 如果大了则提示大了,小了则提示小了,等于则提示猜测成功
     *
     */

类文件(A:
public class A {
   
    int v =100;
    int num;

    public void guess(){
        if (num>v){
            System.out.println("大了");
        }
        else if(num<v){
            System.out.println("小了");
        }else{
            System.out.println("猜测成功");
        }
    }
}
    

案例2:

/*
* 创建一个圆Circle类。为该类提供一个变量R表示半径,一个常量PI表示圆周率
*
*同时为该类提供两个方法:方法一用于求圆的面积。方法二用于求圆的周长
*
* 为该类提供一个无参的构造方法,用于初始化r的值为4
*/

类文件(circle):
public class Circle {
    /*
    * 创建一个圆Circle类。为该类提供一个变量R表示半径,一个常量PI表示圆周率
    *
    *同时为该类提供两个方法:方法一用于求圆的面积。方法二用于求圆的周长
    *
    * 为该类提供一个无参的构造方法,用于初始化r的值为4
    */
    public static final double PI = 3.1415926 ;

    double r;

    public void area(){
        System.out.println(PI * r * r);
    }

    public void zc(){
        System.out.println(2 * PI * r);
    }
}

运行文件(main):
package test1;

public class demo {
    public static void main(String[] args) {
        Circle circle = new Circle();

        circle.r = 5;

        circle.area();
        circle.zc();
    }
}

3.构造方法:

初始化对象的属性

/*	public 类名(参数){
*		内容
*	}
*/
类文件(first):
package twoclass;

public class first {
   String name;
   int age;

   public first(String name,int age){
       this.name = name;
       this.age = age;
   }

}

主文件demo:
    package twoclass;

public class first {
   String name;
   int age;

   public first(String name,int age){
       this.name = name;
       this.age = age;
   }

}

Day two

1.servlet

小程序服务,让程序不是下载而是运行。

**idea 中集成 tomcat **

步骤:

右上角编译处选择 + --> tomcat --> local --> fix --> 修改路径

继承HttpServlet类:

import com.sun.net.httpserver.HttpsServer;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

//映射,可访问 网址 /demo
@WebServlet("/demo")
public class DemoServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //快捷键service
        System.out.println("hello web");
    }
}

步骤:

继承 HttpServlet -->  快捷键service --> 加入映射(   @webservlet("/路径")  )

2.servlet 写入浏览器

@WebServlet("/demo")
public class DemoServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("hello web");

        //向浏览器回写内容
        resp.getWriter().write("hello!!!!!");
    }
}

3.servlet处理登录表单:

在 service 类中 resp 表示回应内容

<--文件放在web文件夹下面-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>
    <form action="/login">
        <input name="name">
        <input name="psw">
        <input type="submit" value="登录">
    </form>
</body>
</html>
//文件放在src文件夹下面
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("succeed!!!");

        resp.getWriter().write("you win !");
    }
}

Day three

一、Mysql数据库

1.mysql 的安装

2.mysql 连接工具的安装

sqlyog

3.创建数据库和表

注意事项:字符集设置成UTF8

创建表: 跟excel中的表一样,必须要有id字段

#显示所有的数据库
show databases;

#使用某个数据库
use xxxx;

# 显示当前数据库下面的所有的表
show tables;

#帮助命令
help 命令

4.对数据库表的CRUD

增删改查

#插入数据
#insert into 表名(属性值,...) value(值 , ... )

#修改数据
#updae 表名 set 字段 = '值' where 字段 = '条件值'

#查询user表中的所有记录:
#select 列名(*) from 表名
SELECT * FROM goods WHERE NAME = '华为';

#删除记录
#delete from 表名 [where 条件]

问题:

char 与 varchar 的区别是什么?

答:

char  为定长类型

varchar  为变长长度

二、JDBC

JDBC是 Java 连接数据库的一套标准API。无论连接什么样的数据表库,都可以叫 JDBC

Java Database Connectivity ,简称 JDBC ;

1.java 导包方式:

(所有的java包都可以找到)

搜索 mysql maven ------------------------------找到需要的包

导包:两种方式
1.建立lib文件夹,把包拖入, add as library
2.右上角添加文件,+ 加入包。

2.jdbc步骤 :

1加载驱动类
​	就是找到包的路径,然后添加进去。
//		代码:	Class.forName("com.mysql.jdbc.Driver");

2建立连接 (无返回值)
//		代码:DriverManager.getConnection("url","user","password");

- url:    	表示要连接的数据库: jdbc:mysql://ip:port/数据库名称(mysql)
- user: 	数据库的用户名
- password:  数据库的密码

3.获取预处理对象  (有返回值)
sql相关的操作语句。

代码:
PreparedStatement preparedStatement = connection.prepareStatement( "sql语句"         中间的值用?来代替);

4.给参数赋值
给前面的问号赋值
代码:
preparedStatement。set类型(指代前面的 ? 的位置 ,给该问号赋的值 )

5.执行语句
//增删改用 execute() 方法,该方法没有返回值

代码部分:

JDBC 插入:

//JDBC 代码

// 1. 加载驱动
		Class.forName("com.mysql.jdbc.Driver");
		//ctrl shift r 找到 driver类,打开该类,选中类的名字,右键选择copy reference

//2建立连接
		DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql","root","root");

//3.获取预处理对象
        PreparedStatement preparedStatement = connection.prepareStatement("insert into goods
		(name,price,place,class,brand,date) " + "values (?,?,?,?,?,?)");
                                                                          
 //4.给参数赋值
        preparedStatement.setString(1,"华为荣耀");
        preparedStatement.setString(2,"320");
        preparedStatement.setString(3,"上海");
        preparedStatement.setString(4,"手机");
        preparedStatement.setString(5,"华为");
        preparedStatement.setString(6,"2021.3.1"); 

//5.执行语句
        //增删改时用 execute() 方法,该方法没有返回值
        preparedStatement.execute();                                           

JDBC 查询:

package com.day3.test;

import java.sql.*;

public class demo {

        public static void main(String[] args) throws ClassNotFoundException, SQLException {
            //JDBC 代码

            // 1. 加载驱动
            Class.forName("com.mysql.jdbc.Driver");

            //2.建立连接
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", "root", "root");//

            //3.获取预处理对象
            PreparedStatement preparedStatement = connection.prepareStatement("select * from goods where id = ?");

            //4.给参数赋值
            preparedStatement.setInt(1,1);

            //5.执行语句
            //增删改时用 execute() 方法,该方法没有返回值
            ResultSet resultSet = preparedStatement.executeQuery();

            while (resultSet.next()){
                //取得這一行的数据
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                String place = resultSet.getString("place");
                double price = resultSet.getDouble("price");
                String aClass = resultSet.getString("class");
                Date date = resultSet.getDate("date");

                System.out.println(id);
                System.out.println(name);
                System.out.println(place);
                System.out.println(price);
                System.out.println(aClass);
                System.out.println(date);
            }
        }
}

lib放到web inf下面

项目实战:

<!DOCTYPE html>
<html lang="ch">
<head>
    <meta charset="UTF-8">
    <title>注册</title>
    <style>
        table{
            margin: 0px auto;
        }
    </style>
</head>
<body>

<form action="/register">
    <table style="margin-top:5% ">
        <tr>
            <td>用户名:</td>
            <td><input name="username" type="text"></td>
        <tr/>

        <tr>
            <td>密码:</td>
            <td><input name="password" type="password"></td>
        </tr>
        <tr>
            <td>
                <input type="submit" value="注册">
            </td>
        </tr>
    </table>

</form>
</body>
</html>
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

@WebServlet("/register")
public class RegisterServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {


        String username = req.getParameter("username");
        String password = req.getParameter("password");

        try {
            //加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //建立连接
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo","root","root");

            //预处理
            PreparedStatement preparedStatement = connection.prepareStatement("insert into user (username,password) values (?,?)");

            //赋值
            preparedStatement.setString(1,username);
            preparedStatement.setString(2,password);

            preparedStatement.execute();



        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
}

Day four

一、封装函数

1.object对象

传参的时候 … ------>表示可变参数,即可传0个或多个

例如:

public execute(String sql	,	object... obj)	{
	内容
}

Java 中所有的类都继承了 object 类。

封装函数实例:

调用封装的函数:

String username = req.getParameter("username");
String password = req.getParameter("password");
execute("insert into user (username,password) values (?,?)",username,password);

封装上述步骤:

public void execute(String sql,Object... obj){
                try {
                    //加载驱动
                    Class.forName("com.mysql.jdbc.Driver");
                    //建立连接
                    Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo","root","root");
                    //预处理
                    PreparedStatement preparedStatement = connection.prepareStatement(sql);
                    //赋值
                    for(int i = 0 ; i < obj.length ; i ++){
                        preparedStatement.setObject(i+1,obj[i]);
                    }
                    //执行
                    preparedStatement.execute();

               } catch (ClassNotFoundException e) {
                 e.printStackTrace();
               } catch (SQLException e) {
                    e.printStackTrace();
               }
           }

综上代码:

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

@WebServlet("/register")
public class RegisterServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        String username = req.getParameter("username");
        String password = req.getParameter("password");
        execute("insert into user (username,password) values (?,?)",username,password);

    }
            public void execute(String sql,Object... obj){
                try {
                    //加载驱动
                    Class.forName("com.mysql.jdbc.Driver");
                    //建立连接
                    Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo","root","root");
                    //预处理
                    PreparedStatement preparedStatement = connection.prepareStatement(sql);
                    //赋值
                    for(int i = 0 ; i < obj.length ; i ++){
                        preparedStatement.setObject(i+1,obj[i]);
                    }
                    //执行
                    preparedStatement.execute();

                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                } catch (SQLException e) {
                    e.printStackTrace();
              }
      }
}

2. 注册判断

封装查询函数,如果查询后账号存在,则不允许注册,否则注册成功。

封装的函数:

public ResultSet executeQuery(String sql, Object... obj){
    try {
        //查的封装
        //加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        //建立连接
        Connection connection =               				 DriverManager.getConnection("jdbc:mysql://localhost:3306/demo","root","root");
        //预处理
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        //赋值
        
        //执行
        return preparedStatement.executeQuery();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return null;
}

总代码:

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.*;

@WebServlet("/register")
public class RegisterServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        String username = req.getParameter("username");
        String password = req.getParameter("password");
        ResultSet resultSet = executeQuery("select * from user where username = ?", username);
        try {
            if(resultSet.next()){
                resp.getWriter().write("user name has existed!");
            }else{
                resp.getWriter().write("register success!");
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void execute(String sql,Object... obj){
                try {
                    //增删改的封装
                    //加载驱动
                    Class.forName("com.mysql.jdbc.Driver");
                    //建立连接
                    Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo","root","root");
                    //预处理
                    PreparedStatement preparedStatement = connection.prepareStatement(sql);
                    //赋值
                    for(int i = 0 ; i < obj.length ; i ++){
                        preparedStatement.setObject(i+1,obj[i]);
                    }
                    //执行
                    preparedStatement.execute();
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
    public ResultSet executeQuery(String sql, Object... obj){
        try {
            //查的封装
            //加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //建立连接
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo","root","root");
            //预处理
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            //赋值
            for(int i = 0 ; i < obj.length ; i ++){
                preparedStatement.setObject(i+1,obj[i]);
            }
            //执行
            return preparedStatement.executeQuery();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
}

二、JSP

全称 java 服务器页面。动态网页技术标准。

JSP = HTML +Servlet

Servlet 可以写 HTML 代码。

为什么要把 html 改成 jsp 呢 ?

el 表达式:

${}

1.Servlet 高级 API

jsp文件:

<%-- Created by IntelliJ IDEA. --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>hhhhh</title>
  </head>

  <body>

  <form action="/register">
    <table style="margin-top:5% ">
      <tr>
        <td>用户名:</td>
        <td><input name="username" type="text"></td>
      <tr/>

      <tr>
        <td>密码:</td>
        <td><input name="password" type="password">${msg}</td>--------------------------------与 html 区别
      </tr>
      <tr>
        <td>
          <input type="submit" value="注册">
        </td>
      </tr>
    </table>
  </form>

  </body>

</html>

转发API:

//将数据放入request作用域(放入一个临时的包裹箱里)
req.setAttribute("msg"," 用户名已存在 ! ");

//转发
req.getRequestDispatcher("路径").forward(req,resp);

特征:

地址栏不会发生改变
只发起一次请求
在服务器就完成操作之后在返回浏览器
可以获得request的内容

说人话就是:这个刷新了之后就回到最开始的页面了

重定向API:

resp.sendRedirect("路径");
地址回发生改变
发起两次请求
从服务器先返回浏览器,在重新请求服务器完成操作
不能获得 request 的内容

这个刷新了不会返回到以前的页面

上述的路径均是从 web 目录开始算起

转发是操作的 request 对象

转发实例:

//转发
req.getRequestDispatcher("index.jsp").forward(req,resp);

重定向实例:

resp.sendRedirect("login.jsp");

问:什么时候用转发?什么时候用重定向?

答:看 request 作用域,request 只能作用域本次请求,因此如果想要在本次请求获得上次的结果则需使用转发,否则需要用重定向。

问:为什么每次打开页面都是显示的index文件

因为系统自动回去寻找index文件;可在 文件夹 web ---------> web-inf--------------->web.xml文件中进行修改。

welcome-file中就是默认文件路径,依次从上往下进行文件搜索。

例:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_4_0.xsd"
           version="4.0">
    <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
         <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>

项目总代码:

login.jsp:

<%-- Created by IntelliJ IDEA. --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>
</head>

<body>
<h1>登录</h1>
<form action="/register">
    <table style="margin-top:5% ">
        <tr>
            <td>用户名:</td>
            <td><input name="username" type="text"></td>
        <tr/>

        <tr>
            <td>密码:</td>
            <td><input name="password" type="password">${msg}</td>
        </tr>
        <tr>
            <td>
                <input type="submit" value="注册">
            </td>
            <td>
                <a href="index.jsp">注册</a>
            </td>
        </tr>

    </table>
</form>

</body>

</html>

index.jsp:

<%-- Created by IntelliJ IDEA. --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>hhhhh</title>
  </head>

  <body>

  <form action="/register">
    <table style="margin-top:5% ">
      <tr>
        <td>用户名:</td>
        <td><input name="username" type="text"></td>
      <tr/>

      <tr>
        <td>密码:</td>
        <td><input name="password" type="password">${msg}</td>
      </tr>
      <tr>
        <td>
          <input type="submit" value="注册">
        </td>
        <td><a href="login.jsp">去登陆</a></td>
      </tr>
    </table>
  </form>

  </body>

</html>

RegisterServlet :

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.*;

@WebServlet("/register")
public class RegisterServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        String username = req.getParameter("username");
        String password = req.getParameter("password");
        ResultSet resultSet = executeQuery("select * from user where username = ?", username);
        try {
            if(resultSet.next()){

                //将数据放入request作用域(放入一个临时的包裹箱里)
                req.setAttribute("msg"," 用户名已存在 ! ");

                //转发
                req.getRequestDispatcher("index.jsp").forward(req,resp);


            }else{
                execute("insert into user (username,password) values (?,?)",username,password);
                //重定向
                resp.sendRedirect("login.jsp");
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void execute(String sql,Object... obj){
                try {
                    //增删改的封装
                    //加载驱动
                    Class.forName("com.mysql.jdbc.Driver");
                    //建立连接
                    Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo","root","root");
                    //预处理
                    PreparedStatement preparedStatement = connection.prepareStatement(sql);
                    //赋值
                    for(int i = 0 ; i < obj.length ; i ++){
                        preparedStatement.setObject(i+1,obj[i]);
                    }
                    //执行
                    preparedStatement.execute();
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
    public ResultSet executeQuery(String sql, Object... obj){
        try {
            //查的封装
            //加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //建立连接
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo","root","root");
            //预处理
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            //赋值
            for(int i = 0 ; i < obj.length ; i ++){
                preparedStatement.setObject(i+1,obj[i]);
            }
            //执行
            return preparedStatement.executeQuery();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
}

实体类:

对所有的属性都要强制生成 get , set 方法(快捷键 alt + insert)

容器,用来装数据

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java实现登录注册 的相关文章

随机推荐