javaweb、mysql实现登录注册的简单功能

一,项目结构和数据库

1,项目结构

2,数据库

二,后端代码

1,DBUtil.java

package com.util;

import java.sql.*;

public class DBUtil {
    private static String driver = "com.mysql.jdbc.Driver";
    private static String url = "jdbc:mysql://localhost:3306/javawebdemo";
    private static String user = "root";
    private static String pwd = "123456";

    //加载驱动
    static{
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    //连接对象
    public static Connection getConnection(){
        Connection conn = null;
        try {
            conn = DriverManager.getConnection(url, user, pwd);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }

    //关闭流
    public static void close(ResultSet rs, Statement st, Connection conn){
        try {
            if(rs != null){
                rs.close();
            }
            if(st != null){
                st.close();
            }
            if(conn != null){
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static void close(PreparedStatement pst, Connection conn){
        close(null, pst, conn);
    }
}

2,测试是否能连接数据库,JDBCTest.java

package com.test;

import com.util.DBUtil;

import java.sql.Connection;

public class JDBCTest {
    public static void main(String[] args) {
        //测试连接数据库是否成功
        Connection conn = DBUtil.getConnection();
        if(conn != null){
            System.out.println("测试:数据库连接成功!");
        }else{
            System.out.println("测试:数据库连接失败!");
        }
    }
}

         

3,实体类User.java

package com.domain;

public class User {
    protected String username;
    protected String password;

    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{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

4,Dao层UserDao.java

package com.dao;

import com.domain.User;

public interface UserDao {
    //定义两个待解决的方法
    public boolean save(User user);
    public boolean checkLogin(String username, String password);
}

5,Dao层实现类UserDaoImpl.java

package com.dao.impl;

import com.util.DBUtil;
import com.dao.UserDao;
import com.domain.User;

import java.sql.*;



//实现接口的类,返回值为布尔类型
public class UserDaoImpl implements UserDao {
    public boolean save(User user){
        boolean flag = false;
        Connection conn = null;
        PreparedStatement pst = null;

        /*
        创建连接Connection对象和Statement对象
        调用插入数据到数据库的方法
        */
        conn = DBUtil.getConnection();
        String sql = "insert into user(username, password) values(?,?)";
        try {
            pst = conn.prepareStatement(sql);
            pst.setString(1, user.getUsername());
            pst.setString(2, user.getPassword());
            int row = pst.executeUpdate();
            if(row>0){
                flag = true;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(pst, conn);
        }
        return flag;
    }

    public boolean checkLogin(String username, String password){
        boolean flag = false;
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
        /*
        创建Connnection, Statement, ResultSet对象
        调用验证登录的方法
        */
        String sql ="select * from user where username = '"+ username +"'";
        conn = DBUtil.getConnection();
        try {
            st = conn.createStatement();
            rs = st.executeQuery(sql);
            while (rs.next()){
                if(rs.getString("password").equals(password)){
                    flag = true;
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(rs, st, conn);
        }
        return flag;
    }
}

6,测试插入数据到数据库表中,JDBCSaveTest.java

package com.test;

import com.dao.UserDao;
import com.dao.impl.UserDaoImpl;
import com.domain.User;

public class JDBCSaveTest {
    public static void main(String[] args) {
        //测试添加数据到数据库
        UserDao ud = new UserDaoImpl();
        User u = new User();
        u.setUsername("张三");
        u.setPassword("123456");
        boolean flag = ud.save(u);
        if(flag){
            System.out.println("测试:数据添加到数据库成功!");
        }else{
            System.out.println("测试:数据添加到数据库失败!");
        }
    }
}

        

        数据表中查看:数据成功插入

        

7,web界面注册功能控制,RegistServlet.java

package com.servlet;

import com.dao.UserDao;
import com.dao.impl.UserDaoImpl;
import com.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 javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet("/registServlet")
public class RegistServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置字符
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");

        //转换字符串
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        //调用UserDao、UserDaoImpl类及方法
        UserDao ud = new UserDaoImpl();
        User u = new User();

        //添加用户提交的数据到数据库
        u.setUsername(username);
        u.setPassword(password);

        //处理结果跳转相应页面
        boolean flag = ud.save(u);
        if(flag){
            //注册成功后跳转
            response.sendRedirect("login.jsp");
        }else{
            response.sendRedirect("register.jsp");
        }


    }

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

8,web界面登录功能控制,LoginServlet.java

package com.servlet;

import com.dao.UserDao;
import com.dao.impl.UserDaoImpl;
import com.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 javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置字符
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");

        //转换字符串
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        //调用UserDao、UserDaoImpl类及方法
        UserDao ud = new UserDaoImpl();

        //处理结果跳转相应页面
        boolean flag = ud.checkLogin(username, password);
        if(flag){
            //将提交的用户名存入session,前台登录成功页面调取
            HttpSession session = request.getSession();
            session.setAttribute("username", username);

            //登录成功后跳转
            response.sendRedirect("loginSucceed.jsp");
        }else{
            response.sendRedirect("loginFailed.jsp");
        }
    }

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

三,前端代码

1,首页,index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>首页</title>
</head>
<body>
<h1>网站首页</h1>
<br>
<p><a href="login.jsp">登录</a> <a href="register.jsp">注册</a></p>
</body>
</html>

2,注册,register.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注册</title>
</head>
<body>
<h1>用户注册</h1>
<form action="${pageContext.request.contextPath}/registServlet" method="post">
    <p>用户名:<input type="text" name="username"></p>
    <p>密码:<input type="password" name="password"></p>
    <p><input type="submit" value="注册" onclick="alert('注册成功')"> <input type="reset" value="重置"></p>
    <p><a href="login.jsp">登录</a></p>
</form>
</body>
</html>

3,登录,login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>
</head>
<body>
<h1>用户登录</h1>
<form action="${pageContext.request.contextPath}/loginServlet" method="post">
    <p>用户名:<input type="test" name="username"></p>
    <p>密码:<input type="password" name="password"></p>
    <p><input type="submit" value="登录"> <input type="reset" value="重置"></p>
    <p><a href="register.jsp">注册</a></p>
</form>
</body>
</html>

4,登录成功,loginSucceed.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录成功</title>
</head>
<body>
<h1>登录成功,欢迎您:${sessionScope.username}</h1>
<p><a href="index.jsp">回到首页</a></p>
</body>
</html>

5,登录失败,loginFailed.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录失败</title>
</head>
<body>
<h1>登录失败!</h1>
<p><a href="login.jsp">重新登录</a></p>
</body>
</html>

四,页面展示

1,首页

2,注册

3,登录

4,登录失败

5,登录成功

参考:https://blog.csdn.net/niaonao/article/details/51064978

发布了5 篇原创文章 · 获赞 6 · 访问量 134

猜你喜欢

转载自blog.csdn.net/johnfht/article/details/104364375