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日

相关文章

  • spring boot(一)之入门篇

    下面是关于“springboot(一)之入门篇”的完整攻略,分为以下几个部分: 一、什么是Spring Boot? Spring Boot 是一个用来简化 Spring 应用的搭建和开发的框架,是Spring Framework的一个扩展。通过Spring Boot,可以快速创建一个独立、运行的 Spring 应用程序,并且可以以最小的配置开发 Spring…

    Java 2023年5月15日
    00
  • Tomcat安装配置及Eclipse配置详解

    Tomcat安装配置及Eclipse配置详解 Tomcat是一个Java Servlet容器,可运行Java的Web应用程序。本文将讲解如何在Windows系统中安装和配置Tomcat,并在Eclipse中建立与Tomcat的关联。 安装Tomcat 前往官方网站(http://tomcat.apache.org/)下载最新的Tomcat程序,选择与操作系统…

    Java 2023年5月19日
    00
  • Java中的UnChecked异常有哪些?

    Java中的异常分为Checked异常和Unchecked异常。其中,Checked异常需要在代码中进行显式处理或在方法签名中声明,而Unchecked异常则不需要。 Java中常见的Unchecked异常有以下几种: NullPointerException (空指针异常) 当尝试调用一个空对象的方法或访问空对象的属性时,会抛出NullPointerExc…

    Java 2023年4月27日
    00
  • PHP的SQL注入过程分析

    下面我将为您详细讲解PHP的SQL注入过程分析的完整攻略,包含以下几个部分: SQL注入的概念和危害 SQL注入攻击方式和示例说明 防范SQL注入的方法 1. SQL注入的概念和危害 SQL注入是一种通过在应用程序中注入SQL语句来达到欺骗数据库执行恶意操作的攻击手段,攻击者可以通过 SQL注入攻击窃取数据、修改数据或者破坏数据。 SQL注入的危害表现为:用…

    Java 2023年6月15日
    00
  • JSP在Linux下的安装

    以下是JSP在Linux下的安装攻略,基于Ubuntu 18.04系统,其他Linux系统可能存在细微差异。 安装Java 前往Oracle官网下载Java SE Development Kit(JDK),下载地址为:https://www.oracle.com/java/technologies/javase-downloads.html 下载完成后,将下…

    Java 2023年6月15日
    00
  • Java泛型的用法及T.class的获取过程解析

    Java泛型的用法及T.class的获取过程解析 什么是泛型 泛型是Java语言中的一个重要特性,它允许我们在类或方法中预先声明使用的类型,并在实例化时指定具体的类型,从而达到代码复用的效果。 例如,在传统的Java编程中,如果要编写一个通用的Stack类,可以存储各种类型的数据,可以这样写: public class Stack { private Obj…

    Java 2023年5月20日
    00
  • Spring Cloud 配置中心内容加密的配置方法

    下面是Spring Cloud中配置中心内容加密的配置方法的完整攻略。 1. 加密配置信息 首先,我们需要在配置中心中加密敏感信息,并把加密后的密文保存在Git仓库中,例如: spring.datasource.password={cipher}EncryptedPassword 其中,{cipher}指定了使用加密算法,EncryptedPassword是…

    Java 2023年5月20日
    00
  • 详细聊聊Spring MVC重定向与转发

    详细聊聊Spring MVC重定向与转发 在Spring MVC中,重定向和转发是两种常见的请求转发方式。本文将详细介绍Spring MVC中重定向和转发的概念、区别、使用方法以及示例。 重定向 重定向是指将请求重定向到另一个URL。在Spring MVC中,我们可以使用RedirectView或RedirectAttributes类来实现重定向。下面是实现…

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