JavaWeb MySQL 实现登录验证
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/> 密 码:<input type="password" name="password"/> <br/> <br/> <input type="submit" value="登录"/> </form> </fieldset></div> </body></html> |
3. 创建登录 servlet 处理登录请求
- 登录成功跳转预设 jsp 文件
- 所使用 JDBC 操作类参考下文
Java MySQL 连接:https://eslsuwen.github.io/2019/06/02/Java-MySQL/
- 登录失败则跳回 login.jsp
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 实现登录验证的更多相关文章
- 练习:python 操作Mysql 实现登录验证 用户权限管理
python 操作Mysql 实现登录验证 用户权限管理
- 3月9日(用 DBHelper 工具连接 mysql 数据库 实现登录验证)
一. 用DBHelper 与mysql 连接 实现最简单的登录验证. (1)新建 web project ----->选择src导入 DBHelper 工具包-------->选择web ...
- Spring 笔记 -06- 从 MySQL 建库到 登录验证数据库信息(maven)
Spring 笔记 -06- 从 MySQL 建库到 登录验证数据库信息(maven) 本篇和 Spring 没有什么关系,只是学习 Spring,必备一些知识,所以放在这里了. 本篇内容: (1)M ...
- Android开发之登录验证
最近在做一个小项目,项目开发中需要实现一个登录验证功能,具体的要求就是,在Android端输入用户名和密码,在服务器端验证MySQL数据库中是否有此用户,实现之前当然首要的是,如何使Android端的 ...
- MySQL 1045登录失败
当你登录MySQL数据库出现:Error 1045错误时(如下图),就表明你输入的用户名或密码错误被拒绝访问了,最简单的解决方法就是将MySQL数据库卸载然后重装,但这样的缺点就是就以前的数据库中的信 ...
- 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% ...
- Filter登录验证过滤器(全局)
通过Filter来定义一个登录验证过滤器,这是就不需要在每一个JSP页面添加判断用户合法性的代码了. 以下示例中包含了5个文件,一个是登录表单LoginForm.jsp,一个是登录判断页LoginCo ...
- linux下MySQL安装登录及操作
linux下MySQL安装登录及操作 二.安装Mysql 1.下载MySQL的安装文件 安装MySQL需要下面两个文件: MySQL-server-4.0.16-0.i386.rpm MySQL-cl ...
- mysql配置的讲解 mysql的root密码重置 mysql的登录
一,MySQL配置的讲解 port 默认mysql端口 socket 用于服务器端和客户端通信的套连接文字 skip-locking 取消文件系统的外部锁 key_buffer_size 索引缓 ...
随机推荐
- linux cenos开放端口
问题:8080端口不能访问 解决方案: 第1步 查看阿里云端口是否开放 网络安全>安全组>配置规则>添加入方向 第二步 查看防火墙是否开启(只说开启了防火墙的情况) 查看防火墙状态: ...
- 1113 form表单与css选择器
目录 1.form表单 form元素 特点 参数 form元素内的控件 1.input的使用 2.select标签 3.textarea元素 4.autofocus属性 2.CSS 1.基础语法 cs ...
- WebRequest与WebResponse抽象类,DNS静态类、Ping类
一.概述 1.WebRequest: 对统一资源标识符 (URI) 发出请求. 这是一个 abstract 类. WebRequest的派生类:PackWebRequest.FileWebReques ...
- Excle导出优化(poi)
搜索词条 1.idea报java.lang.OutOfMemoryError: Java heap space怎么解决? 2.java.lang.OutOfMemoryError: GC overhe ...
- selenium怎样避免被服务器检测
selenium是用来完成浏览器自动化相关的操作.可以通过代码的形式制定一些基于浏览器自动化的相关操作(行为动作),当代码执行后,浏览器就会自动触发相关的事件.但这并不能避免服务器的检测.当在浏览器中 ...
- 洛谷P1341 无序字母对【欧拉路】【dfs】
题目:https://www.luogu.org/problemnew/show/P1341 题意:给定n对字母对,要求构造一个个数为n+1的字符串,使得每一个字母对都在里面出现过. 思路:这种题目都 ...
- C# 通过浏览器打开指定url
using System.Diagnostics; var resultsg = Process.Start(@"C:\Users\Administrator\AppData\Local\S ...
- 一个项目中:只能存在一个 WebMvcConfigurationSupport (添加swagger坑)
问题再现: 1.添加了swagger配置,导致接口响应的中文乱码 2.于是又添加了配置解决中文乱码的配置: 问题来了,添加了CharsetConfig 配置后swagger的配置失效了,访问404,搞 ...
- SP703 SERVICE - Mobile Service
思路:DP 提交:1次 题解: 我们把处理到的要求作为阶段. \(f[i][x][y][z]\)表示第 \(i\) 个要求,三个人分别的位置. 发现这样有很多无用状态,因为显然在第 \(i\) 个要求 ...
- click([[data],fn]) 触发每一个匹配元素的click事件。
click([[data],fn]) 概述 触发每一个匹配元素的click事件. 这个函数会调用执行绑定到click事件的所有函数.大理石平台精度等级 参数 fnFunctionV1.0 在每一个匹配 ...