JavaWeb实现简易的注册登录功能(与数据库连接)

这篇具有很好参考价值的文章主要介绍了JavaWeb实现简易的注册登录功能(与数据库连接)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、创建数据库表连接

这里我们创建一个数据库名为db_user,创建库的使用可视化工具很简单就不细说了,下面sql代码块是我们创建一个简易用户表为了方便我们后续进行登录注册操作。

下面就是建好的表:

java编程实现登录注册并连接数据库,数据库,tomcat,java,idea

1、建一个与数据库连接的file文件:db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/db_user
user=root
password=123456

java编程实现登录注册并连接数据库,数据库,tomcat,java,idea

二、创建前端页面
1、登录界面

使用form表单进行数据的提交,form表单中的action属性指的是将数据提交,method是使用post方法进行提交,post方法具有比get更好的数据隐蔽性,如果大家想更加了解form表单中的用户可以自己去学习一下,此处不在讲述,直接上代码。

在web包下面创一个login2.jsp文件

java编程实现登录注册并连接数据库,数据库,tomcat,java,idea

<%--
  Created by IntelliJ IDEA.
  User: ASUS
  Date: 2023/9/27
  Time: 9:06
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.HashMap" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    HashMap<String,String> error = ((HashMap<String, String>)request.getAttribute("error"));
    String fail = (String)request.getAttribute("fail");
%>
<form action="UserController" method="post">
    <input type="hidden" value="login" name="userAction">
    <table border="1" align="center">
        <tr align="center"><td colspan="2">登录</td></tr>
        <tr>
            <td>账号<input type="text" name="username"><span style="color:pink"> <%=fail==null?"":fail%></span><span style="color:pink"> <%=error==null?"":error.get("username")==null?"":error.get("username")%></span></td>
        </tr>
        <tr>
            <td>密码<input type="text" name="password"><span style="color:pink"> <%=error==null?"":error.get("password")==null?"":error.get("password")%></span></td>
        </tr>
        <tr>
            <td colspan="2" align="center"><input type="submit" value="提交"><input type="reset" value="重置"></td>
        </tr>
    </table>
</form>
</body>
</html>

java编程实现登录注册并连接数据库,数据库,tomcat,java,idea

2、注册界面

下面是注册界面的代码,和登录界面类似

<%@ page import="java.util.HashMap" %><%--
  Created by IntelliJ IDEA.
  User: ASUS
  Date: 2023/9/21
  Time: 9:32
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    HashMap<String,String> error = ((HashMap<String, String>)request.getAttribute("error"));
    String registerfail = request.getParameter("registerfail");
%>
<span><%=registerfail==null?"":registerfail%></span>
<form action="UserController" method="post">
    <table width="30%" height="300px" border="1" id="table01">
        <tr align="center">
            <td colspan="2">注册</td>
        </tr>
        <tr>
            <td>用户名:</td><td><input type="text" name="username"><%=error==null?"":error.get("username")==null?"":error.get("username")%></td>
        </tr>
        <tr>
            <td>密码:</td><td><input type="text" name="password"><%=error==null?"":error.get("password")==null?"":error.get("password")%></td>
        </tr>
        <tr>
            <td>年龄:</td><td><input type="text" name="age"></td>
        </tr>
        <tr>
            <td>出生年月:</td><td><input type="text" name="birthday"></td>
        </tr>
        <tr>
            <td>性别:</td>
            <td>
                <input type="radio" value="female" name="gender">女
                <input type="radio" value="male" name="gender">男
            </td>
        </tr>
        <tr>
            <td>爱好:</td>
            <td>
                <input type="checkbox" value="篮球" name="hobbies">篮球
                <input type="checkbox" value="羽毛球" name="hobbies">羽毛球
                <input type="checkbox" value="足球" name="hobbies">足球
            </td>
        </tr>
        <tr>
            <td>地址</td>
            <td>
                <select name="address">
                    <option value="成都">成都</option>
                    <option value="贵州">贵州</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>备注:</td>
            <td><textarea cols="30" rows="10" name="remark"></textarea> </td>
        </tr>
        <tr>
            <td colspan="2" align="center">
                <input type="submit" value="提交">
                <input type="reset" value="重置">
            </td>
        </tr>
    </table>
</form>
</body>
</html>

java编程实现登录注册并连接数据库,数据库,tomcat,java,idea

三、后端数据处理

提示:本文Java后端采用MVC模式开发,MVC是当前主流开发模式,如果不理解的请看链接: MVC框架.

1、登录与注册实现

先在src中创建几个包,分别是service,dao,Controller,utils,domain。

  1. service层(业务层):封装通用的业务逻辑,操作;与数据层的交互。
  2. dao层(数据层):主要做数据持久层的工作,封装负责与数据库进行操作的代码。
  3. domain:实体类。
  4. utils :封装工具类。

service层应该既调用dao层的接口,又要提供接口给controller层的类来进行调用,它刚好处于一个中间层的位置。
处理流程为:controller层调用 service层, service层在调用dao层;dao层处理完数据返回 service层, service层在返回controller层,controller层最终返回前端。
实例:

java编程实现登录注册并连接数据库,数据库,tomcat,java,idea

domian:

import java.io.Serializable;


/**
 * 一般带数据的实体类最好序列化(为了数据传输/存储)
 */
public class User implements Serializable{
    private String username;
    private String password;
    private String gender;
    private String hobbies;
    private String address;
    private String remark;
    private int age;
    private String birthday;


    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    public void setHobbies(String hobbies) {
        this.hobbies = hobbies;
    }

    public int getAge() {
        return age;
    }

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

    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;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getHobby() {
        return hobbies;
    }

    public void setHobby(String hobbies) {
        this.hobbies = hobbies;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", gender='" + gender + '\'' +
                ", hobbies='" + hobbies + '\'' +
                ", address='" + address + '\'' +
                ", remark='" + remark + '\'' +
                ", age=" + age +
                ", birthday='" + birthday + '\'' +
                '}';
    }

    public String getHobbies() {
        return hobbies;
    }


}

Controller:建一个UserContrller文件

import com.xinhua.domain.User;
import com.xinhua.service.UserService;

import com.xinhua.validate.ValidateDemo;

import org.apache.commons.beanutils.BeanUtils;
import utils.ArrayToString;

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.lang.reflect.InvocationTargetException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

@WebServlet("/UserController")
public class UserController extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String action = req.getParameter("userAction");
        //处理中文乱码
        resp.setContentType("text/html;charset=utf-8");
        req.setCharacterEncoding("utf-8");

        //登录
        if ("login".equals(action)){
            User user = new User();

            try {
                BeanUtils.populate(user,req.getParameterMap());
                Map<String,String> error = ValidateDemo.validateUser(user);
                if (error.isEmpty()){
                    UserService userService = new UserService();
                    boolean flag = userService.login(user.getUsername(),user.getPassword());
                    if (flag){
                        resp.sendRedirect("index01.jsp?username="+ URLEncoder. encode(user.getUsername(),"utf-8"));
                    }else {
                        req.setAttribute("fail","登录失败");
                        req.getRequestDispatcher("login2.jsp").forward(req,resp);
                    }
                }else {
                    req. setAttribute( "error", error);
                    req.getRequestDispatcher( "login2.jsp").forward(req,resp);
                }
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }


        }
        //注册
        if ("register".equals(action)){//接收数据和封装
            User user = new User();
            try {
                BeanUtils.populate(user,req.getParameterMap());
                user.setHobbies(ArrayToString.arrayToString(req.getParameterValues("hobbies")));
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }//验证数据
            Map<String,String> error = new HashMap<>();
            if (error.isEmpty()){

                //调用service处理业务
                UserService userService = new UserService();
                int state = userService.register(user);
                if (state==0){
                    resp.sendRedirect("/registerfail.jsp");
                }
                if (state==1){
                    resp.sendRedirect("/registersuccess.jsp");
                }
                if (state==2){
                    resp.sendRedirect("/register.jsp?registerfail="+ URLEncoder. encode( "该用户已经存在!", "utf-8"));
                }
            }else {//带错误数据跳转到注册界面
                req. setAttribute( "error", error);
                req.getRequestDispatcher( "/register.jsp").forward(req, resp);
            }
        }

    }
}

service

import com.xinhua.dao.UserDao;
import com.xinhua.domain.User;

/**
 * 处理user的相关业务
 * 业务层命名的原则是表达具体业务
 */

public class UserService {

    /**
     * 用户登录
     */
    public boolean login(String username,String password){
        UserDao userDao = new UserDao();
        boolean flag = userDao.findUserByUsernameAndPassword(username,password);

        return flag;
    }

    /**
     * 注册用户
     * 如果只有两种返回结果状态用boolean
     * 超过两种用int(0(注册没有成功)1(注册成功)2(表示用户存在))
     * 业务函数的名字要体现业务
     */
    public int register(User user){
        //判断用户是否存在
        UserDao userDao = new UserDao();
        boolean flag = userDao.findUserByUsername(user.getUsername());
        int state=0;
        if (flag){//用户存在
            state=2;
        }else {
            int i = userDao.addUser(user);
            if (i>0){
                state=1;
            }else {
                state=0;
            }
        }
        return state;
    }
}

dao

import com.xinhua.domain.User;
import utils.DBUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

//数据处理
public class UserDao {
    //通过用户名和密码查询用户
    public boolean findUserByUsernameAndPassword(String username,String password){
        Connection conn = null;
        String sql = null;

        PreparedStatement ps = null;
        ResultSet rs = null;
        boolean flag = false;
        try {
            conn = DBUtils.getConnection();
            sql = "SELECT id FROM USER WHERE username=? AND password=?";
            ps = conn.prepareStatement(sql);
            ps.setString(1,username);
            ps.setString(2,password);
            rs = ps.executeQuery();
            while (rs.next()){
                if (rs.getInt(1)>0){
                    flag = true;
                }
            }

        }catch (SQLException e){
            e.printStackTrace();
        }
        DBUtils.closeDB(conn,ps,rs);
        return flag;
    }



    //根据用户名查询用户
    public boolean findUserByUsername(String username){
        //连接数据库
        Connection conn = null;
        String sql = null;

        PreparedStatement ps = null;
        ResultSet rs = null;
        boolean flag = false;
        try {
            conn = DBUtils.getConnection();
            sql = "SELECT id FROM USER WHERE username=?";
            ps = conn.prepareStatement(sql);
            ps.setString(1,username);
            rs = ps.executeQuery();
            while (rs.next()){
                if (rs.getInt(1)>0){
                    flag = true;
                }
            }

        }catch (SQLException e){
            e.printStackTrace();
        }
        DBUtils.closeDB(conn,ps,rs);
        return flag;
    }
    //添加用户
    public static int addUser(User user){
        Connection conn = null;
        String sql = null;
        PreparedStatement ps = null;
        int i = 0;
        try {
            conn = DBUtils.getConnection();
            sql = "insert into user(username,password,gender,age,hoddies,remark,address) values(?,?,?,?,?,?,?)";
            ps = conn.prepareStatement(sql);
            ps.setString(1,user.getUsername());
            ps.setString(2,user.getPassword());
            ps.setString(3,user.getGender());
            ps.setInt(4,user.getAge());
            ps.setString(5,user.getAddress());
            ps.setString(6,user.getHobbies());
            ps.setString(7,user.getRemark());
            i = ps.executeUpdate();
            return i;

        } catch (SQLException e) {
            e.printStackTrace();
        }
        DBUtils.closeDB(conn,ps,null);
        return i;
    }

utils:建一个DBUtil

import java.sql.*;
import java.util.Properties;

/**
 * 封装对数据库的连接等
 */
public class DBUtils {
    //获得数据库连接
    //拷贝数据库的连接相关的jar包
    public static Connection getConnection(){//要获得配置信息
        Properties properties = ReadFileDemo2.readFile("File/db.properties");
        String driver = (String)properties.get("driver");
        String url = (String)properties.get("url");
        String user = (String)properties.get("user");
        String password = (String)properties.get("password");

        try {

            Class.forName(driver);
            Connection connection=DriverManager.getConnection(url,user,password);
            return  connection;
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
    //关闭数据库连接
    public  static void closeDB(Connection conn, PreparedStatement ps, ResultSet rs){
        //关闭资源要倒叙关闭
        //不要因为关闭一个资源出现异常影响到其他的资源关闭
        if (rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if (ps!=null){
            try {
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if (conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    }

}

还有两个新添加的前端界面,分别是registerSuccess.jsp,registerfail.jsp,index01.jsp如下:

<%--
  Created by IntelliJ IDEA.
  User: ASUS
  Date: 2023/9/21
  Time: 10:30
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>注册成功</h1><a href="login2.jsp">返回</a>
</body>
</html>
<%--
  Created by IntelliJ IDEA.
  User: ASUS
  Date: 2023/9/21
  Time: 10:13
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>注册失败</h1><a href="register.jsp">返回</a>
</body>
</html>
<%--
  Created by IntelliJ IDEA.
  User: ASUS
  Date: 2023/9/19
  Time: 8:50
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
   <!-- jsp就是可以在网页中写入java脚本
    脚本分为两种一是客户端脚本二是服务器端脚本!-->

    恭喜<span style="color: pink"><%=request.getParameter("username")%></span>登录成功 Welcome to javaweb!
</body>
</html>
四、页面展示
1、注册

java编程实现登录注册并连接数据库,数据库,tomcat,java,idea

2、登录

java编程实现登录注册并连接数据库,数据库,tomcat,java,idea

3、登录成功

java编程实现登录注册并连接数据库,数据库,tomcat,java,idea文章来源地址https://www.toymoban.com/news/detail-806005.html

到了这里,关于JavaWeb实现简易的注册登录功能(与数据库连接)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java连接数据库实现登录与注册小功能(小白版)

    准备工作: 创建数据库stu;        create database stu charset=utf8; 使用数据库stu;            use stu; 创建用户表user(id,username,password,nick) create table user(id int primary key auto_increment,username varchar(50),password varchar(50),nick varchar(50));   1.开始创建springboot工程,勾选Web-spring Web,  SQL-MyBatis Frame

    2024年02月08日
    浏览(17)
  • Unity3D实现MySql数据库登录与注册功能

    1、界面布局如下: 2、界面控件 1、封装MySql 2、编写登录、注册功能脚本 挂载LoginPanel脚本,并将控件映射到公共属性如下: 有问题请指出,谢谢!

    2024年02月11日
    浏览(12)
  • (代码注释超详细)JavaWeb连接Mysql数据库完成登录注册业务

    登录:完成连接数据库判断登陆信息是否有误 注册:将信息填写完毕后点击注册,跳转到登陆页面 主页:展示项目信息并且可以在页面内进行增删改操作 完整文件目录如下: 文件目录: bean包中填写的代码为实体类 dao模型就是写一个类,把访问数据库的代码封装起来 serv

    2023年04月22日
    浏览(41)
  • JavaWeb项目----实现用户登录、注册、对商品信息进行的添加、删除、修改功能

    在idea中创建有关类   web中写jsp页面,index.jsp是首页布局 运行效果如下:  登录页面 运行效果如下:   注册页面  运行效果如下:   登陆正确时跳转到zhuye.jsp主页页面( 使用Java脚本获取集合中对象的元素,放html标签中) 运行效果如下:   在登陆页面,密码或用户名输入

    2024年02月11日
    浏览(11)
  • 手把手教你实现:Android注册登录功能,通过本地服务器保存用户账号密码到数据库

    代码我放到文章最后面了 首先你需要电脑一台:如果没有电脑将会很难办呢 -----沃兹基硕德 下载并安装以下开发工具 Android Studio 官网最新版 用来开发 安卓App IntelliJ IDEA 官网最新版 用来开发 后端 ,处理安卓APP的请求 Navicat for MySql 官网最新版 数据库可视化工具,用来查看数

    2024年01月16日
    浏览(15)
  • Qt 数据库的注册和登录功能

    widget.h widget.cpp  client.h client.cpp  main函数 窗口设计部分 最终效果图:

    2024年02月07日
    浏览(16)
  • JavaWeb登录注册系统/界面(邮箱验证码,数据库连接,详细注释,可作结课作业,可用于学习,可接入其他主系统)

    目录 1、致谢 2、前言 3、系统实机演示 4、系统分析与设计 (1)主要软件与工具 (2)系统分析 (3)系统规划 5、系统设计与构建 (1)JavaWeb创建 (2)JavaWeb运行 (3)先期依赖准备: 6、代码与关键注释、文件简析 (1)数据库 (2)前端 index.jsp和styleIndex.css: forgetPassword

    2024年02月08日
    浏览(21)
  • 根据Java Web 使用Servlet +Mysql 实现简易的登录及注册功能以及项目间的分层

    1、概述         一个好的层次划分不仅可以能使代码结构更加清楚,还可以使项目分工更加明确,可读性大大提升,跟回家有利于后期的维护和升级。从另一个角度来看,好的代码分层架构,应该使可以很好的匹配上单一职责原则的。这样就可以降低层与层之间的依赖,

    2024年02月05日
    浏览(15)
  • Node.js连接数据库 实现注册、登录、判断注册

    Node.js连接数据库实现注册,登录,在登录时检测账号是否进行注册。 此创建文件夹可以不是使用Vue-cli进行创建,只是简单创建文件夹便可。 使用npm进行mysql插件的安装,cmd黑窗口运行下列指令 此指令运行完成,文件夹根目录出现 node_modules 文件 黑窗口运行 npm init 指令,出现

    2024年02月09日
    浏览(18)
  • JavaWeb05(删除&增加&修改功能实现&连接数据库)

    目录 一.实现删除功能 1.1 url如何传参? xx.do?参数=参数值参数名=参数值 1.2 servlet如何拿对应值? //根据参数名拿到对应的参数值  String str = req.getParameter(\\\"参数名\\\") 1.3 如何询问? οnclick=\\\"return confirm(\\\'确定要删除嘛?\\\')\\\" 1.4 代码分析 1.4.1 前端传参 删除  1.4.2 后台业务处理 二.实

    2024年02月02日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包