Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

06-02 414178阅读

Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

  • 前言
  • 第一步:加入驱动包与Maven
  • 第二步、创建并导入web库
  • 第三步、连接本地数据库的java代码
    • 核心代码讲解
    • 第四步、创建数据库
    • 第五步、导入并修改JSP登录文件

      前言

      • 在之前的博客中,我们详细探讨了 JSTL 中 SQL 标签库和自定义标签库的基础用法,并展示了如何利用这些标签库实现 MySQL 数据库连接以及数据分页展示功能。
      • 本文将继续深入,介绍如何基于 MySQL 数据库实现用户登录验证功能,包括登录界面设计、用户身份验证以及登录成功 / 失败后的页面跳转处理。

        我的个人主页,欢迎来阅读我的其他文章

        https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343

        我的JSP知识文章专栏

        欢迎来阅读指出不足

        https://blog.csdn.net/2402_83322742/category_12950980.html?spm=1001.2014.3001.5482


        题目要求

        • 利用MySQL+JSP+JDBC内容,完成前后端连接,实现基于MySQL数据库验证的登录界面与登录跳转功能
        • 当用户输入数据库里面的用户名和密码时,才可进行跳转

          Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

          下面我们来实际操作一下

          第一步:加入驱动包与Maven

          • 首先我们按照之前的那样加入jsp,jdbc的驱动包来构建环境

            Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

                    
                        javax.servlet
                        javax.servlet-api
                        3.1.0
                        provided
                    
                    
                        javax.servlet.jsp
                        javax.servlet.jsp-api
                        2.3.3
                        provided
                    
                    
                        mysql
                        mysql-connector-java
                        8.0.33
                    
                    
                    
                        javax.servlet.jsp.jstl
                        jstl-api
                        1.2
                    
                    
                    
                        taglibs
                        standard
                        1.1.2
                    
                
            

            Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

            • 接着我们需要配置好自己的maven环境
            • maven环境必须是全英文,不然运行不了

              maven官方网站https://maven.apache.org/

              我的jsp环境搭建博客

              JSP技术入门指南【一】利用IDEA从零开始搭建你的第一个JSP系统

              https://blog.csdn.net/2402_83322742/article/details/146980845?spm=1001.2014.3001.5501

              Java-servlet-Web环境搭建(下)详细讲解利用maven和tomcat搭建Java-servlet环境

              https://blog.csdn.net/2402_83322742/article/details/145998804

              Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

              第二步、创建并导入web库

              • 我们新建了一个MySQLtest的模块,在里面单击右键,打开模板设置

                Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

              • 在MySQLtest里面添加web文件

                Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

                Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

              • 然后在工件里,找到web应用程序展开型,找到我们刚刚添加的MySQLweb文件

                Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

              • 在web-INF文件里创建一个lib文件,并导入我们的库文件

                Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

                Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

                第三步、连接本地数据库的java代码

                • 首先新建一个java类LoginServlet

                  Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

                  Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

                • 接着在java类里面添加以下代码

                  LoginServlet类

                  package org.example;
                  import java.io.IOException;
                  import java.io.Serial;
                  import java.sql.Connection;
                  import java.sql.DriverManager;
                  import java.sql.PreparedStatement;
                  import java.sql.ResultSet;
                  import java.sql.SQLException;
                  import javax.servlet.ServletException;
                  import javax.servlet.annotation.WebServlet;
                  import javax.servlet.http.HttpServlet;
                  import javax.servlet.http.HttpServletRequest;
                  import javax.servlet.http.HttpServletResponse;
                  @WebServlet("/LoginServlet")
                  public class LoginServlet extends HttpServlet {
                      @Serial
                      private static final long serialVersionUID = 1L;
                      protected void doPost(HttpServletRequest request, HttpServletResponse response)
                              throws ServletException, IOException {
                          String username = request.getParameter("username");
                          String password = request.getParameter("password");
                          // 数据库连接信息
                          String url = "jdbc:mysql://localhost:3306/2023se3";
                          String dbUsername = "root";
                          String dbPassword = "123456";
                          Connection conn = null;
                          PreparedStatement stmt = null;
                          ResultSet rs = null;
                          try {
                              // 加载数据库驱动
                              Class.forName("com.mysql.cj.jdbc.Driver");
                              // 建立数据库连接
                              conn = DriverManager.getConnection(url, dbUsername, dbPassword);
                              // 查询用户信息
                              String sql = "SELECT * FROM userspasswd WHERE username = ? AND password = ?";
                              stmt = conn.prepareStatement(sql);
                              stmt.setString(1, username);
                              stmt.setString(2, password);
                              rs = stmt.executeQuery();
                              if (rs.next()) {
                                  String displayName = rs.getString("username"); // 获取数据库中的显示名
                                  request.getSession().setAttribute("displayName", displayName); // 存入会话
                                  response.sendRedirect("index.jsp");
                              } else {
                                  // 登录失败,返回登录页并给出提示
                                  request.setAttribute("error", "用户名或密码错误");
                                  request.getRequestDispatcher("login.jsp").forward(request, response);
                              }
                          } catch (ClassNotFoundException | SQLException e) {
                              e.printStackTrace();
                              // 数据库连接或查询出错,返回登录页并给出提示
                              request.setAttribute("error", "数据库连接出错,请稍后再试");
                              request.getRequestDispatcher("login.jsp").forward(request, response);
                          } finally {
                              // 关闭数据库连接和资源
                              try {
                                  if (rs != null) rs.close();
                                  if (stmt != null) stmt.close();
                                  if (conn != null) conn.close();
                              } catch (SQLException e) {
                                  e.printStackTrace();
                              }
                          }
                      }
                  }
                      
                  

                  核心代码讲解

                  1. 数据库连接管理
                  // 加载数据库驱动
                  Class.forName("com.mysql.cj.jdbc.Driver");
                  // 建立数据库连接
                  conn = DriverManager.getConnection(url, dbUsername, dbPassword);
                  
                  • 使用JDBC连接MySQL数据库
                  • 数据库连接信息硬编码在Servlet中(不推荐,后续会讲原因)
                    1. SQL查询与防注入
                    String sql = "SELECT * FROM userspasswd WHERE username = ? AND password = ?";
                    stmt = conn.prepareStatement(sql);
                    stmt.setString(1, username);
                    stmt.setString(2, password);
                    
                    • 使用预编译语句(PreparedStatement)防止SQL注入
                    • 通过参数化查询提高安全性
                      1. 结果处理
                      if (rs.next()) {
                          String displayName = rs.getString("username");
                          request.getSession().setAttribute("displayName", displayName);
                          response.sendRedirect("index.jsp");
                      } else {
                          request.setAttribute("error", "用户名或密码错误");
                          request.getRequestDispatcher("login.jsp").forward(request, response);
                      }
                      
                      • 通过ResultSet判断是否查询到用户记录
                      • 使用Session存储用户信息
                      • 使用重定向和转发实现页面跳转
                        1. 资源管理
                        finally {
                            try {
                                if (rs != null) rs.close();
                                if (stmt != null) stmt.close();
                                if (conn != null) conn.close();
                            } catch (SQLException e) {
                                e.printStackTrace();
                            }
                        }
                        
                        • 在finally块中关闭数据库资源
                        • 按逆序关闭ResultSet、Statement和Connection

                          第四步、创建数据库

                          • 完成上面的代码之后,我们接着创建一个数据库,点击数据库按钮

                            Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

                          • 然后找到加号,点击数据源,找到MySQL

                            Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

                          • 在里面输入我们的密码和用户名

                            Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

                          • 找到部署架构,里面就有我们的数据库文件

                            Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

                            Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

                          • 连接数据库的代码名字要求与我们的数据库匹配一致,这里我连接了2023se3

                            Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

                            • 单击右键
                            • 在数据库里根据我们的HTML表格格式创建一张表
                            • 新建查询语句

                              Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

                              CREATE TABLE `userpasswd` (
                                  `username` VARCHAR(255) NOT NULL,
                                  `password` VARCHAR(255) NOT NULL,
                                  PRIMARY KEY (`username`)
                              ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
                              
                              • 然后加入数据
                                INSERT INTO `userpasswd` (username, password) VALUES
                                ('1', '123'),
                                ('root', '123456'),
                                

                                Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

                                第五步、导入并修改JSP登录文件

                                • 在web下,我们单击右键新建一个jsp文件,名字为login.jsp

                                  Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

                                  • 然后在里面加入我们的HTML文件
                                    
                                    
                                        
                                        
                                        
                                        
                                        
                                        Sphinx - Login
                                        
                                        
                                        
                                        
                                    
                                    
                                    

                                    Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

                                    • 修改HTML里面from表单文件,连接我们的LoginServlet类

                                      Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

                                       
                                      
                                       
                                      
                                      • 在HTML里面的input输入字段加入name="username"和name="password",这些数据会被提交到服务器

                                        Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

                                        Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

                                        • 将HTML文件提交按钮改为,点击后会将表单数据(用户名和密码)发送到LoginServlet进行处理

                                          Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

                                          Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

                                          最后运行项目

                                          Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

                                          我们的HTML文件就只有数据库里面的用户和密码才能进行登录跳转了


                                          以上就是这篇博客的全部内容,下一篇我们将继续探索JSP的更多精彩内容。

                                          我的个人主页,欢迎来阅读我的其他文章

                                          https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343

                                          我的JSP知识文章专栏

                                          欢迎来阅读指出不足

                                          https://blog.csdn.net/2402_83322742/category_12950980.html?spm=1001.2014.3001.5482

                                          非常感谢您的阅读,喜欢的话记得三连哦

                                          Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码