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系列就基本告 ...
随机推荐
- PHP中的常用数组操作方法
一.数组操作的基本函数 数组的键名和值array_values($arr); 获得数组的值array_keys($arr); 获得数组的键名array_flip($arr); 数组中的值与键名互 ...
- The container 'Maven Dependencies' references non existing library '
解决办法 uncheck the option "resolve dependencies from workspace projects" from the maven tab ...
- 第六章 接口,lamda表达式与内部类
接口 接口可以包含常量, 且不需要publish static final修饰, 接口的域会自动添加该修饰符. Java建议不要写多余的代码,因此省略修饰符更简洁. 全部都是常量的接口背离了接口的初衷 ...
- 论文笔记:Cross-Domain Visual Matching via Generalized Similarity Measure and Feature Learning
Cross-Domain Visual Matching,即跨域视觉匹配.所谓跨域,指的是数据的分布不一样,简单点说,就是两种数据「看起来」不像.如下图中,(a)一般的正面照片和各种背景角度下拍摄的照 ...
- 手写代码 - java.util.Arrays 相关
1-拷贝一个范围内的数组 Arrays.copyOfRange( array, startIndex, endIndex); include startIndex... exclude endInde ...
- css3之border-radius理解
在日常项目过程中,border-radius这个属性算是非常常用的属性之一了,通过设置元素的border-radius值,可以轻松给元素设置圆角边框,甚至实现绘制圆.半圆.四分之一的圆等各种圆角图形. ...
- npm脚本传参问题
npm脚本传参问题(比如设置env参数) windows环境下: "build": "set NODE_ENV=dev&& gulp", &qu ...
- laravel 黑名单功能实现
创建黑名单表迁移:php artisan make:model Models/BlackFeeds -m (生成模型和迁移文件) 迁移文件中创建如下字段: public function up( ...
- SpringMVC的入门示例
1.配置流程说明 第一步:导入包 第二步:构建一个请求,编写请求页面 第三步:配置核心控制器 第四步:构建一个业务控制器 第五步:编写Spring配置文件 第六步:编写一个返回页面 2.配置流程--- ...
- java设计模式自我总结---代理模式
代理模式是给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用,通俗的来讲代理模式就是我们生活中常见的中介. Spring 的AOP面向切面就是使用动态代理模式来实现的: 打个比方说:我要买房 ...