IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Servlet连接数据库实现用户登录功能 -> 正文阅读

[大数据]Servlet连接数据库实现用户登录功能

做一个小案例顺便复习一下jdbc的知识

一、需求:

用户在浏览器输入用户名和密码,如果数据库中有数据,提醒用户登录成功,如果没有数据,提醒用户重新登录

二、先复习一下JDBC,今天用的时候有些细节忘了,知识还是需要多次复习啊,并不是说学过就是自己的。

1.概述:

用java程序操作数据库的一个技术,是java程序连接数据库的一套标准,本质上就是一堆API。

2.开发步骤:

2.1.导jar包:

对于java项目,直接将jar包复制到项目然后解析jar(add as library)就可以用了;对于web项目,需要将jar包放到tomcat的lib目c录下,在web项目中,当Class.forName(“com.mysql.jdbc.Driver”);时idea是不会去查找字符串,不会去查找驱动的。所以只需要把mysql-connector-java-5.1.7-bin.jar拷贝到tomcat下lib目录就可以了。今天这里出了问题,找到这种解决方案。

2.2.步骤:具体步骤都在代码里

注册驱动—>

Class.forName(“com.mysql.jdbc.Driver”);

获取连接—>

String url = “协议://IP地址:端口号/数据库的名字/”;
String url = “jdbc:mysql://localhost:3306/person”;
Connection c = DriverManager.getConnection(url, “root”, “root”);

写sql语句—>

String sql = "select * from user where name = and pwd = ";

获取传输器—>

PreparedStatement preparedStatement = connection.prepareStatement(sql);

设置值—>

preparedStatement.setObject(1,username);
preparedStatement.setObject(2,pwd);

获取结果集—>

ResultSet resultSet = preparedStatement.executeQuery();

解析结果集—>

resultSet.next()

三、代码实现:

1.登录界面代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户登录界面</title>
</head>
<body>
<h3 style="text-align: center">用户登录</h3>
 <form action="userLogin" method="post" style="text-align: center" >
     用户名:<input type="text" name="username"><br/>
     <br/>
     密&nbsp;&nbsp;&nbsp;&nbsp;码:<input type="password" name="pwd"><br/>
     <br>
     <input type="submit" value="提交">
 </form>
</body>
</html>

2.登录成功界面:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>成功登录界面</title>
</head>
<body>
<h1> 恭喜登录成功!!!</h1>
</body>
</html>

3.servlet代码:

package cn.tedu;

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(urlPatterns = "/userLogin")
public class ServletLogin extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.解决中文乱码
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset = utf-8");
        //2.获取用户输入的名字和密码
        String username = request.getParameter("username");
        String pwd = request.getParameter("pwd");
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        //3.连接数据库
        try {
            //3.1注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //3.2获取连接
            String url = "jdbc:mysql://localhost:3306/person";
            connection = DriverManager.getConnection(url,"root","root");
            //3.3写sql
            String sql = "select * from user where name = ? and pwd = ?";
            //3.4获取传输器
            preparedStatement = connection.prepareStatement(sql);
            //3.5设置值
            preparedStatement.setObject(1,username);
            preparedStatement.setObject(2,pwd);
            //3.6返回结果集
            resultSet = preparedStatement.executeQuery();
            if (resultSet.next()){
                //重定位,如果结果返回true,"跳转"到success.html
                response.sendRedirect("success.html");
            }else{
                String urls = "login.html";
                response.getWriter().write("用户不存在"+""+"<a href = '"+urls+"'>点击重新登录</a>");
            }

        } catch (Exception e) {
            e.printStackTrace();
            //3.6关闭资源
        }finally {
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                preparedStatement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

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

    }
}

4.数据库数据

5.登录成功页面:

6.登录失败界面:

7.登录界面:

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-16 21:45:45  更:2022-06-16 21:47:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 22:27:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码