Java Web应用小案例 - 实现用户登录功能

文章目录

  • 一、使用纯JSP方式实现用户登录功能
    • (一)项目概述
    • (二)实现步骤
      • 1、创建Web项目
      • 2、创建登录页面
  • 二、使用JSP+Servlet方式实现用户登录功能
  • 三、使用JSP+Servlet+DB方式实现用户登录功能

一、使用纯JSP方式实现用户登录功能

(一)项目概述

今天我们将一起学习如何使用纯JSP方式实现用户登录功能。在这个过程中,我们会通过四个主要步骤来完成这个任务:创建Web项目、创建登录页面、创建登录处理页面以及创建登录成功和失败页面。

(二)实现步骤

1、创建Web项目

  • 创建Jakarta EE项目,要设置项目名称 - LoginDemo01,保存位置 - D:\WebProjects,选择模板 - Web application,设置应用服务器 - Tomcat 10.1.16,语言 - Java,构建系统 - Maven,组 - net.huawei、构件 - LoginDemo01,JDK - 21
    在这里插入图片描述
  • 单击【Next】按钮,选择版本 - Jakarta EE 10,添加依赖 - Servlet
    在这里插入图片描述
  • 单击【Create】按钮完成项目的创建
    在这里插入图片描述
  • 在项目结构窗口里,修改构件名 - 将LoginDemo01:war exploded改成LoginDemo01,与项目名保持一致
    在这里插入图片描述
  • 要编辑服务器配置,重新部署项目
    在这里插入图片描述
  • 切换到【Server】选项卡,URL已经自动变成http://localhost:8080/LoginDemo01/
    在这里插入图片描述
  • 启动服务器,查看效果
    在这里插入图片描述
  • 单击【Hello Servlet】超链接
    在这里插入图片描述

2、创建登录页面

  • 接下来,我们开始创建登录页面。登录页面是用户输入用户名和密码的地方,我们将其命名为login.html。在这个页面中,我们使用HTML代码创建一个表单,包含了账号和密码两个输入框,以及登录和重置两个按钮,为了登录页面美观,我们需要一个外部样式表styles.css
  • 创建login.html页面
    在这里插入图片描述
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Login Page</title><link rel="stylesheet" href="css/styles.css">
</head>
<body>
<div class="container"><h1>用户登录</h1><form action="/doLogin.jsp" method="POST"><input type="text" id="username" name="username" required placeholder="请输入用户名"><input type="password" id="password" name="password" required placeholder="请输入密码"><button type="submit">登录</button><button type="reset">重置</button></form>
</div>
</body>
</html>
  • 说明:单击【登录】按钮,用户提交的数据交给doLogin.jsp页面来处理

  • 创建styles.css文件
    在这里插入图片描述

* {margin: 0;padding: 0;box-sizing: border-box;
}body {font-family: Arial, sans-serif;background-color: #f5f5f5;
}.container {max-width: 400px;margin: 50px auto;background-color: #ffffff;padding: 20px;border-radius: 5px;box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
}h1 {text-align: center;
}form {display: flex;flex-direction: column;
}label {margin-top: 10px;
}input[type="text"],
input[type="password"] {width: 100%;padding: 8px;margin-top: 5px;border: 1px solid #ccc;border-radius: 3px;
}button {width: 100%;padding: 10px;margin-top: 10px;background-color: #4CAF50;color: white;border: none;border-radius: 3px;cursor: pointer;
}button:hover {background-color: #45a049;
}button[type="reset"] {background-color: #f44336;
}button[type="reset"]:hover {background-color: #d32f2f;
}
  • 启动服务器,查看登录页面效果
    在这里插入图片描述

然后,我们需要创建登录处理页面。登录处理页面是负责处理用户登录请求的地方,我们将其命名为doLogin.jsp。在这个页面中,我们使用JSP代码获取用户输入的用户名和密码,然后判断登录是否成功。如果登录成功,我们就跳转到登录成功页面;否则,我们就跳转到登录失败页面。

接着,我们需要创建登录成功和失败页面。这两个页面分别显示登录成功和失败的信息,我们将其命名为success.jspfailure.jsp。在这两个页面中,我们都使用HTML和JSP代码显示用户登录的结果。

最后,我们需要编辑项目首页。项目首页是用户访问的第一个页面,我们将其命名为index.jsp。在这个页面中,我们使用HTML代码创建了一个超链接,用户可以通过这个超链接跳转到登录页面。

现在,让我们来测试一下我们的程序。启动服务器后,我们会看到首页显示了“纯JSP方式实现用户登录功能”的标题,以及一个可以跳转到登录页面的超链接。当我们点击这个超链接时,就会跳转到登录页面。在登录页面中,我们可以输入用户名和密码,然后点击登录按钮。如果我们输入的是正确的用户名和密码,就会跳转到登录成功页面;否则,就会跳转到登录失败页面。

这就是我们如何使用纯JSP方式实现用户登录功能的过程。希望大家能够通过这次学习,对JSP编程有更深入的理解,并掌握如何使用JSP实现简单的业务逻辑。谢谢大家!

二、使用JSP+Servlet方式实现用户登录功能

大家好!今天我们将一起学习如何使用JSP+Servlet方式实现用户登录功能。在这个过程中,我们会通过五个主要步骤来完成这个任务:创建Web项目、创建登录页面、创建登录处理程序、创建登录成功和失败页面以及编辑项目首页。

首先,我们需要创建一个Java Enterprise项目,并添加Web Application功能。接下来,我们要设置项目的名称和保存位置。然后,我们单击【Finish】按钮完成项目的创建。在项目结构窗口里,我们需要修改Artifact名 - LoginDemo02。最后,我们要编辑服务器配置,重新部署项目。

接下来,我们开始创建登录页面。登录页面是用户输入用户名和密码的地方,我们将其命名为login.jsp。在这个页面中,我们使用HTML代码创建了一个表格,包含了账号和密码两个输入框,以及登录和重置两个按钮。

然后,我们需要创建登录处理程序。登录处理程序是负责处理用户登录请求的地方,我们将其命名为LoginServlet。在这个程序中,我们使用Servlet代码获取用户输入的用户名和密码,然后判断登录是否成功。如果登录成功,我们就跳转到登录成功页面;否则,我们就跳转到登录失败页面。

接着,我们需要创建登录成功和失败页面。这两个页面分别显示登录成功和失败的信息,我们将其命名为success.jsp和failure.jsp。在这两个页面中,我们都使用HTML和JSP代码显示用户登录的结果。

最后,我们需要编辑项目首页。项目首页是用户访问的第一个页面,我们将其命名为index.jsp。在这个页面中,我们使用HTML代码创建了一个超链接,用户可以通过这个超链接跳转到登录页面。

现在,让我们来测试一下我们的程序。启动服务器后,我们会看到首页显示了“JSP+Servlet方式实现用户登录功能”的标题,以及一个可以跳转到登录页面的超链接。当我们点击这个超链接时,就会跳转到登录页面。在登录页面中,我们可以输入用户名和密码,然后点击登录按钮。如果我们输入的是正确的用户名和密码,就会跳转到登录成功页面;否则,就会跳转到登录失败页面。

这就是我们如何使用JSP+Servlet方式实现用户登录功能的过程。希望大家能够通过这次学习,对JSP和Servlet编程有更深入的理解,并掌握如何使用它们实现简单的业务逻辑。

三、使用JSP+Servlet+DB方式实现用户登录功能

大家好!今天我们将一起学习如何使用JSP+Servlet+DB方式实现用户登录功能。在这个过程中,我们会通过九个主要步骤来完成这个任务:创建数据库、创建用户表、创建Web项目、创建用户实体类、添加数据库驱动程序、创建数据库连接管理工具类、创建用户数据访问类、测试用户数据访问类以及创建用户服务类。

首先,我们需要创建一个名为test的数据库,并在其中创建一个名为t_user的用户表。这个表包含用户的ID、用户名、密码、联系电话和注册时间等字段。我们还需要在这个表中插入一些用户记录,以便我们在后续的测试中使用。

接下来,我们需要创建一个Java Enterprise项目,并添加Web Application功能。在这个项目中,我们需要创建一个名为login.jsp的登录页面,用于让用户输入用户名和密码。然后,我们需要创建一个名为LoginServlet的登录处理程序,用于处理用户登录请求。在这个处理程序中,我们需要调用服务层的方法,以查询数据库中的用户信息并判断登录是否成功。如果登录成功,我们就跳转到登录成功页面;否则,我们就跳转到登录失败页面。

为了实现服务层的功能,我们需要创建一个名为UserService的服务类。在这个类中,我们需要定义一个名为login的方法,用于查询数据库中的用户信息并返回结果。此外,我们还需要创建一个名为UserDao的数据访问类,用于执行SQL查询语句并获取结果。

为了实现数据访问层的功能,我们需要创建一个名为ConnectionManager的数据库连接管理工具类。在这个类中,我们需要定义一个名为getConnection的方法,用于获取数据库连接。同时,我们还需要定义一个名为closeConnection的方法,用于关闭数据库连接。

最后,我们需要在项目中添加数据库驱动程序,并创建一个名为User的用户实体类,用于封装用户信息。我们还需要创建一个名为TestUserDao的测试类,用于测试用户数据访问类的功能。

同时,我们还创建了一个UserService接口和它的实现类UserServiceImpl,该服务类包含了获取用户、登录以及查询所有用户的方法。

为了处理用户的登录请求,我们在net.huawei.servlet包下创建了一个LoginServlet类。这个类继承了HttpServlet类,并重写了doPost方法。在doPost方法中,我们从请求对象中获取用户名和密码,然后调用UserService的login方法进行登录验证。如果登录成功,我们就跳转到登录成功的页面;否则,跳转到登录失败的页面。

此外,我们还需要创建三个JSP页面:登录页面(login.jsp)、登录成功页面(success.jsp)和登录失败页面(failure.jsp)。这三个页面分别用于展示登录表单、登录成功提示和登录失败提示。

最后,我们修改项目的首页index.jsp,添加一个链接到登录页面。

现在,让我们来测试一下我们的程序。启动服务器后,我们会看到登录页面显示了用户名和密码的输入框。当我们输入正确的用户名和密码时,就会跳转到登录成功页面;否则,就会跳转到登录失败页面。

这就是我们如何使用JSP+Servlet+DB方式实现用户登录功能的过程。希望大家能够通过这次学习,对JSP、Servlet、数据库编程有更深入的理解,并掌握如何使用它们实现复杂的业务逻辑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/208774.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu22.04安装 nvidia-cudnn

nvidia-cudnn 是 NVIDIA CUDA 深度神经网络库&#xff08;CUDA Deep Neural Network library&#xff09;的缩写。这是一个由 NVIDIA 提供的库&#xff0c;用于加速深度学习应用程序。它包含了针对深度神经网络中常用操作&#xff08;如卷积、池化、归一化、激活层等&#xff0…

【工具】机器之间传输文件的常用方式

0、背景 QA的工作工程中,在不同服务器或者本地机器与服务器之间进行文件或目录的上传或者下载是非常普遍的场景,为此本文将常用的好用的工具一并做个总结,大家有其他的利器也欢迎评论区留言。 1、 scp命令 这是平常使用最多的命令,可以在相互连通的服务之间拷贝文件。命…

【Linux】如何清空某个文件的内容

cat /dev/null > file1 清空某个文件的内容使用cat /dev/null > file1&#xff0c;它将 /dev/null 的内容&#xff08;空内容&#xff09;重定向到 file1。 如下所示&#xff0c;file1文件里的内容被清空。 错误写法 错误写法是&#xff1a;cat file1 > /dev/null&…

linuxc语udp发送程序

以下是一个基于UDP通信的C程序&#xff0c;用于发送含有指定格式的数据包。该程序把数据分成若干个包&#xff0c;每个包包含4字节数据包头数据长度数据内容&#xff0c;每个包最大8192字节。 #include <stdio.h> #include <stdlib.h> #include <string.h> …

华为OD机试真题-小明找位置-2023年OD统一考试(C卷)

题目描述&#xff1a; 小朋友出操&#xff0c;按学号从小到大排成一列&#xff1b;小明来迟了&#xff0c;请你给小明出个主意&#xff0c;让他尽快找到他应该排的位置。 算法复杂度要求不高于nLog(n)&#xff1b;学号为整数类型&#xff0c;队列规模<10000&#xff1b; 输…

持续集成交付CICD:CentOS 7 安装 Nexus 3.63

目录 一、实验 1.CentOS 7 安装Nexus3.63 二、问题 1.安装Nexus报错 2.Nexus启动停止相关命令 一、实验 1.CentOS 7 安装Nexus3.63 &#xff08;1&#xff09;当前操作系统版本&JDK版本 cat /etc/redhat-releasejava -version&#xff08;2&#xff09;下载Nexus新…

蓝桥杯 java基础

1. AB问题I 时间限制&#xff1a;2.000S 空间限制&#xff1a;32MB 题目描述 你的任务是计算ab。 输入描述 输入包含一系列的a和b对&#xff0c;通过空格隔开。一对a和b占一行。 输出描述 对于输入的每对a和b&#xff0c;你需要依次输出a、b的和。 如对于输入中的第二…

面试经典150题(5-7)

leetcode 150道题 计划花两个月时候刷完&#xff0c;今天&#xff08;第二天&#xff09;完成了两道(5-7)150&#xff1a; (169. 多数元素) 题目描述&#xff1a; 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋…

int 和 Integer 有什么区别,还有 Integer 缓存的实现

✨前言✨   Java本文主要介绍Java int 和 Integer的区别以及Integer 缓存的实现 &#x1f352;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f352;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评论区留言 文章目…

用C++实现队列顺序结构的基本操作

//队列顺序结构的基本操作&#xff1a; #include"stdio.h" #include"String" #define QueueSize 100 typedef char ElemType; typedef struct { ElemType data[QueueSize]; /*保存队中元素*/int front,rear; /*队头和队尾指针*/ } SqQueue; void Init…

使用STM32定时器实现精确的时间测量和延时

✅作者简介&#xff1a;热爱科研的嵌入式开发者&#xff0c;修心和技术同步精进&#xff0c; 代码获取、问题探讨及文章转载可私信。 ☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。 &#x1f34e;获取更多嵌入式资料可点击链接进群领取&#xff0c;谢谢支持&#xff01;…

stm32Flash操作

//G0B0 flash大小 0x08000000-0x0807FFFF 512K(0400 1K)//2k 1页 //初始化标记数据地址 放最前面 脱机烧写器可擦除掉 #define CONST_INITMARKDATA_ADDRESS (0x0807D000UL) //2k 1页 //射频数据地址 #define CONST_FREQDATA_ADDRESS (0x0807F000UL) //2…

大数据技术4:Lambda和Kappa架构区别

前言&#xff1a;在大数据处理领域&#xff0c;两种突出的数据架构已成为处理大量数据的流行选择&#xff1a;Lambda 架构和 Kappa 架构。这些架构为实时处理和批处理提供了强大的技术解决方案&#xff0c;使组织能够从其数据中获得有价值的见解。随着互联网时代来临&#xff0…

Python VSCode 配置固定的脚本入口

Python VSCode 配置固定的脚本入口 打开或者新建一个启动配置 选择 .vscode目录下 launch.json文件 将 “program”: “${file}” 替换成 “program”: “mian.py”, //完成你自己的入口.py文件名即可 json启动配置文件 {// Use IntelliSense to learn about possible attrib…

4-redis高级-redis持久化(RDB 持久化方案、AOF持久化、RDB和AOF混合持久化)、redis主从复制

1 redis持久化 1.1 RDB 持久化方案 1.2 AOF持久化 1.3 混合持久化 2 redis主从复制 1 redis持久化 # 把redis数据从内存保存到硬盘上的过程称之为持久化# 所有的数据库&#xff0c;持久化方案快照&#xff1a;某时某刻数据的一个完成备份-mysql的Dump&#xff1a; mysqldump …

【ELK03】ES 索引的Mapping映射详解、数据类型和settings属性设置

一、ES 索引的映射和设置 1.MAPPING 映射(MAPPING)就是es中一个决定了文档如何存储,如何生成索引,字段各种类型定义的过程.类似于我们在关系型数据库中创建一个表格数据之前先定义表格有哪些字段,每个字段是什么类型,然后数据会按照这个配置写入表格,ES中同样是这个过程,它由…

数据结构:顺序表——相关习题2

【2018统考】给定一个含n个整数的数组&#xff0c;设计一个时间上尽可能高效的算法&#xff0c;找到数组中未出现的最小正整数。 void find_min_intnum(int A[],int n){int B[5*n]{0};int i;for (i 0; i < n; i){if(A[i]>0){B[A[i]];}}for(i1;i<5*n;i){if(B[i]0){pr…

面向对象中的单例模式

1、什么是设计模式 设计模式就是前人根据实际的问题提出的问题解决方案&#xff0c;我们把这种就称之为设计模式。 2、单例模式 单例模式是一种常见的设计模式&#xff01; 所谓的设计模式&#xff0c;不是一种新的语法&#xff0c;而是人们在实际的应用中&#xff0c;面对…

【银行测试】金融项目+测试方法范围分析,功能/接口/性能/安全...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、金融行业软件特…

3GPP标准查看、下载和几个UE相关系列标准

由于一直做终端侧协议。最近以UE为核心重新下载了一系列文档。 总结并举例一下分类标准。 如何查看3GPP标准列表 实际上在3GPP网站如下链接&#xff1a;Specifications by Series&#xff0c;每个系列以及分类都说的很清楚。 几个系列分类举例 和终端协议层工作比较关系密切…