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', '123');

SET FOREIGN_KEY_CHECKS = 1;

配置文件

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///login
username=root
password=123
initialSize=5
maxActive=10
maxWait=3000

  

猜你喜欢

转载自www.cnblogs.com/july7/p/11569959.html
今日推荐