利用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;
    }
}
相关推荐
DBA小马哥19 小时前
达梦VS金仓:Oracle国产替代深度对比
数据库·oracle·kingbasees·金仓数据库
最贪吃的虎19 小时前
【分布式】分布式事务框架 Seata 详解:架构与四种实现模式
java·开发语言·数据库·分布式·后端·架构
·云扬·19 小时前
sysbench压测实战指南:从硬件到MySQL性能评估
数据库·mysql
AscendKing19 小时前
获取 MySQL 表中字段的最长长度
数据库·mysql
nuowenyadelunwen19 小时前
Harvard CS50 week 7 Notes
数据库
Mr. zhihao19 小时前
一次「varchar 时间字段」导致的 MySQL 索引选择问题实战分析
数据库·mysql
manuel_8975719 小时前
三 数据库系统
数据库·oracle
M--Y19 小时前
MySQL基础
数据库·mysql
leaf9z19 小时前
MySQL8配置mysqldump逻辑备份
mysql
忧郁蓝调2619 小时前
Redis单节点主从复制数据迁移
数据库·redis·缓存·云原生·中间件·云计算·paas