dao层  接口
package com.qu.dao; public interface ILoginDAO {
/**
* 模拟用户登录
* 验证用户名 密码是否正确
* select * from from login where username=? and password=?
*/
boolean isLogin(String username,String password);
}
dao层   实现类
package com.qu.dao.impl; import com.qu.dao.ILoginDAO;
import com.qu.util.DButil;
import sun.security.pkcs11.Secmod; import java.util.List;
import java.util.Map; public class LoginDAOImpl implements ILoginDAO{
@Override
public boolean isLogin(String username, String password) {
String sql="select * from login where username=? and password=?";
List<Map<String, Object>> list = DButil.executeQuery(sql, username, password);
return list.size()>0;
}
}
工具类

package com.qu.util;

import com.sun.xml.internal.ws.api.ha.StickyFeature;

import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; public class DButil {
static{
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 获得连接
*/
public static Connection getConnection(){
try {
return DriverManager.getConnection("jdbc:mysql://localhost:3306/user?characterEncoding","root","root");
} catch (SQLException e) {
e.printStackTrace();
}
return null;
} /**
* 增删改的通用工具类
* @param sql
* @param args
* @return
*/
public static boolean executeUpdate(String sql,Object... args){
Connection conn=null;
PreparedStatement ps=null;
try {
conn = getConnection();
ps = conn.prepareStatement(sql);
for (int i=0;i<args.length;i++){
ps.setObject(i+1,args[i]);
}
int i = ps.executeUpdate();
return i>0;
} catch (SQLException e) {
e.printStackTrace();
}
finally {
close(conn,ps,null);
}
return false;
} /**
* 查询通用工具类
* @param sql
* @param args
* @return
*/
public static List<Map<String,Object>> executeQuery(String sql,Object... args){
Connection conn=null;
ResultSet rs=null;
PreparedStatement ps=null;
try {
conn = DButil.getConnection();
ps = conn.prepareStatement(sql);
/**
* 有参数
*/
for (int i=0;i<args.length;i++){
ps.setObject(i+1,args[i]);
}
/* 执行*/
rs = ps.executeQuery();
/* 需要将所有数据都存放到List 中 每一行 用一个map存放*/
List<Map<String,Object>> list=new ArrayList<>();
/* 获取所有列数*/
int count = ps.getMetaData().getColumnCount();
while(rs.next()){
Map<String,Object> map=new HashMap<>(); //一行一个map接收
for (int i=1;i<=count;i++){
String name = rs.getMetaData().getColumnLabel(i);
map.put(name,rs.getObject(1));
}
/*将每行的map存放到List中*/
list.add(map); }
return list;
} catch (SQLException e) {
e.printStackTrace();
}finally {
close(conn,ps,rs);
}
return null;
}
/**
* 关闭的通用方法
*/
private static void close(Connection conn,PreparedStatement ps,ResultSet rs){
try {
if (rs!=null){
rs.close();
}
if (ps!=null){
ps.close();
}
if(conn!=null) {
conn.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
servlet  测试类
package com.qu.servlet; import com.qu.dao.ILoginDAO;
import com.qu.dao.impl.LoginDAOImpl;
import org.junit.Test; public class TestLogin {
@Test
public void testLogin(){
//模拟账号登录
String username="李登";
String password="123";
//验证用户名 密码是否正确
ILoginDAO dao=new LoginDAOImpl();
boolean login = dao.isLogin(username, password);
if (login){
System.out.println("恭喜登录成功");
}else{
System.out.println("对不起,账号或密码错误");
} }
}

jdbc封装模拟用户登录的更多相关文章

  1. xpath技术解析xml以及案例模拟用户登录效果

    问题:当使用dom4j查询比较深的层次结构的节点(标签,属性,文本),比较麻烦!!! xpath就在此情况下产生了--主要是用于快速获取所需的[节点对象]. 在dom4j中如何使用xPath技术 1) ...

  2. 运用String类实现一个模拟用户登录程序

    package Test; import java.util.Scanner; // 模拟用户登录程序 // 思路: // 1.用两个String类分别接收用户名和密码 // 2.判断输入的用户名和密 ...

  3. java.net.URL 模拟用户登录网页并维持session

    java.net.URL 模拟用户登录网页并维持session 半成品,并非完全有用 import java.io.BufferedReader; import java.io.InputStream ...

  4. python 初学习 模拟用户登录

    #!/usr/bin/env python#coding:utf-8''' 2017年8月19日 模拟用户登录,userfile 文件保存字典 用户名,和密码 sorryname 文件保存字典 登录过 ...

  5. python3.0 模拟用户登录,三次错误锁定

    # -*- coding:utf-8 -*- #需求模拟用户登录,超过三次错误锁定不允许登陆     count = 0   #realname passwd Real_Username = &quo ...

  6. scrapy模拟用户登录

    scrapy框架编写模拟用户登录的三种方式: 方式一:携带cookie登录,携带cookie一般请求的url为登录后的页面,获取cookie信息应在登录后的页面获取,cookie参数应转成字典形式 # ...

  7. java.net.URL 模拟用户登录网页并维持session【转】

    java.net.URL 模拟用户登录网页并维持session 半成品,并非完全有用 import java.io.BufferedReader; import java.io.InputStream ...

  8. Redis缓存Mysql模拟用户登录Java实现实例[www]

    Redis缓存Mysql模拟用户登录Java实现实例 https://jingyan.baidu.com/article/09ea3ede1dd0f0c0aede3938.html redis+mys ...

  9. 模拟用户登录,内含验证码验证和request等操作

    模拟用户登录,内含验证码验证和jsp等操作 1.案例需求: 1. 访问带有验证码的登录页面login.jsp 2. 用户输入用户名,密码以及验证码. * 如果用户名和密码输入有误,跳转登录页面,提示: ...

随机推荐

  1. 【原】Java学习笔记007 - 流程控制

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // for循环 // ...

  2. c/c++ 多线程 层级锁

    多线程 层级锁 当要同时操作2个对象时,就需要同时锁定这2个对象,而不是先锁定一个,然后再锁定另一个.同时锁定多个对象的方法:std::lock(对象1.锁,对象2.锁...) 但是,有的时候,并不能 ...

  3. Linux学习历程——Centos 7 mkdir命令

    一.命令介绍 mkdir 命令用于创建空白目录格式为“mkdir [选项] 目录”, 除了能够创建单个空白目录,还能结合 -p 参数来递归创建具有嵌套层叠关系的文件目录. -------------- ...

  4. Nginx负载均衡的4种方式 :轮询-Round Robin 、Ip地址-ip_hash、最少连接-least_conn、加权-weight=n

    这里对负载均衡概念和nginx负载均衡实现方式做一个总结: 先说一下负载均衡的概念: Load Balance负载均衡是用于解决一台机器(一个进程)无法解决所有请求而产生的一种算法. 我们知道单台服务 ...

  5. jspdf生成pdf并在页面展示

    jspdf调用ouput即可 https://blog.csdn.net/dragonzoebai/article/details/18243823 获取页面生成pdf:jspdf+html2canv ...

  6. 完成一个java项目需要的一些基础

    包括  1.eclipse关键字      2.文档注      3. jar包的导出与导入 一.elipse关键字 ctry+t       查看父类 ctry+鼠标光标     查看源代码 二.文 ...

  7. SQL MAX() 函数

    MAX() 函数 MAX 函数返回一列中的最大值.NULL 值不包括在计算中. SQL MAX() 语法 SELECT MAX(column_name) FROM table_name 注释:MIN ...

  8. linux目录1

    1.linux常用快捷键 2.linux命令之vmstat 3.linux命令之df 4.linux命令之netstat 5.linux命令之 tar 6.The authenticity of ho ...

  9. js如何调用php文件内显示的数值到html?

    index.html <script type="text/javascript" src="https://cdn.bootcss.com/jquery/1.9. ...

  10. Kafka 详解(一)------简介

    在前面几篇博客我们介绍过一种消息中间件——RabbitMQ,本篇博客我们介绍另外一个消息中间件——Kafka,Kafka是由LinkedIn开发的,使用Scala编写,是一种分布式,基于发布/订阅的消 ...