0. 环境准备

项目创建:

IDEA 创建 Servlet 项目详细步骤:https://www.jianshu.com/p/386a79d16e05

导入 MySQL 驱动包:

Java MySQL 连接:https://eslsuwen.github.io/2019/06/02/Java-MySQL/

1. 创建测试数据

接下来我们在 MySQL 中创建 usersdb 数据库,并创建 user 数据表,表结构如下:

1234
CREATE TABLE `user` (  `name` char(20) NOT NULL DEFAULT '' COMMENT 'name',  `password` char(10) NOT NULL DEFAULT '' COMMENT 'password') ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

插入一些数据:

12345
INSERT INTO `user`VALUES	( 'admin', 'admin' ),	( ' guest ', ' 123456 ' ),	( ' guest1 ', ' 123 ' );

2. 创建登录 jsp 文件

在 web 目录下创建 login.jsp :

1234567891011121314151617181920212223
<%@ page language="java" contentType="text/html; charset=UTF-8"         pageEncoding="UTF-8" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">    <title>登录</title></head><body><div class="login" style="text-align:center;">    <fieldset>        <legend>用户登录</legend>        <br/>        <form action="login" method="post" name="login">            用户名:<input type="text" name="username"/> <br/> <br/> 密&nbsp;码:<input                type="password" name="password"/> <br/> <br/> <input                type="submit" value="登录"/>        </form>    </fieldset></div>

</body></html>

3. 创建登录 servlet 处理登录请求

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
package login;

import database.JdbcOp;

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 javax.servlet.http.HttpSession;import java.io.IOException;import java.io.PrintWriter;import java.sql.ResultSet;

@WebServlet("/login")public class LoginServlet extends HttpServlet {    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        // 一般都会在doGet()方法中调用doPost()方法,或者在doPost()方法中调用doGet()方法        doPost(request, response);    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        // 设置编码格式,可以防止乱码出现        response.setContentType("text/html; charset=utf-8");        response.setCharacterEncoding("utf-8");        request.setCharacterEncoding("utf-8");        // 获取用户提交过来的用户名和密码,是通过表单中input的name属性获取的        String username = request.getParameter("username");        String password = request.getParameter("password");        String isSignUp = request.getParameter("isSignUp");        PrintWriter out = response.getWriter();        System.out.println(username + ": " + password + " isSignUp: " + isSignUp);        // 获取输出流,用户显示信息,也可以用转发或者重定向        PrintWriter pw = response.getWriter();

        try {            JdbcOp jdbc = new JdbcOp();            jdbc.open("usersdb");            ResultSet rs = jdbc.executeQuery("select * from users");

            while (rs.next()) {                String nm = rs.getString("name");                String pd = rs.getString("password");                System.out.println("username: " + nm + " password: " + pd);

                if (nm.equals(username) && pd.equals(password)) {                    HttpSession session = request.getSession();                    //将数据存储到session中                    session.setAttribute("isLogin", "true");                    session.setAttribute("username", username);

                    out.print("<script language='javascript'>alert('You login successful  ! 你已成功登录!out.print');window.location.href='test.jsp';</script>");                    out.flush();                    out.close();                }            }            jdbc.close();        } catch (Exception e) {            e.printStackTrace();        }        pw.write("login fail");        out.print("<script language='javascript'>alert('please login first 登陆信息输入有误!');window.location.href='login.jsp';</script>");        out.flush();        out.close();    }

}

4. 运行项目

输入正确的账号密码:

账号密码验证失败:

JavaWeb MySQL 实现登录验证的更多相关文章

  1. 练习:python 操作Mysql 实现登录验证 用户权限管理

    python 操作Mysql 实现登录验证 用户权限管理

  2. 3月9日(用 DBHelper 工具连接 mysql 数据库 实现登录验证)

    一. 用DBHelper 与mysql 连接 实现最简单的登录验证. (1)新建 web project ----->选择src导入 DBHelper 工具包-------->选择web  ...

  3. Spring 笔记 -06- 从 MySQL 建库到 登录验证数据库信息(maven)

    Spring 笔记 -06- 从 MySQL 建库到 登录验证数据库信息(maven) 本篇和 Spring 没有什么关系,只是学习 Spring,必备一些知识,所以放在这里了. 本篇内容: (1)M ...

  4. Android开发之登录验证

    最近在做一个小项目,项目开发中需要实现一个登录验证功能,具体的要求就是,在Android端输入用户名和密码,在服务器端验证MySQL数据库中是否有此用户,实现之前当然首要的是,如何使Android端的 ...

  5. MySQL 1045登录失败

    当你登录MySQL数据库出现:Error 1045错误时(如下图),就表明你输入的用户名或密码错误被拒绝访问了,最简单的解决方法就是将MySQL数据库卸载然后重装,但这样的缺点就是就以前的数据库中的信 ...

  6. Linux登录验证机制、SSH Bruteforce Login学习

    相关学习资料 http://files.cnblogs.com/LittleHann/linux%E4%B8%AD%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95%E8%AE% ...

  7. Filter登录验证过滤器(全局)

    通过Filter来定义一个登录验证过滤器,这是就不需要在每一个JSP页面添加判断用户合法性的代码了. 以下示例中包含了5个文件,一个是登录表单LoginForm.jsp,一个是登录判断页LoginCo ...

  8. linux下MySQL安装登录及操作

    linux下MySQL安装登录及操作 二.安装Mysql 1.下载MySQL的安装文件 安装MySQL需要下面两个文件: MySQL-server-4.0.16-0.i386.rpm MySQL-cl ...

  9. mysql配置的讲解 mysql的root密码重置 mysql的登录

    一,MySQL配置的讲解 port  默认mysql端口 socket  用于服务器端和客户端通信的套连接文字 skip-locking 取消文件系统的外部锁 key_buffer_size  索引缓 ...

随机推荐

  1. 最最常用的RAID

    若转载请于明显处标明出处:http://www.cnblogs.com/kelamoyujuzhen/p/8980696.html RAID stands for Redundant Array of ...

  2. C# Parellel.For 和 Parallel.ForEach

    简介:任务并行库(Task Parellel Library)是BCL的一个类库,极大的简化了并行编程. 使用任务并行库执行循环C#当中我们一般使用for和foreach执行循环,有时候我们呢的循环结 ...

  3. ndk学习之c++语言基础复习----面向对象编程

    关于面向对象编程对于一个java程序员那是再熟悉不过了,不过对于C++而言相对java还是有很多不同点的,所以全面复习一下. 类 C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程 ...

  4. java学习笔记13-重写与重载

    重写 重写是子类对父类允许访问的方法实现过程进行重新编写,返回值和参数都不能变. 重写方法不能抛出新的检查异常和比被重写方法更加宽泛的异常 访问权限不能比被重写方法低 声明为final的方法不能被重写 ...

  5. Java&Selenium根据实参启动相应浏览器

    Java&Selenium根据实参启动相应浏览器 /** * 定义函数initBrowser * @param browser:字符串参数chrome/ie/xx * @return 并返回驱 ...

  6. 【产品对比】Word开发工具Aspose.Words和Spire.Doc性能和优劣对比一览

    转:evget.com/article/2018/4/3/27885.html 概述:Microsoft Office Word是微软公司的一个文字处理器应用程序,作为办公软件必不可少的神器之一,Wo ...

  7. ubuntu 18.04 enp8s0更改网口名称为eth0

    尝试各种方法均不成功,后参考如下方法终于成功: 方法一:单纯改网卡名,重启后显示原网卡名. 如我的网卡名是enp8s0 >> ip link set enp8s0 down //关闭网卡 ...

  8. .NET Core 3全新来袭!DevExpress Winforms v19.2支持High DPI

    DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅.美观且易于使用的应用程序.无论是Office风格的界面,还是分析处理大批量的业务数据,DevExpr ...

  9. 洛谷P1144 最短路计数【堆优化dijkstra】

    题目:https://www.luogu.org/problemnew/show/P1144 题意:问1到各个节点的最短路有多少条. 思路:如果松弛的时候发现是相等的,说明可以经过该点的最短路径到达当 ...

  10. BZOJ 4013/Luogu P3240 [HNOI2015] 实验比较 (树形DP)

    题目传送门 分析 放一个dalao博客: xyz32768 的博客,看完再回来看本蒟蒻的口胡吧(其实嘛-不回来也行) 精髓是合并的方案数的计算,至于为什么是Ci−1j−1\large C_{i-1}^ ...