Java Web用户登录实例代码

下面我将为你详细讲解如何实现一个Java Web的用户登录实例代码。

首先,我们需要明确实现这个功能所需要用到的技术和工具,大致包括以下几点:

  • Java语言基础
  • Java Web开发技术:包括Servlet、JSP、JSTL等
  • 数据库技术:使用MySQL或其他数据库管理系统
  • 数据库连接技术:使用JDBC连接数据库
  • Web服务器:本示例将使用Tomcat

接下来,我将分为以下几个步骤来详细介绍每个步骤的实现过程。

1. 创建数据库

首先,我们需要创建一个MySQL数据库来存储用户的登录信息。我们可以使用如下的SQL语句来创建表格:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(64) NOT NULL,
  `password` varchar(64) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2. 编写JavaBean

接下来,我们需要编写一个JavaBean来表示用户模型,其中包含username和password两个属性,分别对应用户的用户名和密码。代码如下所示:

public class User {
    private String username;
    private String password;
    // getter and setter methods
}

3. 编写数据库连接代码

接下来我们需要使用JDBC来连接MySQL数据库,并实现查询和插入等操作。这里我们需要用到以下几个类:

  • DriverManager类:用于管理JDBC驱动并连接数据库
  • Connection类:表示一个JDBC数据库连接
  • Statement类:表示一个基本的SQL语句执行对象
  • PreparedStatement类:表示一个预编译的SQL语句执行对象,可以防止SQL注入攻击
  • ResultSet类:表示一个结果集,封装了查询结果

下面是示例代码:

public class DBUtil {
    public static Connection getConnection() throws SQLException {
        String url = "jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=UTF-8&useSSL=false";
        String username = "root";
        String password = "123456";
        return DriverManager.getConnection(url, username, password);
    }

    public static void close(Statement stmt, Connection conn) throws SQLException {
        if (stmt != null) {
            stmt.close();
        }
        if (conn != null) {
            conn.close();
        }
    }

    public static void close(ResultSet rs, Statement stmt, Connection conn) throws SQLException {
        if (rs != null) {
            rs.close();
        }
        if (stmt != null) {
            stmt.close();
        }
        if (conn != null) {
            conn.close();
        }
    }
}

4. 编写Servlet

现在我们可以编写一个Servlet来处理用户的登录请求。这里我们需要用到以下几个类:

  • HttpServletRequest类:表示HTTP请求,从中可以获得提交的表单数据等信息
  • HttpServletResponse类:表示HTTP响应,可以向客户端写入数据、设置响应头等
  • RequestDispatcher类:用于在服务器端转发请求和响应

代码如下所示:

public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.getRequestDispatcher("/WEB-INF/view/login.jsp").forward(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        User user = new User();
        user.setUsername(username);
        user.setPassword(password);

        boolean success = checkUser(user);

        if (success) {
            // 用户名和密码验证通过,将用户信息保存到Session中,并跳转到成功页面
            request.getSession().setAttribute("user", user);
            request.getRequestDispatcher("/WEB-INF/view/success.jsp").forward(request, response);
        } else {
            // 用户名和密码验证失败,返回错误信息并跳转到登录页面
            String message = "用户名或密码错误,请重新输入!";
            request.setAttribute("message", message);
            request.getRequestDispatcher("/WEB-INF/view/login.jsp").forward(request, response);
        }
    }

    private boolean checkUser(User user) {
        Connection conn = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;

        try {
            conn = DBUtil.getConnection();
            String sql = "SELECT * FROM user WHERE username=? AND password=?";
            stmt = conn.prepareStatement(sql);
            stmt.setString(1, user.getUsername());
            stmt.setString(2, user.getPassword());
            rs = stmt.executeQuery();
            return rs.next();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                DBUtil.close(rs, stmt, conn);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return false;
    }
}

在doGet方法中,我们跳转到登录页面,让用户输入用户名和密码。在doPost方法中,我们接收用户提交的用户名和密码,并用checkUser方法查询数据库验证用户名和密码是否正确。如果验证通过,我们将用户信息保存到Session中,并跳转到成功页面;否则,我们返回错误信息并跳转到登录页面。

5. 编写JSP页面

最后,我们需要编写两个JSP页面:一个是登录页面,另一个是成功页面。其中,登录页面包含一个表单,用户可以在表单中输入用户名和密码,并将表单数据提交到Servlet中;成功页面则显示欢迎用户登录成功的信息,并提供退出登录的链接。代码如下所示:

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>用户登录页面</title>
</head>
<body>
<h2>用户登录页面</h2>
<% String message = (String) request.getAttribute("message"); %>
<% if (message != null) { %>
    <div style="color:red;"><%= message %></div>
<% } %>
<form action="${pageContext.request.contextPath}/login" method="post">
    用户名:<input type="text" name="username"/><br/>
    密码:<input type="password" name="password"/><br/>
    <input type="submit" value="登录"/>
</form>
</body>
</html>

success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>欢迎页面</title>
</head>
<body>
<h2>欢迎您,${user.username}!</h2>
<a href="${pageContext.request.contextPath}/logout">退出登录</a>
</body>
</html>

至此,我们就完成了Java Web用户登录实例代码的完整攻略,包含了创建数据库、编写JavaBean、编写数据库连接代码、编写Servlet和JSP页面等内容。接下来,我将为你展示两个示例:

示例1

假设我们的用户名和密码如下:

username: alice
password: 123456

当我们在登录页面中输入这些信息并点击“登录”按钮时,我们将会被跳转到成功页面,并看到如下的欢迎信息:

欢迎您,alice!

并且我们可以点击“退出登录”链接来退出当前登录状态。

示例2

假设我们输入的用户名和密码不正确,当我们点击“登录”按钮时,我们将会看到如下的错误信息:

用户名或密码错误,请重新输入!

同时,我们还会被重定向到登录页面,重新输入正确的用户名和密码即可重新登录。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Web用户登录实例代码 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java如何设置系统参数和运行参数

    设置系统参数和运行参数可以帮助Java应用程序更好地运行。以下是Java如何设置系统参数和运行参数的完整攻略: 设置系统参数 可以使用System.setProperty()方法设置系统参数。这个方法接受两个String类型的参数,第一个参数是属性名,第二个参数是属性值。例如,下面的代码段将JVM的代理服务器设置为127.0.0.1: System.setP…

    Java 2023年5月23日
    00
  • Java多线程实例

    Java多线程实例攻略 Java多线程是Java的一大特性,它可以使程序在运行时同时执行多个任务,提高了程序的效率。在本篇文章中,我们将讲述Java多线程的实例及使用方法,包含以下主题: Java多线程基本概念 Java多线程创建方式 Java多线程共享变量及协调执行 多线程应用——生产者和消费者模型 1. Java多线程基本概念 在Java中,一个程序可以…

    Java 2023年5月30日
    00
  • java Timer 定时每天凌晨1点执行任务

    Java Timer是Java中的一个计时器工具,可以用来在特定时间间隔内执行指定任务。下面是Java Timer实现每天凌晨1点执行任务的攻略: 步骤一:创建Timer对象 在Java中,我们需要使用java.util.Timer类来创建一个计时器对象。首先,需要导入java.util.Timer和java.util.TimerTask这两个包。 impo…

    Java 2023年5月20日
    00
  • Java 实战图书管理系统的实现流程

    Java 实战图书管理系统实现流程 本文将给出一个详细的Java 实战图书管理系统实现流程。我们将按照以下五步走进行: 1. 规划 首先我们需要规划我们的图书管理系统将包含哪些功能,这样我们才能更好的开始开发我们的应用程序。我们的规划包括以下几点: 实现基本的图书信息管理功能 包括添加、修改、删除、查询等功能 图书信息应该能方便地导出为Excel文件 实现图…

    Java 2023年5月24日
    00
  • Java Scala之面向对象

    Java Scala之面向对象:完整攻略 什么是面向对象 面向对象(Object Oriented Programming,简称OOP)是一种编程范式,主要思想是将数据和对数据的相关操作封装在一个单元中,形成对象。通过对对象的定义、组合和继承等机制实现程序的可扩展性、灵活性和可维护性。 面向对象的三大特征 封装(Encapsulation) 封装就是将程序中…

    Java 2023年5月26日
    00
  • Java的Struts框架报错“RequestProcessorException”的原因与解决办法

    当使用Java的Struts框架时,可能会遇到“RequestProcessorException”错误。这个错误通常由以下原因之一起: Action 不存在:如果请求的Action不存在,则可能会出现此错误。在这种情况下,需要检查Action是否存在以解决此问题。 配置错误:如果配置文件中没有正确配置,则可能会出现此错误。在这种情况下,需要检查文件以解决此…

    Java 2023年5月5日
    00
  • JavaWeb实现mysql数据库数据的添加和删除

    下面是“JavaWeb实现mysql数据库数据的添加和删除”的完整攻略。 简介 JavaWeb是一个基于Java语言的Web开发框架,可以使用Java语言轻松实现Web应用的开发。而mysql是一种开源的关系型数据库管理系统,目前非常受欢迎。本文将详细介绍如何使用JavaWeb实现mysql数据库数据的添加和删除。 准备工作 JDK(Java Develop…

    Java 2023年5月19日
    00
  • Java多线程编程实战之模拟大量数据同步

    Java多线程编程实战之模拟大量数据同步 问题描述 在实际的应用场景中,经常遇到需要将大量数据进行同步的情况,这时候使用单线程去同步数据,效率非常低下,因此需要使用多线程技术来提高数据同步的效率。本篇攻略将介绍如何使用Java多线程技术来模拟大量数据同步的场景。 实现方案 多线程同步数据的基本思路 在多线程同步数据的场景中,我们可以通过开启多个线程,每个线程…

    Java 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部