java 运用servlet和mysql做登录功能

在我之前的博客中我曾写过目录结构的创建,大家可以先看一下

一、目录结构

在这里插入图片描述

二、MySQL

在这里插入图片描述

三、代码实现

1.StudentDao

package com.gok.dao;

import com.gok.entity.Student;
import com.gok.util.DBUtils;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
 * @description:student 的持久化操作
 * @author: Lenovo
 * @date: Created in 2020/12/21 14:53
 * @version:
 * @modified By:
 */
public class StudentDao {
    //连接数据库的对象
    private Connection conn;
    //会话对象
    private Statement stmt;
    //预编译会话对象
    private PreparedStatement pstmt;
    //结果集
    private ResultSet rs;

    public Student login(String username, String password) {
        try {
            //准备Sql语句
            String sql = "select id,age,name from student where username ='" + username + "' and password='" + password + "'";
            //获取数据库连接
            conn = DBUtils.getConn();
            //创建会话以执行sql
            stmt = conn.createStatement();
            //执行sql语句
            rs = stmt.executeQuery(sql);
            if (rs.next()) {
                return new Student(rs.getInt(1), rs.getString(3), rs.getInt(2), username, password);

            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
            System.out.println("stmt error");
            return null;
        } finally {
            DBUtils.close(stmt, pstmt, rs);
        }
        return null;
    }
    public List <Student> listAll() {
        try {
//    准备sql语句
            String sql = "select id,name,age,username from student ";
//     获取数据库连接
            conn = DBUtils.getConn();
//        创建会话以执行sql
            stmt = conn.createStatement();
//        执行sql语句
            rs = stmt.executeQuery(sql);
            List <Student> list =new ArrayList<Student>();
            while (rs.next()) {
                list.add(new Student(rs.getInt(1),rs.getString(2),rs.getInt(3),rs.getString(4),null));
            }
            return list;
        } catch (SQLException throwables) {
            throwables.printStackTrace();
            System.out.println("stmt error");
            return null;
        } finally {
            DBUtils.close(stmt, pstmt, rs);
        }
    }



    public static void main(String[] args){
        Student s = new StudentDao().login("","");
        System.out.println(s);
    }
}

2.Student

package com.gok.entity;

/**
 * @description:表student的实体类
 * @author: Lenovo
 * @date: Created in 2020/12/21 14:55
 * @version:
 * @modified By:
 */
public class Student {
    private Integer id;
    private String name;
    private  Integer age;
    private  String username;
    private String pwd;

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", username='" + username + '\'' +
                ", pwd='" + pwd + '\'' +
                '}';
    }

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public Student(Integer id, String name, Integer age, String username, String pwd) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.username = username;
        this.pwd = pwd;
    }

    public Student() {
    }
}

3.LoginServlet

package com.gok.servlet;

import com.alibaba.fastjson.JSONObject;
import com.gok.dao.StudentDao;
import com.gok.entity.Student;
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.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @description:
 * @author: Lenovo
 * @date: Created in 2020/12/21 14:55
 * @version:
 * @modified By:
 */


@WebServlet(value = "/login")
public class LoginServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        StudentDao studentDao = new StudentDao();
        String username = req.getParameter("username");
        String pwd = req.getParameter("pwd");
        Student student = studentDao.login(username, pwd);
        List <Student> list = studentDao.listAll();
        //Map<String, Object> result = new HashMap<String, Object>();
        if (student != null){
            //  result.put("code","200");
            //  result.put("msg","login success");
            // result.put("data",student);
            req.setAttribute("student" ,student);
            req.setAttribute("students",list);
            req.getRequestDispatcher("/myweb.jsp").forward(req,resp);
        }else {
            //result.put("code","700");
            //result.put("msg","login failed");
            req.setAttribute("failed","username or password error");
            req.getRequestDispatcher("/login.jsp").forward(req,resp);
        }
        // resp.getWriter().write(JSONObject.toJSONString(result));
    }
}

4.DBUtils

package com.gok.util;


import java.awt.*;
import java.sql.*;

/**
 * @description:连接数据库的工作类
 * @author: Lenovo
 * @date: Created in 2020/12/21 10:58
 * @version:
 * @modified By:
 */
//打开连接
public class DBUtils {
    private static Connection conn;
    public static Connection getConn(){
        try {
            //连接的用户名
            String username = "root";
            //链接的密码
            String pwd = "123321";//自己mysql的密码
            //利用驱动链接数据库
            String driver = "com.mysql.cj.jdbc.Driver";
            //数据库的具体驱动,并带上属性参数
            String url = "jdbc:mysql://127.0.0.1:3306/login?characterEncoding=utf8&serverTimezone=GMT&useSSL=false";
            //加载驱动
            Class.forName(driver);
            conn = DriverManager.getConnection(url, username, pwd);
            return conn;
        }catch (ClassNotFoundException e){
            e.printStackTrace();
            System.out.println("driver error");
        }catch(SQLException throwables){
            throwables.printStackTrace();
            System.out.println("url error");
        }
        return  null;

    }
    //关闭连接
    public  static void close(Statement stmt, PreparedStatement pstmt, ResultSet rs) {
        try {
            if (rs != null) {
                rs.close();
            }
            if (pstmt != null) {
                pstmt.close();
            }
            if (stmt != null) {
                stmt.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch(SQLException throwables){
            throwables.printStackTrace();
        }
    }

    public static  void  main(String[] args){

        System.out.println(getConn());
    }
}





5.登录页面–login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<body>
<form action="/login" method="get">
    <p>
        <label for="username">username:</label>
        <input type="text" id="username" autocomplete="off" name="username">
    </p>
    <p>
        <label for="password">password:</label>
        <input type="text" id="password"  name="pwd">
    </p>
    <p>
        <input type="submit" value="login">
       <em>${requestScope.student}</em>
    </p>
</form>
</body>
</head>
</html>

css大家可以设计自己喜爱的

四、tomcat配置

在这里插入图片描述
下次博客会细化MySQL的使用过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值