利用HttpServlet完成MySql数据库my_user表的登录校验

功能:利用HttpServlet完成MySql数据库my_user表的登录校验

step1:在porm.xml文件中导jdbc的依赖

mysql数据库输入

sql 复制代码
SELECT VERSION()

查询当前的数据库版本

maven官网网址;https://mvnrepository.com/

maven官网中搜索:mySQL

并复制依赖粘贴到pom文件中

main函数下java包的class类

java 复制代码
package com.iweb.demo03;

import org.apache.commons.codec.digest.DigestUtils;

import javax.servlet.RequestDispatcher;
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;
import java.util.List;
import java.util.Map;

@WebServlet(value = "/login")
public class Login extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html");

        PrintWriter pw = resp.getWriter();
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        password = DigestUtils.md5Hex(password);
        String sql = "select count(*) cou from my_user m " +
                "where m.username=? and m.password=?";
        List<Map<String, Object>> list = null;
        try {
            list = JDBCUtill.jdbcBySelect(sql, username, password);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
        Map<String, Object> map = list.get(0);
        long cou = (long) map.get("cou");
        String path="";
        if (cou > 0) {
            /* pw.print("欢迎您"+username);//页面跳转*/
            /* resp.sendRedirect("/demo03/test5.html");*/
        path=req.getContextPath() + "/test5.html";

            System.out.println("登录成功");
        } else {
          path=req.getContextPath()+"/login.html?islogin=0";
        }
        resp.sendRedirect(path);
    }
}

html文件 :

javascript 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户登陆</title>
    <script type="text/javascript">
        window.onload = function () {
            var urlParams = new URLSearchParams(window.location.search);
            var islogin = urlParams.get("islogin")
            if (islogin == 0) {
                alert("用户名或密码错误")
            }
        }
    </script>
</head>
<body>
<h3>用户登陆</h3>
<form method="post" action="login">

    账号<input type="text" name="username">
    <br/>
    <br/>
    密码<input type="text" name="password"/>
    <br/>
    <br/>
    <input type="submit" value="提交"/>
    <br/>
</form>
<br/>

</body>
</html>

附录:

JDBC文件:

java 复制代码
package com.iweb.demo03;//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class JDBCUtill {
    static Connection conn;
    static PreparedStatement pstat;
    static ResultSet rest;

    public JDBCUtill() {
    }

    private static void getSource() throws SQLException, ClassNotFoundException {
        Class.forName("com.mysql.cj.jdbc.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://192.168.77.100:3306/mysql?characterEncoding=utf-8", "root", "123456");
    }

    private static void closeSource() throws SQLException {
        if (rest != null) {
            rest.close();
        }

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

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

    }

    public static List<Map<String, Object>> jdbcBySelect(String sql) throws SQLException, ClassNotFoundException {
        List<Map<String, Object>> list = new ArrayList();
        getSource();
        pstat = conn.prepareStatement(sql);
        rest = pstat.executeQuery();
        ResultSetMetaData rsmd = rest.getMetaData();
        int columnCount = rsmd.getColumnCount();

        while(rest.next()) {
            Map<String, Object> map = new HashMap();

            for(int i = 1; i <= columnCount; ++i) {
                String columnName = rsmd.getColumnName(i);
                Object columnValue = rest.getObject(i);
                map.put(columnName, columnValue);
            }

            list.add(map);
        }

        closeSource();
        return list;
    }

    public static List<Map<String, Object>> jdbcBySelect(String sql, String username, String password) throws SQLException, ClassNotFoundException {
        List<Map<String, Object>> list = new ArrayList();
        getSource();
        pstat = conn.prepareStatement(sql);
        pstat.setString(1, username);
        pstat.setString(2, password);
        rest = pstat.executeQuery();
        ResultSetMetaData rsmd = rest.getMetaData();
        int columnCount = rsmd.getColumnCount();

        while(rest.next()) {
            Map<String, Object> map = new HashMap();

            for(int i = 1; i <= columnCount; ++i) {
                String columnName = rsmd.getColumnName(i);
                Object columnValue = rest.getObject(i);
                map.put(columnName, columnValue);
            }

            list.add(map);
        }

        closeSource();
        return list;
    }

    public static <E> int updateBySql(String sql, E... e) throws SQLException, ClassNotFoundException {
        getSource();
        int res=0 ;
        pstat = conn.prepareStatement(sql);

        for(int i = 0; i < e.length; ++i) {
            pstat.setObject(i + 1, e[i]);
        }

        res = pstat.executeUpdate();
        closeSource();
        return res;
    }
}
相关推荐
Mr.朱鹏1 小时前
Linux 服务器 LVM 根分区在线动态扩容
linux·服务器·数据库
摇滚侠1 小时前
《SpringBoot 3:入门与应用实战》第 12 章 JDBC 与事务 数据库初始化机制 阅读笔记 36
数据库·spring boot·笔记
qiuhaipeng11 小时前
Claude code 升级后上下文长度变短问题
java·前端·数据库
云贝贝贝2 小时前
腾讯云 TDSQL(MySQL 版)运维高频 6 坑:代理路由、读写分离、分片键、监控、PITR
运维·mysql·腾讯云
wxwx_bscxy3222 小时前
基于Python新冠疫情可视化分析系统的设计与实现
java·数据库·spring boot·python·微信小程序·sqlite
剑之所向3 小时前
.NET 官方`System.Threading.Channels`
前端·javascript·数据库
词却3 小时前
数据库基础:DQL 数据查询语言
数据库·oracle
昌原的儿子LEO5 小时前
Linux IO多路复用与SQLite数据库核心知识点总结
linux·数据库·oracle
山岚的运维笔记6 小时前
mysql 专业笔记 -- 第 8 章:使用变量
运维·数据库·笔记·后端·学习·mysql·dba
聚美智数6 小时前
网安查询-备案查询-网络安全查询API接口介绍
网络·数据库·web安全