servlet数据库验证登录
servlet数据库验证登录
一、将数据库连接和验证封装为一个单独的类
import java.sql.*;
public class SQLtest {
// JDBC 驱动名及数据库 URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/mydatabase?useUnicode=true&" +
"characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8";
// 数据库的用户名与密码,需要根据自己的设置
static final String USER = "root";
static final String PASS = "123456";
public boolean mySql(String sname, String spassword) {
// public static void main(String[] args) {
// String sname = "user1";
// String spassword="123456";
Boolean success = false;
Connection conn = null;
Statement stmt = null;
try {
// 注册 JDBC 驱动
Class.forName(JDBC_DRIVER);
// 打开链接
System.out.println("连接数据库...");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
// 执行查询
System.out.println(" 实例化Statement对象...");
stmt = conn.createStatement();
String sql;
sql = "SELECT name,password FROM table_name ";
ResultSet rs = stmt.executeQuery(sql);
// 展开结果集数据库
while (rs.next()) {
// 通过字段检索
String name = rs.getString("name");
String password = rs.getString("password");
// // 输出数据
// System.out.println("用户名: " + name);
// System.out.println("密码: " + password);
if (name.equals(sname) && password.equals(spassword)) {
success = true;
}
}
// 完成后关闭
rs.close();
stmt.close();
conn.close();
} catch (SQLException se) {
// 处理 JDBC 错误
se.printStackTrace();
} catch (Exception e) {
// 处理 Class.forName 错误
e.printStackTrace();
} finally {
// 关闭资源
try {
if (stmt != null) stmt.close();
} catch (SQLException se2) {
}// 什么都不做
try {
if (conn != null) conn.close();
} catch (SQLException se) {
se.printStackTrace();
}
}
System.out.println("Goodbye!");
System.out.println(success);
return success;
}
}
二、在web的验证函数中调用函数实现验证
import javax.jms.Session;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.util.Enumeration; @WebServlet(name = "CheckServlet",value = "/check")
public class CheckServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
} protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取表单的用户信息
String username = request.getParameter("username");
String userPassword = request.getParameter("userPassword");
SQLtest sqLtest = new SQLtest();
boolean success = sqLtest.mySql(username,userPassword);
//用全局初始化参数模拟数据库,并获取用户名保存在枚举中
// Enumeration<String> arrayParam = getServletContext().getInitParameterNames();
//
// //遍历枚举
// while (arrayParam.hasMoreElements()){
// //获取用户名和用户密码
// String paramName = arrayParam.nextElement();
// String paramValue = getServletContext().getInitParameter(paramName);
/*
* 校验登录信息,用户信息正确则重定向到主页,并设置Cookie的生命周期为30天
* */ if (success){
Cookie cookie = new Cookie("user",username);
cookie.setMaxAge(24*30*3600);
response.addCookie(cookie);
request.setAttribute("user",username);
// System.out.println(request.getAttribute("user"));
request.getRequestDispatcher("WEB-INF/main.jsp").forward(request,response);
}
// }
//校验失败则返回登录界面
HttpSession session = request.getSession();
session.setAttribute("name","wrong");
request.getRequestDispatcher("index.jsp").forward(request,response);
}
}
效果展示:

成功登录:

登录失败:

特别说明:在web中运行时可能会遇到java.lang.ClassNotFoundException: com.mysql.jdbc.Driver异常,解决方法请关注我的另外一篇博文:https://www.cnblogs.com/xjtsh/p/10606548.html
百度网盘:链接: https://pan.baidu.com/s/1I3a3XAhGNez_ktsMn_GyTw 提取码: f85w
servlet数据库验证登录的更多相关文章
- Servlet页面登录的数据库验证程序(二)
这个程序在原来的程序基础上加入了密码验证. 一.增加一个error.jsp页面,用于跳转出现用户名和密码错误显示信息. <%@ page language="java" im ...
- Servlet页面登录的数据库验证程序(一)
一.基本思想是MVC模式,一个登录页面login.jsp,一个服务器处理程序Servlet.java,一个MySql数据库userinfo. 另外还有相关的数据封装类User和数据库连接类GetDat ...
- 采用集成的Windows验证和使用Sql Server身份验证进行数据库的登录
采用集成的Windows验证和使用Sql Server身份验证进行数据库的登录 1.集成的Windows身份验证语法范例 1 string constr = "server=.;databa ...
- Linxu用户名验证登录MySQL管理数据库
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 前情介绍: 我们都知道登录MySQL数据库时,连接层接入数据库需要经过mysql.user表中,用户名密码的验证才能登录数 ...
- jwt验证登录信息
为什么要告别session?有这样一个场景,系统的数据量达到千万级,需要几台服务器部署,当一个用户在其中一台服务器登录后,用session保存其登录信息,其他服务器怎么知道该用户登录了?(单点登录), ...
- JavaWeb学习笔记——开发动态WEB资源(五)servlet身份验证
本工程的功能是实现Javaweb的servlet身份验证 一下是login.html文件中的代码 <!DOCTYPE html> <html> <head> < ...
- Oracle查询银行卡数、修改余额及验证登录
建立Oracle表 create table T_BANKCARD ( card_id VARCHAR2(20) not null, user_id VARCHAR2(20) not null, us ...
- 一步一步实现FormsAuthentic验证登录
本文不讲原理,只讲用法,原理性的东西网上特别多,不过还是会对一些要用到的东西进行解释,不深入讲原理.本文中用的是Vs2012 .net mvc 4.0.原理看这篇文章,看完这个文章绝对受益匪浅. ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十四║ Vuex + JWT 实现授权验证登录
壹周回顾 哈喽,又是元气满满的一个周一,又与大家见面了,周末就是团圆节了,正好咱们的前后端也要团圆了,为什么这么说呢,因为以后的开发可能就需要前后端一起了,两边也终于会师了,还有几天Vue系列就基本告 ...
随机推荐
- [物理学与PDEs]第4章第3节 一维反应流体力学方程组 3.1 一维反应流体力学方程组
1. 一维粘性热传导反应流体力学方程组 $$\beex \bea \cfrac{\p\rho}{\p t}&+\cfrac{\p}{\p x}(\rho u)=0,\\ \cfrac{\p}{ ...
- 【洛谷P1303A*Bprublem】
题目描述 求两数的积. 输入输出格式 输入格式: 两行,两个数. 输出格式: 积 输入输出样例 输入样例#1: 1 2 输出样例#1: 2 说明 每个数字不超过10^2000,需用高精 这道题还是比较 ...
- mysl 常用函数 union all if ifnull exists case when
1.union all UNION 操作符用于合并两个或多个 SELECT 语句的结果集.请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每条 S ...
- Web从入门到放弃<3>
UI简单的美化全部来源于Bootstrap 知识来自<javascript dom编程艺术第二版> <1> 点击列表 页面不跳转图片刷新: 主要点: href如何点击完如何不 ...
- 【原创】大叔问题定位分享(3)Kafka集群broker进程逐个报错退出
kafka0.8.1 一 问题现象 生产环境kafka服务器134.135.136分别在10月11号.10月13号挂掉: 134日志 [2014-10-13 16:45:41,902] FATAL [ ...
- numpy中的meshgrid
经常遇到meshgrid,一段时间不用就忘记了,记录之 meshgrid用于生成网格点的坐标矩阵(参考https://blog.csdn.net/lllxxq141592654/article/det ...
- npm安装less和less-loadernpm或者stylus和stylus-loader
vue-cli 构建的项目默认是不支持 less 的,需要自己添加. 首选,安装 less 和 less-loader ,在项目目录下运行如下命令 npm install less less-load ...
- hdu5592 倒序求排列+权值线段树
这种题为什么要用到主席树啊..8说了,直接上代码 /* 1-n的排列,给定所有前缀的逆序对数量,要求恢复排列 首先能确定最后一个数是什么,然后倒序确定即可 开线段树找空位:如果Ai-Ai-1=k,说明 ...
- query string parameters 、 Form Data 、 Request Payload
微信小程序ajax向后台传递参数的时候总是报400错误 然后看了一下network 发现是query string parameters,但是我写的header如下 header:{ "Co ...
- python——常见排序算法解析
算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法,分别是冒泡排序,插入排序,选择排序, ...