JavaWeb MySQL 实现登录验证
2024-09-06 10:46:16
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. 运行项目
输入正确的账号密码:
账号密码验证失败:
最新文章
- nrf51822裸机教程-PWM
- hdu 2051
- CSS3美化表单 移动端可用
- xcode Simulated Metrics xib设置小问题
- 最初的ajax案例
- 结合程序崩溃后的core文件分析bug
- -bash: yum: command not found
- shell脚本--操作MySQL数据库
- 题解-PKUWC2018 Slay the Spire
- ABAP 创建function model 返回参数为内表类型
- node API
- Vue笔记:使用 mock.js 模拟数据
- 洛谷 P1006 传纸条 多维DP
- visual stdio 工程 宏
- Netty核心概念(7)之Java线程池
- Chapter 1(数据结构绪论)
- ubuntu环境JDK安装(转至 http://hi.baidu.com/leo_lovato/item/31d1150d31a06d8002ce1bec)
- MATLAB中常用函数及语法
- CodeForces - 607B (记忆化搜索)
- 地下迷宫探索(dfs)
热门文章
- nmap中文帮助文档
- 利用setuptools发布Python程序到PyPI,为Python添砖加瓦
- Ubuntu系统---编译opencv程序的几种方式g++、Makefile、Cmake
- 单元测试框架之unittest(三)
- es相关
- MySQL-进阶7-子查询 - select后/where后/from后/ []where后/having后] / exists后面 的相关子查询
- MYSQL参数说明
- 你不知道的JavaScript LHS 和 RHS 查找
- 3.使用webpack配置文件webpack.confg.js配置打包文件的入口和出口
- PL/SQL老是自动断开问题处理