当前位置: 首页 > news >正文

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、数据库编程有更深入的理解,并掌握如何使用它们实现复杂的业务逻辑。

相关文章:

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

文章目录 一、使用纯JSP方式实现用户登录功能&#xff08;一&#xff09;项目概述&#xff08;二&#xff09;实现步骤1、创建Web项目2、创建登录页面 二、使用JSPServlet方式实现用户登录功能三、使用JSPServletDB方式实现用户登录功能 一、使用纯JSP方式实现用户登录功能 &a…...

Excel——多列合并成一列的4种方法

Excel怎么将多列内容合并成一列&#xff1f; 怎么将多个单元格的内容连接起来放在一个单元格里&#xff1f; 比如下图&#xff0c;要将B、C、D列的内容&#xff0c;合并成E列那样&#xff0c;该怎么做呢&#xff1f; △图1 本文中&#xff0c;高潜老师将给大家介绍 4种 将多…...

Vue笔记(四)路由

路由&#xff08;Vue Router&#xff09; 用Vue Vue Router创建单页面应用非常简单。当加入Vue Router时&#xff0c;需要将组件映射到路由上&#xff0c;让Vue知道在哪里渲染它们。 路由基本例子 <!-- 引入Vue 和 router --><script src"https://unpkg.com/vu…...

Redis部署-哨兵模式

目录 redis sentinel相关名词 redis sentinel架构 故障转移流程 基于docker搭建redis哨兵 准备工作 搭建过程 模拟主节点宕机,观察哨兵节点的工作流程 哨兵重新选取主节点的流程 1.主观下线 2.客观下线 3.哨兵节点推举出一个leader节点 4.leader选举完毕,leader挑选…...

滑动窗口练习(三)— 加油站问题

题目 测试链接 在一条环路上有 n 个加油站&#xff0c;其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车&#xff0c;从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发&#xff0c;开始时油箱为空。 给定两个整数数组…...

udemy angular decoration 自存

番外 为什么一个ts文件变成了component,因为它使用了components装饰器 components is just a class,you export it so angular know how to use it 举例&#xff1a;组件装饰器 decoration前总是有一个符号 decoration的作用&#xff08;之一&#xff1f;&#xff09; NgModu…...

msvcr90.dll丢失的解决方法分享,5个快速修复dll文件丢失教程

在今天的电脑使用过程中&#xff0c;我们可能会遇到各种各样的问题。其中之一就是msvcr90.dll丢失的问题。那么&#xff0c;msvcr90.dll是什么&#xff1f;msvcr90.dll丢失对电脑有什么影响&#xff1f;又该如何解决这个问题呢&#xff1f;接下来&#xff0c;我将为大家详细介绍…...

海外媒体发稿:软文发稿推广技巧解析超级实用-华媒舍

随着互联网时代的发展&#xff0c;软文发稿成为推广产品与服务的重要手段之一。本文将向大家介绍软文发稿推广的技巧&#xff0c;帮助您更好地利用软文推广商业活动。无论是拥有自己的品牌还是个人创业者&#xff0c;都可以从中受益。 1. 什么是软文&#xff1f; 软文是指以文…...

vm net 方式 静态ip配置访问主机IP和外网

1、win 11 安装vm&#xff0c;镜像文件 F:\software\VMwork\CentOS-7-x86_64-Everything-1804.iso 2、配置网络 net 方式 3、右击网络--》属性---》更改适配器设置--》vmnet8 属性、这里不做配置会出现主机ping通访问不通的情况&#xff0c;&#xff08;访问不通&#xff0c;…...

Vue笔记(二)基本语法

基本语法 <style> table {border-collapse: collapse;margin:0 auto; } strong {color: rgb(235, 51, 100); }td, th {padding-left: 6px; } table tr td:first-child {width:150px } table tr td:nth-child(2) {width:300px } </style> <template><tabl…...

前端面试提问(4)

1、手撕防抖与节流、树与对象的转换、递归调用&#xff0c;链表头插法 1.1、防抖 防抖函数用于延迟执行某个函数&#xff0c;直到过了一定的间隔时间&#xff08;例如等待用户停止输入&#xff09;后再执行。 即后一次点击事件发生时间距离一次点击事件至少间隔一定时间。 …...

基于BEV+Transformer的地面要素感知+建模技术在高德的应用

导读 本文将主要介绍BEVTransformer端到端感知与建模技术在高德各项业务中的应用&#xff0c;如高精地图中地面要素&#xff08;包含线要素和地面标识&#xff09;自动化上的具体方案及其演化过程。该方案使用BEVTransformer技术来实现采集车上不同传感器&#xff08;包含激光和…...

了解c++11中的新增

一&#xff0c;统一的初始化列表 在引入c11后&#xff0c;我们得出计划都可以用初始化列表进行初始化。 C11 扩大了用大括号括起的列表 ( 初始化列表 ) 的使用范围&#xff0c;使其可用于所有的内置类型和用户自 定义的类型&#xff0c; 使用初始化列表时&#xff0c;可添加等…...

104. 二叉树的最大深度(Java)

目录 解法&#xff1a; 官方解答&#xff1a; 方法一&#xff1a;深度优先搜索 方法二&#xff1a;广度优先搜索 思路与算法 复杂度分析 时间复杂度&#xff1a; 空间复杂度&#xff1a; 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根…...

SpringSecurity6 | 自定义认证规则

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; Java从入门到精通 ✨特色专栏&#xf…...

浅析安科瑞电动机保护器在广州某地铁项目的设计与应用-安科瑞 蒋静

1 摘要 随着城市的发展&#xff0c;较多城市的轨道交通选择修建地下式车辆段&#xff08;或停车场&#xff09;&#xff0c;即车辆段&#xff08;或停车场&#xff09;位于地下或设置有上盖&#xff08;上盖上再做物业开发&#xff09;。为了给工作人员提供良好的工作环境、给…...

LeetCode 2048. 下一个更大的数值平衡数

【LetMeFly】2048.下一个更大的数值平衡数 力扣题目链接&#xff1a;https://leetcode.cn/problems/next-greater-numerically-balanced-number/ 如果整数 x 满足&#xff1a;对于每个数位 d &#xff0c;这个数位 恰好 在 x 中出现 d 次。那么整数 x 就是一个 数值平衡数 。…...

多线程(初阶七:阻塞队列和生产者消费者模型)

目录 一、阻塞队列的简单介绍 二、生产者消费者模型 1、举个栗子&#xff1a; 2、引入生产者消费者模型的意义&#xff1a; &#xff08;1&#xff09;解耦合 &#xff08;2&#xff09;削峰填谷 三、模拟实现阻塞队列 1、阻塞队列的简单介绍 2、实现阻塞队列 &#…...

区间价值 --- 题解--动态规划

目录 区间价值 题目描述 输入描述: 输出描述: 输入 输出 备注: 思路&#xff1a; 代码&#xff1a; 区间价值 J-区间价值_牛客竞赛动态规划专题班习题课 (nowcoder.com) 时间限制&#xff1a;C/C 2秒&#xff0c;其他语言4秒 空间限制&#xff1a;C/C 262144K&…...

计算机毕业设计 基于大数据的心脏病患者数据分析管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...