用户登录案例需求:
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

  

最新文章

  1. clojure基础入门(一)
  2. 【leetcode】Evaluate Reverse Polish Notation
  3. 自动生成Mapper和Entity工具MybatisGenerator的使用
  4. HTML 学习笔记(块 和 类)
  5. Sqli-LABS通关笔录-3
  6. linq join多字段
  7. Caffe学习系列(19): 绘制loss和accuracy曲线
  8. 欧拉工程第60题:Prime pair sets
  9. WebApp框架
  10. Laravel 5.2 教程 - 队列
  11. Python进行文本处理
  12. JAVA8之lambda表达式具体解释,及stream中的lambda使用
  13. svn中出现各种感叹号说明
  14. Windows 快捷键总结
  15. 安装weblogic
  16. Baidu地图Map api直接加https不起作用
  17. linux服务器上配置多个svn仓库
  18. phpStudy apache 启动不了
  19. redis 动态修改配置与备份文件目录
  20. 同一个ImageView根据xml文件来显示不同的图片--level-list

热门文章

  1. Ivory Coast Map
  2. P2P平台爆雷不断到底是谁的过错?
  3. 用FFmpeg+nginx+rtmp搭建环境实现推流
  4. SpringBoot项目示例
  5. 洛谷P1525 关押罪犯(并查集、二分图判定)
  6. 6.windows-oracle实战第六课 --数据管理
  7. Codeforces Round #600 (Div. 2)E F
  8. 通过特殊处理 Resize 事件解决 WinForm 加载时闪烁问题的一个方法
  9. java代码实现数据源切换(连接池简单粗暴)
  10. L3-016 二叉搜索树的结构 (30 分)