jdbc封装模拟用户登录
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封装模拟用户登录的更多相关文章
- xpath技术解析xml以及案例模拟用户登录效果
问题:当使用dom4j查询比较深的层次结构的节点(标签,属性,文本),比较麻烦!!! xpath就在此情况下产生了--主要是用于快速获取所需的[节点对象]. 在dom4j中如何使用xPath技术 1) ...
- 运用String类实现一个模拟用户登录程序
package Test; import java.util.Scanner; // 模拟用户登录程序 // 思路: // 1.用两个String类分别接收用户名和密码 // 2.判断输入的用户名和密 ...
- java.net.URL 模拟用户登录网页并维持session
java.net.URL 模拟用户登录网页并维持session 半成品,并非完全有用 import java.io.BufferedReader; import java.io.InputStream ...
- python 初学习 模拟用户登录
#!/usr/bin/env python#coding:utf-8''' 2017年8月19日 模拟用户登录,userfile 文件保存字典 用户名,和密码 sorryname 文件保存字典 登录过 ...
- python3.0 模拟用户登录,三次错误锁定
# -*- coding:utf-8 -*- #需求模拟用户登录,超过三次错误锁定不允许登陆 count = 0 #realname passwd Real_Username = &quo ...
- scrapy模拟用户登录
scrapy框架编写模拟用户登录的三种方式: 方式一:携带cookie登录,携带cookie一般请求的url为登录后的页面,获取cookie信息应在登录后的页面获取,cookie参数应转成字典形式 # ...
- java.net.URL 模拟用户登录网页并维持session【转】
java.net.URL 模拟用户登录网页并维持session 半成品,并非完全有用 import java.io.BufferedReader; import java.io.InputStream ...
- Redis缓存Mysql模拟用户登录Java实现实例[www]
Redis缓存Mysql模拟用户登录Java实现实例 https://jingyan.baidu.com/article/09ea3ede1dd0f0c0aede3938.html redis+mys ...
- 模拟用户登录,内含验证码验证和request等操作
模拟用户登录,内含验证码验证和jsp等操作 1.案例需求: 1. 访问带有验证码的登录页面login.jsp 2. 用户输入用户名,密码以及验证码. * 如果用户名和密码输入有误,跳转登录页面,提示: ...
随机推荐
- 《我们不一样》Alpha冲刺_1-5
第一天 日期:2018/6/15 1.1 今日完成任务情况以及遇到的问题. 马 兰.马 娟:用户.管理员数据库表的设计 李国栋.张惠惠:前端登录界面代码书写 伊力亚.张 康:配置s ...
- 连接到github
1,创建秘钥 $ ssh-keygen -t rsa -C "youremail@example.com"执行成功后,会在~/.ssh/目录下生成id_rsa和id_rsa.pub ...
- python爬虫 | 一条高效的学习路径
数据是创造和决策的原材料,高质量的数据都价值不菲.而利用爬虫,我们可以获取大量的价值数据,经分析可以发挥巨大的价值,比如: 豆瓣.知乎:爬取优质答案,筛选出各话题下热门内容,探索用户的舆论导向. 淘宝 ...
- MySQL:1366 - Incorrect string value错误解决办法
今天使用navicat向MySQL中插入中文时,报错: - Incorrect string value:... 在我自己数据库设计之初,没有设计好字符编码格式的问题. 使用如下语句解决: alter ...
- tomcat设置开机启动
一.windows 1. 下载tomcat 2. 进入bin目录,查看是否存在service.dat,如果没有自行创建 3. 打开cmd,进入tomcat>bin目录 说明:用法: servic ...
- ansible学习(二)
什么是YAML? YAML是一种标记语言.适合用来表达层次结构式的数据结构. YAML的基本组件:清单(短杠——空白字符)和散列表(短杠+空白字符分隔key:value对). Playbook的核心元 ...
- SQLServer之修改索引
使用SSMS数据库管理工具修改索引 使用表设计器修改索引 表设计器可以修改任何类型的索引,修改索引的步骤相同,本示例为修改唯一非聚集索引. 1.连接数据库,选择数据库,选择数据表->右键点击表- ...
- 1.1 NCE21 Daniel Mendoza
1.text translation Two hundred years ago, boxing matches were very popular in England. At that time/ ...
- centos7下 svn的配置
安装svn yum install subversion 查看安装版本 svnserve --version 创建svn版本库目录 mkdir -p /root/svn/test 创建svn版本库 s ...
- c# 小数四舍五入,向上取整,向下取整,见角进元保留多个小数位数
/// <summary> /// 实现数据的四舍五入法 /// </summary> /// <param name="v">要进行处理的数据 ...