基于Jsp+Servlet+JavaBean+mysql实现的简单的登录功能 - Go语言中文社区

基于Jsp+Servlet+JavaBean+mysql实现的简单的登录功能


实现步骤:

  1. 创建数据库
    因为我们想要实现的功能比较简单(通过用户在页面上提交用户名和密码来确认用户是否登陆成功),因此我们首先创建数据库。
CREATE TABLE `tb1` (
  `id` int(11) DEFAULT '0'
  `username` varchar(20) DEFAULT NULL,
  `password` varchar(20) DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  1. 我们选择创建maven项目
  • 在pom.xml文件中导入相应的Jar包
    我们需要使用的Jar包有以下几种
servlet
jsp
mysql
jstl
el

在pom.xml文件中添加相应的Jar包依赖:
网址:
Maven Reponsitory

3.使用jdbc连接数据库
创建相应的类:Dbmanager

import java.sql.*;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

/**
 * 获取数据库的连接,并且执行CRUD
 */

public class DbManager {
    private String driver = "com.mysql.jdbc.Driver";
    private String url = "jdbc:mysql://localhost:3306/test";
    private String username = "root";
    private String password = "p18392501634";

    Connection connection = null;
    Statement statement = null;
    ResultSet resultSet = null;

    public Connection getConnection() {
        try {
            Class.forName(driver);
            connection = DriverManager.getConnection(url, username, password);
            System.out.println("success");
            return connection;
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }

    /**
     * 我们将数据库操作分为两类
     * 1.查询操作,结果返回ResultSet
     * 2.添加,删除,更新操作,结果返回int
     */

    public ResultSet queryMethod(String sql) {

        try {
            connection = this.getConnection();
            statement = connection.createStatement();
            resultSet = statement.executeQuery(sql);
            return resultSet;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return resultSet;
    }

    public int nonQueryMethod(String sql) {
        int flag = 0;
        try {
            connection = this.getConnection();
            statement = connection.createStatement();
            flag = statement.executeUpdate(sql);
            return flag;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return flag;
    }

    public void closeResources() {
        if (resultSet != null) {
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}


4.完成对应的jsp登陆页面


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<form action="LoginServlet" method="post">
    username:<input type="test" name="username"><br>
    password:<input type="password" name="password"><br>
    <input type="submit" value="Submit">
    <input type="reset" value="Reset">
</form>
</body>
</html>

  1. 创建和数据库对应的user类
    类中属性应该和数据库中字段属性一致
public class User {
    private int id;
    private String userName;
    private String passWord;

    public User() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return passWord;
    }

    public void setPassword(String password) {
        this.passWord = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", userName='" + userName + ''' +
                ", password='" + passWord + ''' +
                '}';
    }
}

  1. 创建servlet类
    实现以下功能
    .1:获取表单参数
    .2:调用业务逻辑
    .3:转向
package com.jerome.servlet;

import com.jerome.entity.User;
import com.jerome.service.UserServiceImpl;

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;
import java.io.PrintWriter;


/*
 * 1.获取表单参数
 * 2.调用业务逻辑
 * 3.转向
 * */
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {


    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        //获取表单参数(页面中提交过来的值)
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        User user = new User();
        user.setUserName(username);
        user.setPassword(password);
        //调用业务逻辑

        UserServiceImpl userService = new UserServiceImpl();
        int flag = userService.checkUserService(user);
/*        UserDao userDao = new UserDao();
        int flag = userDao.checkUser(user);*/
        if (flag == 1) {
            //转向
            request.setAttribute("userKey", user);//"user"

            request.getRequestDispatcher("success.jsp").forward(request, response);
        } else {
            request.getRequestDispatcher("failure.jsp").forward(request, response);
        }

    }
}

我们的业务:

  • 获取页面传递过来的表单参数
  • 和数据库中相应的数据进行对比
  • 相同转向成功页面
  • 不相同则转向失败页面

访问数据库进行数据对比:
Dao层:

package com.jerome.Dao;

import com.jerome.db.DbManager;
import com.jerome.entity.User;

import java.sql.ResultSet;


public class UserDao {
    public int checkUser(User user) {
        int flag = 0;

        String sql = "select username,password from tb1 where username='" + user.getUserName() +"' and password='"+ user.getPassword() +"'";
        try {
            DbManager dbManager = new DbManager();
            ResultSet resultSet = dbManager.queryMethod(sql);
            String username = null;
            String password = null;
            while (resultSet.next()) {
                username = resultSet.getString("username");
                password = resultSet.getString("password");
                if (username.equals(user.getUserName()) && password.equals(user.getPassword())) {
                    flag = 1;
                    return flag;
                } else {
                    flag = 0;
                    return flag;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return flag;
    }
}

采用mvc(Model模型-View视图-Controller控制器)设计模式:
在这里插入图片描述
Service层:

package com.jerome.service;

import com.jerome.entity.User;


public interface IUserService {
    public int checkUserService(User user);
}

package com.jerome.service;

import com.jerome.Dao.UserDao;
import com.jerome.entity.User;


public class UserServiceImpl implements IUserService {
    private UserDao userDao = new UserDao();

    public int checkUserService(User user) {
        return userDao.checkUser(user);
    }
}

成功页面:


<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
Congratulation! ${userKey.userName}<%--userName(User中)--%>
</body>
</html>

失败页面:


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
Sorry!
</body>
</html>

结果展示:
在这里插入图片描述
在这里插入图片描述
当密码或者用户名和数据库不匹配时:
在这里插入图片描述

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/dulalarepost/article/details/99001081
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-06-28 01:53:19
  • 阅读 ( 816 )
  • 分类:前端

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢