利用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;
    }
}
相关推荐
古德new6 分钟前
openFuyao多样化算力使能:技术实现原理与开发者集成指南
服务器·数据库·安全
惊鸿.Jh10 分钟前
高频SQL50题(基础版)解析(I)
数据库
sone1213811 分钟前
Oracle 12c实验3:实验步骤的SQL语句
数据库·sql·oracle
程序员卷卷狗33 分钟前
为什么MySQL默认使用可重复读RR?深入解析binlog与隔离级别的关系
数据库·mysql
此生只爱蛋36 分钟前
【Redis】String 字符串
java·数据库·redis
瀚高PG实验室37 分钟前
拼接符“II”在Oracle和HGDB中使用的差异
数据库·oracle·瀚高数据库
心态还需努力呀38 分钟前
当时序数据不再“只是时间”:金仓数据库如何在复杂场景中拉开与 InfluxDB 的差距
数据库
宇灬宇39 分钟前
oracle误drop表,通过回收站恢复
数据库·oracle
Albert Tan39 分钟前
Oracle EBS 12.2/12.1 开放本地或远程访问Weblogic
数据库·oracle
一个处女座的程序猿O(∩_∩)O41 分钟前
从InfluxDB到金仓:时序数据库性能拐点已至?
数据库·时序数据库