javaWeb简单登录实现验证数据库
用户登录案例需求:
1.编写login.html登录页面
username & password 两个输入框
2.使用Druid数据库连接池技术,操作mysql,day14数据库中user表
3.使用JdbcTemplate技术封装JDBC
4.登录成功跳转到SuccessServlet展示:登录成功!用户名,欢迎您
5.登录失败跳转到FailServlet展示:登录失败,用户名或密码错误
不加try(){}catch 出现了两个错误!!!!!!
java.lang.NoClassDefFoundError: org/springframework/jdbc/core/RowMappers的错误通过调试得到的
for servlet [servlet.LoginServlet] in context with path [/tom] threw excepti..............
登录实现原理就是,通过输入查询数据库,如果能的到就表示密码用户正确,否则错误,实现时可以使用try(){}catch{}
正确就返回一个对象,错误就返回null:这样就不会报错!
UserDaos
package UserDao; import JdbcUtils.JdbcUtility;
import domain.User;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate; /**
* 操作数据库
* @date 2019/9/22 16:42
*/
public class UserDaos {
private JdbcTemplate templates=new JdbcTemplate(JdbcUtility.getDataSource());
public User login(User logs){//从数据库查询用户名和密码 通过得到封装里面的数据loginuser.getUser()查找数据库对应数据
try {//注意!!!!如果查询到了则返回user否则返回null(不会报错!!!)
//所以依此可以判断数据库中是否存在输入的数据
String sql="select * from log where user= ? and pass= ?";
User user = templates.queryForObject(sql, new BeanPropertyRowMapper<>(User.class),
logs.getUser(),
logs.getPass());
return user;
}catch (DataAccessException e){
e.printStackTrace();
return null;
}
}
}
LoginServlet
package servlet; import UserDao.UserDaos;
import domain.User; 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 java.io.IOException; @WebServlet("/one")
public class LoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.设置编码
req.setCharacterEncoding("utf-8");
//2.获取请求参数
String username = req.getParameter("username");
String password = req.getParameter("password");
//3.封装对象
User loginuser=new User();
loginuser.setUser(username);
loginuser.setPass(password);
//4.调用userDaos
UserDaos userDaos=new UserDaos();
User user = userDaos.login(loginuser);
System.out.println(user);
//5.判断user
if (user!=null){
req.setAttribute("user",user);//共享数据
req.getRequestDispatcher("/su").forward(req,resp);//重定向
}else {
req.getRequestDispatcher("/fa").forward(req,resp);
}
} @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { }
}
package JdbcUtils; import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties; /**
* 数据库工具类
* @date 2019/9/22 16:00
*/
public class JdbcUtility {
static DataSource dataSource=null;
static {//加载配置文件
Properties pro=new Properties();
InputStream rs = JdbcUtility.class.getClassLoader().getResourceAsStream("druid.properties");
try {
pro.load(rs);
dataSource = DruidDataSourceFactory.createDataSource(pro);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
//返回一个数据池对象
public static DataSource getDataSource(){
return dataSource;
}
//获取链接Connection对象
public static Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
}
user
package domain;
/**
* s实体封装数据库表
* @date 2019/9/22 16:40
*/
public class User {
private int id;
private String user;
private String pass; @Override
public String toString() {
return "User{" +
"id=" + id +
", user='" + user + '\'' +
", pass='" + pass + '\'' +
'}';
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getUser() {
return user;
} public void setUser(String user) {
this.user = user;
} public String getPass() {
return pass;
} public void setPass(String pass) {
this.pass = pass;
}
fail
package servlet; 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 java.io.IOException;
/**
* 登录失败转发到此页面
* @date 2019/9/22 20:47
*/
@WebServlet("/fa")
public class FailServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//
response.setContentType("text/html;charset=utf-8");
//输出
response.getWriter().write("登录失败,用户名或者密码错误");
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
sucess
package servlet; import domain.User; 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 java.io.IOException; /**
* 登录失败转发到此页面
* @date 2019/9/22 20:47
*/
@WebServlet("/su")
public class SuecessServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//
response.setContentType("text/html;charset=utf-8");//输出为中文格式
//输出
User user =(User) request.getAttribute("user");
if (user!=null){
response.getWriter().write("登录成功,欢迎你"+user.getUser());
}
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/one" method="post">
用户名:<input type="text" name="username"> <br>
密码:<input type="password" name="password"><br> <input type="submit" value="登录">
</form>
</body>
</html>
数据库
DROP TABLE IF EXISTS `log`;
CREATE TABLE `log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`pass` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; -- ----------------------------
-- Records of log
-- ----------------------------
INSERT INTO `log` VALUES (1, 'zou', ''); SET FOREIGN_KEY_CHECKS = 1;
配置文件
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///login
username=root
password=123
initialSize=5
maxActive=10
maxWait=3000
javaWeb简单登录实现验证数据库的更多相关文章
- 【ADO.NET】2、各种版本的 简单登录验证
一.简单登录验证(防SQL注入) GetString(序号) 返回某一列的值(当用户不记得列名序号时,可使用GetOrdinal()获取到序号)GetInt32(序号) 针对的是 int 字段,返回i ...
- 小米抢购(简单版v0.1)-登录并验证抢购权限,以及获取真实抢购地址
小米(简单版)-登录并验证抢购权限,以及获取真实抢购地址! 并不是复制到浏览器就行了的 还得传递所需要的参数 这里只是前部分 后面的自己发挥了 { "stime": 1389 ...
- Spring 笔记 -06- 从 MySQL 建库到 登录验证数据库信息(maven)
Spring 笔记 -06- 从 MySQL 建库到 登录验证数据库信息(maven) 本篇和 Spring 没有什么关系,只是学习 Spring,必备一些知识,所以放在这里了. 本篇内容: (1)M ...
- tornado 08 数据库-ORM-SQLAlchemy-表关系和简单登录注册
tornado 08 数据库-ORM-SQLAlchemy-表关系和简单登录注册 引言 #在数据库,所谓表关系,只是人为认为的添加上去的表与表之间的关系,只是逻辑上认为的关系,实际上数据库里面的表之间 ...
- Android简单登录系统
很长时间没有写博客了,最近一直在写android for gis方面的项目.不过这篇博客就不写gis方面的了,今天刚刚做的一个简单的android登录系统.数据库是android自带的sqlite,s ...
- Spring Security 整合freemaker 实现简单登录和角色控制
Spring Security 整合freemaker 实现简单登录和角色控制 写这篇文章是因为我做了一个电商网站项目,近期刚加上权限控制.整个过程很简单,在此给大家梳理一下,也算是自己对知识 ...
- SQLSERVER误删除了Windows登录用户验证方式使用Windows身份验证的解决方法
SQLSERVER误删Windows登录用户验证方式使用Windows身份验证的解决方法 今天看到这篇文章:没有了SA密码,无法Windows集成身份登录,DBA怎么办? 想起来之前着急哥问我的一个问 ...
- SQL Server客户端登录名与数据库用户关联
数据库迁移之后,在新的SQL Server客户端工具设置关联时,往往会报错: 用户.组或角色 'XXX' 在当前数据库中已存在. 解决方法: 首先介绍一下sql server中“登录”与“用户”的区别 ...
- jQuery validate 根据 asp.net MVC的验证提取简单快捷的验证方式(jquery.validate.unobtrusive.js)
最近在学习asp.netMVC,发现其中的验证方式书写方便快捷,应用简单,易学好懂. 验证方式基于jQuery的validate 验证方式,也可以说是对jQuery validate的验证方式的扩展, ...
随机推荐
- Est数据库
Est--编码序列,gene 片段且具有标签 其中,est数据库中是类似测序1.测序2.测序3这样的序列.实验室测得的序列是cDNA,通过上图方法拼接,电脑克隆(dbest).如果有overlap则认 ...
- rabbitmq参考文档
英文文档:http://www.rabbitmq.com/getstarted.html 中文文档:http://rabbitmq.mr-ping.com/ rabbitmq重启,消费者恢复,解决消费 ...
- HDU 1257最少拦截系统[动态规划]
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1257 最 ...
- JS中的0b00与0x00表示什么
换成二进制表示:(0b表示二进制数,0x表示16进制数)
- \_\_str\_\_和\_\_repr\_\_
目录 __str__和__repr__ 一.__str__ 二.repr __str__和__repr__ 一.__str__ 打印时触发 class Foo: pass obj = Foo() pr ...
- 安卓ButtomBar实现方法
这里ButtomBar有3个items,分别有icon和文字,在当前fragment时,所属的icon和文字会显示不同颜色. 1. 首先要准好ICON素材,命名规范要清楚. 2. 实现这个Buttom ...
- git命令简单使用
git config --global user.name 'sss' git config --global user.email 'huahua@163.com' cd d:/mywork git ...
- RDD(七)——依赖
概述 RDD只支持粗粒度转换,即在大量记录上执行的单个操作.将创建RDD的一系列Lineage(血统)记录下来,以便恢复丢失的分区.RDD的Lineage会记录RDD的元数据信息和转换行为,当该RDD ...
- n的m划分
n的m划分: dp[i][j]表示j的i划分,也就是将j颗球放入i个袋子里面,最后的答案是dp[m][n] 状态转移方程为dp[i][j]=dp[i-1][j]+dp[i][j-i]; 划分方法有两种 ...
- CF-595
题目传送门 A .Yet Another Dividing into Teams sol:原先是用比较复杂的方法来解的,后来学弟看了一眼,发现不是1就是2,当出现两个人水平相差为1就分成两组,1组全是 ...