JDBC + servlet +mysql 做一个登入和注册界面

1.目录结构图:  

2.数据库

JDBCUtils     -------- 工具类 :加载驱动 和 释放资源 

LoginServlet  -------  登入界面 

RegisterServlet -------注册界面

User ----------------------用户类

UserDAO ----------------工具类写了 注册 和 登入的两种方法 

代码:

 JDBCUtils 类:

package com.test;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;

//JDBC工具类
public class JDBCUtils {
    //1.1 获取对象
     private static String url;
     private static String user;
     private static String password;
     private static String driver;
     
     static{

         try {
             url ="jdbc:mysql:///dbc?useUnicode=true&characterEncoding=utf8";
             user = "root";
             password = "123456";
             driver = "com.mysql.cj.jdbc.Driver";
             //  最新版本的加cj  com.mysql.cj.jdbc.Driver 如果不是最新的版本用 com.mysql.jdbc.Driver ;
             Class.forName(driver);
         } catch (ClassNotFoundException e) {
             e.printStackTrace();
         }
     }


    public static Connection getConnection() throws SQLException {
         // COnnection  conn =  DriverManager.getConnection(url,user,password);
          return DriverManager.getConnection(url,user,password);
    }


      public static void close(ResultSet rs,PreparedStatement stmt,Connection conn){
         try{

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

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

          try{

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

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

          try{
              if(conn != null){
                  conn.close();
              }
          }catch(SQLException e){
              e.printStackTrace();
          }

       }

       public static void close(PreparedStatement stmt,Connection conn){
           try{

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

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

           try{

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

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


}

USer类 :

package com.test;

//这个是连接库表 user 的封装

public class User {


    private Integer id;
    private String username;
    private String password;

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUserame() {
        return username;
    }
    public void  setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

}

UserDAO 类:

package com.test;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class UserDAO {
    //数据库连接对象
    public  User  login(String username,String password) {
        User user =null;
        Connection conn =null;
        PreparedStatement pstmt = null;
        ResultSet resultSet = null;

        //赋值
        try {
            conn=JDBCUtils.getConnection();

            //静态sql语句
            String sql = "select * from user where username=? and password=?";  // ?号是占位符
            pstmt = (PreparedStatement) conn.prepareStatement(sql);  //执行

            pstmt.setString(1, username);  //为sql语句中的第一个 ? 的值参数设置string的值username 从0开始算的
            pstmt.setString(2, password);  //为sql语句中的第二个 ? 的值参数设置string的值password 从0开始算的
            resultSet = pstmt.executeQuery();  //查询

            System.out.println(" resultSet " + resultSet );

            if(resultSet.next()){

                 user=new User();
               // String name = resultSet.getString("username");  //得到这个值,,,
               // String pass = resultSet.getString("password");
               // user.setUsername(name);      //获取 进去
               // user.setPassword(pass);  //获取 进去  等于下面的语句

                user.setUsername(resultSet.getString("username"));
                user.setPassword(resultSet.getString("password"));

                System.out.println("登录成功!");

            }else{

                System.out.println("用户名或者密码错误!");

            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCUtils.close( resultSet,pstmt,conn);  //
        }
        return user ;

    }
    public void addUser(User user) {  //添加的方法
        Connection connection = null;
        PreparedStatement psmt = null;
        try {
            connection = JDBCUtils.getConnection(); //连接数据库

            String sql  ="insert into user(id,username,password)values(?,?,?)";  //添加的语句

            psmt = (PreparedStatement) connection.prepareStatement(sql);

            //运用实体对象进行参数赋值
            psmt.setInt(1, user.getId());    //拿到设置User的封装
            psmt.setString(2,user.getUserame());
            psmt.setString(3,user.getPassword());

            int count  = psmt.executeUpdate();
            System.out.println("已经执行 "+count +" 语句");//统计执行的语句

        } catch (SQLException e) {

            e.printStackTrace();
        }finally {
            JDBCUtils.close(psmt, connection);  //关闭数据库
        }
    }
}

LoginServlet 类:

package com.test;


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("/LoginServlet")
public class LoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }


    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println(username + "  " + password );



        UserDAO userDAO=new UserDAO();   //初始化
        User user=userDAO.login(username, password);// 调用 userDAO的方法 里面的username 和 password 要与上面的一样
        System.out.println("user的存在是    " + user);

        if(user!=null){
            request.getRequestDispatcher("loginSuccess.jsp").forward(request, response); // 成功 : 请求转发到loginSuccess.jsp
        }else{
            request.getRequestDispatcher("loginFailed.jsp").forward(request, response);  // 失败 : 请求转发到 loginFailed.jsp
        }


    }
}

 RegisterServlet 类 

package com.test;


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


/**
 * Servlet implementation class RegisterServlet
 */
@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public RegisterServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPut(request, response);
    }


    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        request.setCharacterEncoding("utf-8");

        int id=Integer.valueOf(request.getParameter("id"));
        String username = request.getParameter("username");
        String password = request.getParameter("password");


        User user=new User();
        user.setId(id);  // 封装
        user.setUsername(username);  //获取不l 千万不要加 写成 “username” 用上面语句的
        user.setPassword(password);  //获取user的方法

        UserDAO userDAO=new UserDAO();

        userDAO.addUser(user); //  UserDAO 工具

        System.out.println("注册成功");

        //request.getRequestDispatcher("login.jsp").forward(request, response);
        PrintWriter out =response.getWriter();
        out.println("注册成功。。。。");
    }
}

WEB 资源 :

登入的jsp文件

 注册的 Register.jsp 文件

需要的驱动包 :

要 :驱动包可以联系我哦 

下面是一个查询表单的功能

  JDBCUtils  

 //查询所有数据
     public void  query(User_info account) throws SQLException , ClassNotFoundException {
        try{
            conn = JDBCUser3.getconnection();
            //定义语句
            String sql = "select *from user_info;";
            prepared = conn.prepareStatement(sql);
            //执行语句
            ResultSet rs = prepared.executeQuery();


            while(rs.next()){
                int id = rs.getInt("id");
                String  name = rs.getString("name");
                String  password = rs.getString("password");
                String email = rs.getString("email");
                String address = rs.getString("address");

                System.out.println(id +" " + name +" "+ password +" "+email + " " + address );

            }

        }catch(ClassNotFoundException e){
            System.out.println("查询 的 驱动加载异常。。");
            e.printStackTrace();

        }



     }

Query 类

package com.test3;

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.io.PrintWriter;
import java.sql.SQLException;



@WebServlet("/query")
public class Query extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {      request.setCharacterEncoding("utf-8");
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        response.setCharacterEncoding("utf-8");

        User_info account = new User_info();
        UserDAO3 dao3 = new UserDAO3();

        try {

            dao3.query(account);
            PrintWriter out =response.getWriter();
            out.println("查询成功。。。。");

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


    }
}

查询结果图

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值