网页数据库登录基本步骤

web连接数据库完成登录注册 阅读详情

思考逻辑:

1.布置登录网页,其中设置表单提交到servlet类,方式设置为post较好
2.servlet类获取请求体内容(参数内容)
3.设置数据库校验类 接收参数内容并进行校验
	1.使用JdbcTemplate简化开发细节,需要设置JavaBean实体类
	2.Druid数据库连接池工具类提供获取DataSource,Connection方法给JDBCTemplate类
	3.Druid使用静态代码块完成配置内容,并生成DataSource类对象
4.检验结果为真假,分别使用服务器内部的请求转发到其他servlet类
5.其他servlet类各自设置response并写入信息

基本步骤:

first:

1.将bootstrap简化开发,(css,fonts,js文件夹应放入WebContent[html也存于此]下),
	再使用基本框架进行表单的布置,同时也可以使用css进行辅助样式布局,
	并将表单的action引入到Tomcat服务器上的servlet,方法设置为post
	进而完成web登录界面login.html的布置

login.html

(注意: 
 action="http://localhost:8080/WebServlet/RequestDemo1"
	:RequestDemo1为WebServlet工程中的servlet类
		且注解为@WebServlet("/RequestDemo1")
)			


<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <title>Bootstrap 101 Template</title>
    <link href="css/bootstrap.min.css" rel="stylesheet">


    <style type="text/css">
    .place{
    	font-size: 30px;
    	border: 2px solid black;
    	padding-top: 100px;
    	padding-bottom: 100px;
    }
    .form-group{
    	align-content: center;
    	margin-top: 40px;
    }
    .login{font-size: 25px;}
    </style>
    


	<!-- HTML5 shim 和 Respond.js 是为了让 IE8 支持 HTML5 元素和媒体查询(media queries)功能 -->
    <!-- 警告:通过 file:// 协议(就是直接将 html 页面拖拽到浏览器中)访问页面时 Respond.js 不起作用 -->
    <!--[if lt IE 9]>
      <script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
      <script src="https://cdn.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.min.js"></script>
    <![endif]-->
  </head>
  <body>
    <form action="http://localhost:8080/WebServlet/RequestDemo1" class = "form-horizontal place"  method = "post">
		<div class="form-group">
			<label for = "user"  class = "col-sm-5 control-label" >登录:</label>
			<div class = "col-sm-5">
			<input id = "user" name = "username" placeholder="输入用户名"></input>
			</div>
	 	</div>	
	  <div class="form-group">
			<label for = "pwd" class = "col-sm-5 control-label">密码:</label> 
			<div class = "col-sm-5">
				<input id = "pwd" type = "password" name = "password" placeholder="输入密码"></input>
			</div>
	  </div>
	  
   		<div class = "col-sm-5 form-group"> </div>
   		<button type="submit" class="btn btn-danger col-sm-3 login" >登录</button>
	</form>
	
    <script src="https://cdn.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js"></script>
    <!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 -->
    <script src="../js/bootstrap.min.js"></script>
  </body>
</html>

second:

2.完成数据库表和表数据的创建和插入,并设置JavaBean实体类User
	成员变量要与数据库表中的数据能一一对应得上

mysql_代码:

CREATE TABLE  IF NOT EXISTS userinfo (
	username VARCHAR(20) PRIMARY KEY,
	PASSWORD VARCHAR(20) NOT NULL,
	loggingTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
INSERT INTO UserInfo (username,PASSWORD) VALUES ("李白",123456);
INSERT INTO UserInfo (username,PASSWORD) VALUES ("杜甫",123456);
SELECT * FROM UserInfo;

JavaBean实体类要求:

1.类使用public修饰	
2.拥有无参构造器
3.成员变量使用private修饰	
4.对于成员方法都有Getter,Setter方法
JavaBean的属性:
	去掉set,get再将剩余部分首字母变大写即为JavaBean的属性

User

public class User{
	private String username;
	private String password;
	private Timestamp loggingTime;
	public User(String username, String password,Timestamp loggingTime) {
		this.username = username;
		this.password = password;
		this.loggingTime = loggingTime;
	}
	public User() {
		super();
	}
	public Timestamp getLoggingTime() {
		return loggingTime;
	}
	public void setLoggingTime(Timestamp loggingTime) {
		this.loggingTime = loggingTime;
	}
	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;
	}
	@Override
	public String toString() {
		return "User [username=" + username + ", password=" + password + ", loggingTime=" + loggingTime + "]";
	}
}

third:

3.在当前工程中的WebContent/WEB-INF/lib下导入一系列jar包,用于辅助JdbcTemplate,
	Druid.properties(Druid配置文件)放入src下
	完成Druid工具类的静态配置 并完成 获取的DataSource的方法,
	用于提供给JdbcTemplate对象

jar

	commons-beanutils-1.8.0.jar
	commons-logging-1.2.jar
	druid-1.0.13.jar
	mysql-connector-java-8.0.16.jar
	spring-beans-5.0.0.RELEASE.jar
	spring-core-5.0.0.RELEASE.jar
	spring-jdbc-5.0.0.RELEASE.jar
	spring-tx-5.0.0.RELEASE.jar	

Druid.properties

	driverClassName = com.mysql.cj.jdbc.Driver
	url = jdbc:mysql://localhost:3306/db1?useSSL=false&serverTimezone=UTC
	username = root
	password = 123456
	initialSize = 5
	maxActive = 10
	maxWait = 3000

Druid工具类

(仅用于辅助JdbcTemplate,不必写close释放资源等方法,
					但设置静态配置以及要获取DataSource方法)

public class SQLDruidHelp {
	private static DataSource dSource ;
	static {
		try {
			ClassLoader cLoader = SQLDruidHelp.class.getClassLoader();
			InputStream resourceAsStream = cLoader.getResourceAsStream("druid.properties");
			Properties properties = new Properties();
			properties.load(resourceAsStream);
			dSource =  DruidDataSourceFactory.createDataSource(properties);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public static DataSource getDataSource() {
		return dSource;
	}
}

fourth:

4.通过JdbcTemplate类,实现方法通过User对象参数完成对数据库的查询正确与否

JDBCLogCheck

(注意:JdbcTemplate对象的创建传递了第三步Druid工具类的getDataSource())

public class JDBCLogCheck {
	public static boolean checkInfo(User user) {
		JdbcTemplate jdbcTemplate = new JdbcTemplate(SQLDruidHelp.getDataSource());
		String sql = "select * from userInfo where username = ? && password = ?";
		List<User> lists = jdbcTemplate.query(sql, new BeanPropertyRowMapper<User>(User.class),user.getUsername(),user.getPassword());
		if(lists.size() > 0 ) {
			return true;
		}
		return false;
	}
}

fifth:

5.实现login.html上表单提交的servlet,获取页面提交的username,password	
	JavaBean实体类:  User user = new User();  
	Map :			request.getParameterMap();
使用:BeanUtils.populate(user, map);
		内部自动执行各个参数的setter()
最后使用第四步完成的JDBCLogCheck检验类校验User类对象,
	如果为存在,则要将Username数据共享出来,因此要设置到request.setAttribute上,
				并将请求转发到"/successdemo"servlet类
	如果为没有,则请求转发到"/faildemo"servlet类

RequestDemo1

@WebServlet("/RequestDemo1")
public class RequestDemo1 extends HttpServlet {
	private static final long serialVersionUID = 1L;
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		User user = new User();
		Map<String, String[]> map = request.getParameterMap();
			try {
				BeanUtils.populate(user, map);
			} catch (IllegalAccessException | InvocationTargetException e) {
				
				e.printStackTrace();
			}
		
		boolean flag = JDBCLogCheck.checkInfo(user);
		if(flag) {
			request.setAttribute("username",user.getUsername());
			request.getRequestDispatcher("/successdemo").forward(request, response);
			
		}else {
			request.getRequestDispatcher("/faildemo").forward(request, response);
		}
	}

}

sixth:

实现第五步的"/successdemo" 和 "/faildemo" servlet类,
在doGet方法下完成进入doPost方法,因为请求转发后是相当于到另一个servlet类的doGet方法
随后在doPost方法下设置响应Reponse对象响应头的文本类型,并简单输出信息
	(其中sucessdemo还要获取request上的共享数据username,用于reponse输出)

faildemo

@WebServlet("/faildemo")
public class faildemo extends HttpServlet {
	private static final long serialVersionUID = 1L;
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		response.getWriter().write("密码和用户名存在无法匹配情况");
	}
}

successdemo

@WebServlet("/successdemo")
public class successdemo extends HttpServlet {
	private static final long serialVersionUID = 1L;
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		response.getWriter().write("欢迎会员:"+request.getAttribute("username")+"  你已登陆成功!");
	}
}
最简单的网页登录注册功能讲解及其实现 前言 最近打算做一个网页登录的练习,记录一下学习的过程吧。 结构 实现一个网页最基本的注册与登录功能,我们需要 mysql存储用户账户信息 编写注册html页面 编写后台注册程序 编写登录html页面 编写后台登录验证程序 创建数据库存储账户信息 使用mysql数据库来创建一个存储用户数据的数据库。 我们来到mysql的控制台。这里我使用的是xampp带的mysql。打开mysql控制台的方法: 以管理员模式运行cmd cd /d 路径 命令进入mysql的bin目录下 输入命令mysql -u 用户 阅读详情

相关推荐

PHP微信公众号网页授权登录 扫码登录 获取用户基本信息

前言 现在微信登录是一个网站、APP的标配,所以微信授权登录是我们应该要掌握的。微信授权登录有4种方式: 1、通过微信开放平台2、通过认证的微信服务号3、通过认证的微信订阅号4、通过微信小程序曲线救国 今天我们就讲解的是微信服务号,通过OAuth2.0机制网页授权登录,获取用户基本信息。 流程 1、获取code2、获取access_token3、获取用户基本信息 获取code 通过以下接...

weixin_42395776的博客 1533

登录MySQL数据库

用户启动了MySQL服务,便可以通过客户端登录MySQL数据库。 登录MySQL数据库的具体操作步骤如下: 步骤 1):单击“开始”→“Windows 系统”→“命令提示符”,如图所示。 步骤 2):打开命令行提示符界面,输入命令:cd C:Program FilesMySQLMySQL Server 5.7bin,按回车键,如图所示。 步骤 3):在命令提示符界面可以通过登...

MYsql零基础入门学习 724

JAVA+JSP+HTML+数据库 实现网页的登录和注册(附全网最详细代码)

JAVA+JSP+HTML+数据库 实现网页的登录和注册(附详细代码) 受疫情的影响自己在家鼓捣点了东西,也是项目中的一部分,实现了网页的登录和注册,在大佬面前不可一提,本人只是分享自己的实现过程,希望对看到的你有所帮助。 项目的层次图: 代码: login.jsp(登录界面实现) <%@ page language="java" contentType="text/htm...

自我总结,分享所有,快乐每一天 6250

登录页面连接数据库

壹 如果每一款APP的登录界面审核机制为 " admin".equles(username)&&"123456".equles(password) 那么局限性太高,数据成本高,我们之所以连接数据库,是因为APP对应着多个用户,而不是一个用户。 贰 (1)建立数据库 打开MySQL 1、create database db_shop;(创建库) 2...

weixin_43376497的博客 6284

QT模拟实现网页登录界面

QT模拟实现网页登录界面常见的网络登录界面一般包括用户名 Lable 和编辑框,密码 Label 和编辑框,是否保存密码的 Check 按钮,以及确定登录和退出按钮组成,界面设计如下: 一般的登录流程如下:用户输入用户名和密码,有的可能会勾选保存密码选项;然后点击确定按钮向服务器发出登录请求;服务器收到请求后与数据库中存储的记录比较,存在则允许用户登入系统;客户端在收到确认后先将本次登录计入存

u010090316的博客 8436

web实现数据库简单登陆网页

web登录注册,在Myeclipse里打开,可以进行mysql数据访问

登录注册页面连接数据库并完成注册(三)

数据库注册

QQ1602288425的博客 4637

ADS AEL脚本进阶:参数化电感与变压器的自动化设计

本文深入探讨了如何利用ADS AEL脚本实现电感与变压器的参数化与自动化设计。通过构建可复用的函数库、封装高级设计流程、集成DRC检查与性能预估,将繁琐的手动绘制升级为高效的智能设计引擎,并最终通过创建GUI工具降低使用门槛,大幅提升射频/微波电路设计效率。

weixin_29309785的博客 203

网页连接数据库,一个简单的登入界面以及实现登入功能

基于V#的ASP.NET.MVC 4 web 网站程序开发 接着上篇继续,上篇地址为https://blog.youkuaiyun.com/weixin_42534390/article/details/86576537 我们首先要有一个认知,就是ASP.NET.MVC 4 web 网站程序开发的三层架构概念,分别为BLL,DAL,MOD 这三层的概念,这是竖着的三层。横三层为view,Controllers...

weixin_42534390的博客 5万+

告别远程控制弹窗:免Root实现投射与录制敏感信息自动授权

本文针对Android远程控制中频繁出现的‘在投射和录制时显示敏感信息’弹窗问题,提供了一套免Root的自动化解决方案。通过结合Shizuku与App Ops两款工具,无需破解系统即可静默授予屏幕投射与录制权限,从而实现稳定、无干扰的远程协助、家庭监控或自动化测试,彻底告别手动授权弹窗的烦恼。

qsc9012345的博客 715

uniapp 使用摄像头 live-pusher (APP)

uniapp 中开发 app 时使用live-pusher踩过的坑

随身笔记 1万+

微信授权网页扫码登录php,PHP微信公众号网页授权登录 扫码登录 获取用户基本信息...

前言现在微信登录是一个网站、APP的标配,所以微信授权登录是我们应该要掌握的。微信授权登录有4种方式:1、通过微信开放平台2、通过认证的微信服务号3、通过认证的微信订阅号4、通过微信小程序曲线救国今天我们就讲解的是微信服务号,通过OAuth2.0机制网页授权登录,获取用户基本信息。流程1、获取code2、获取access_token3、获取用户基本信息获取code通过以下接口即可获得,参数说明:h...

weixin_39752434的博客 624

从选型到阵列:基于ESP32-S3的智能硬件麦克风系统设计实战

本文详细介绍了基于ESP32-S3芯片设计智能硬件麦克风阵列的完整实战方案。从核心芯片选型、数字MEMS麦克风的参数解读与电路设计,到关键的声学结构密封、阵列布局策略,再到利用ESP-ADF框架构建音频处理流水线并集成回声消除、噪声抑制等算法,提供了从硬件到软件的全链路设计指南与避坑要点,旨在实现清晰、稳定的远场语音交互。

weixin_29173777的博客 266

JSP总结

常见问题 1、 tomcat的运行依赖JDK,必须配置JDK环境。配置方式参照: https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html 2、 闪退,启动闪退问题一般是因为JDK的环境变量配置有问题,参照1进行重新进行配置,如果还是闪退,使用: 在bin\startup.bat文件中的第一行前面加入: SET JAVA_HOME=JDK目录 SET CATALINA_HOME=解压后Tomcat的

weixin_45775120的博客 310

wifi/BT芯片RTL8723DS驱动移植和测试之一wifi篇

本文主要介绍如何在stm32mp157中移植并测试芯片RTL8723DS的wifi功能。

汉尼拔勇闯天涯 8741

分布式训练中All-Reduce、All-Gather、Reduce-Scatter原理

Reduce-Scatter = 先对所有进程的数据做 Reduce(如 sum / mean),再把结果“切分”分发给各进程。(是 Reduce + Scatter 的融合操作。

comli_cn的博客 341

ASP.NET 链接sql数据库的 「登录/注册」界面

资源在这里 :github源文件参考 先看一下截图 支持的功能: 密码显示成点点 登录成功的提示 登录失败的提示 账号或者密码错了分开提示 注册成功的提示 不能注册已经在数据库里面的用户ID 我在这里看了很多这个人的教程:walking橙子,但是里面有的东西我不能用,messagebox.show()就不行。我也不是很懂(搜索也没有搜到,不知道怎么使用messagebo...

qq_41424132的博客 1万+

使用 Python 爬虫抓取 IMDb 电影信息 - 评分、评论与基本信息抓取教程

本文介绍了如何使用 Python 爬虫技术抓取 IMDb 电影评分、评论和基本信息。我们分别展示了通过IMDb API和两种方法抓取数据,并进行了数据存储、分析与可视化。在未来,我们还可以基于这些数据开发电影推荐系统、情感分析工具等,进一步丰富电影数据的应用场景。通过这些实践,您不仅学会了如何抓取和存储数据,还可以通过这些基础来构建自己的数据分析应用,获取更丰富的电影数据。

2201_76125261的博客 601

将网页数据读入数据库+将数据库数据读出到网页——基于python flask实现网页与数据库的交互连接【全网最全】

全网最全教学,基于flask:在网页端读出数据,存入数据库;从数据库中取出数据,显示在网页上。pycharm的template文件找不到怎么办,看这篇就够了!

RuanFun的博客 1万+

Unity3D实现视频和模型融合效果

在Unity中,视频和3D模型融合通常涉及到将视频表面内嵌到3D场景中。视频不影响模型的展示, 这可以通过使用Shader和Texture来实现。大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。下面就让我们进入正文吧!提示:以下是本篇文章正文内容,下面案例可供参考本次介绍的就是视频和模型融合的实现,以后有其他的需要添加的会继续添加不定时更新Unity开发技巧,觉得有用记得一键三连哦。么么哒。

心疼你的一切博客 5357

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

网页注册登录实现

网页注册登录页面及功能实现 最近了解了一些网页知识,写个博客总结分享一下 一、页面实现 代码及效果图 <!doctype html> <html> <head> <meta charset="utf-8"> <title>登录</title> <style type="text/css"> .wrap{ /*m...

Kevin1906的博客 2万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

国产开源数据库-Chat2DB

相信用过EasyExcel的小伙伴应该都清楚,EasyExcel的出现对比poi实现了更加丰富的功能,这款软件同样也是EaseExcel的作者出品;从这款软件开源之初,就一直在关注这款国产软件,今天借这篇文章来分享下我对这款软件的真实感受,其中有优点也有待改进点。仪表盘能帮助你智能分析你的表中数据分布情况,并且智能生成可视化图表,类似Echarts;例如学生的年龄分布,地区分布,成绩分布等等;

2401_87105969的博客 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Chat2DB:开启数据库管理新时代的高效工具

Chat2DB是一款AI驱动的数据库管理工具,支持22种数据库类型,包括国产和主流数据库。通过自然语言转SQL、SQL转自然语言等功能,大幅提升数据管理效率。提供网页版和客户端两种使用方式,支持30天免费试用。特色功能包括AI一键建表、可视化报表自动生成等。新用户使用邀请码GM0666可获额外权益。无论是开发人员还是业务人员,都能轻松实现数据查询与分析。

归梦工作室 3666

网页登录mysql数据库设计_Web网页登录设计

登陆网页的简单功能的实现输入用户名和密码与数据库当中的用户名和密码匹配上,则登陆成功。首先我们要先配置好web制作所需要的软件,在mysql数据库当中建立表,建立用户名和密码在java ee上编写连接mysql数据库的代码String num = request.getParameter("num");session.setAttribute("username",num);String user...

weixin_30291543的博客 1988

Chat2DB快速部署指南,本地数据库远程访问一键搞定

朋友们,还在对着 SQL 语句抓狂吗?还在为了一个数据报表跟数据工程师撕逼吗?别慌!今天我就要给你们安利一款神器——Chat2DB!它简直就是数据库界的“ChatGPT”,让不懂 SQL 的小白也能像数据大神一样,轻松玩转各种数据库!而且,它还能远程使用,让你随时随地都能查数据!赶紧冲鸭!说了这么多,你是不是觉得 Chat2DB 只能在本地使用?太 out 啦!有了cpolar,你就可以随时随地远程访问 Chat2DB 啦!什么是 cpolar?

优快云站内信: https://i.youkuaiyun.com/#/msg/chat/qyj19920704 4105
上一篇: 文件链接下载
下一篇: session基础知识
Tket
博客等级 码龄9年 21粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值