servlet+jdbc实现用户注册功能

一、需求

在Servlet中可以使用JDBC技术访问数据库,常见功能如下:

  • 查询DB数据,然后生成显示页面,例如:列表显示功能。
  • 接收请求参数,然后对DB操作,例如:注册、登录、修改密码等功能。

二、代码演示

1、编写注册界面

  1. 创建空工程,在工程中创建javaEE模块

  2. 配置中设置tomcat的部署
    在这里插入图片描述
    在这里插入图片描述

  3. 编写register界面

    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><title>简单注册界面</title>
    </head>
    <body><form action="register" method="post">用户名:<input type="text" name="userName"/><br>密码:<input type="text" name="password"><br><input type="submit" value="注册"></form></body>
    </html>
    

2、编写Servlet 获取注册信息

  1. 编写servlet
  • RegisterServlet
 ```javapackage com.example.register_demo01;import javax.servlet.*;import javax.servlet.http.*;import java.io.IOException;public class RegisterServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1、获取请求的用户名和密码String userName = request.getParameter("userName");System.out.println("获取到的用户名为:" + userName);String password = request.getParameter("password");System.out.println("获取到的密码为:" + password);}}```
  • web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><servlet><servlet-name>RegisterServlet</servlet-name><servlet-class>com.example.register_demo01.RegisterServlet</servlet-class></servlet><servlet-mapping><servlet-name>RegisterServlet</servlet-name><url-pattern>/register</url-pattern></servlet-mapping>
    </web-app>
    
  1. 部署测试:

    • 运行tomcat

    • 访问注册界面,发送注册请求,tomcat获取注册信息

      在这里插入图片描述

3、 创建原始User类

package com.example.register_demo01.pojo;public class User {private int id;private String userName;private String password;public User(){}public User(String userName, String password) {this.userName = userName;this.password = password;}public int getId() {return id;}public void setId(int id) {this.id = id;}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;}@Overridepublic String toString() {return "User{" +"id=" + id +", userName='" + userName + '\'' +", password='" + password + '\'' +'}';}
}

4、创建数据库

在这里插入图片描述

5、创建DbUtil,使用jdbc控制数据库

代码:

package com.example.register_demo01.utils;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;public class DbUtil {private static String jdbcName;private static String dbUrl;private static String dbUserName;private static String dbPassword;//静态初始化操作static {jdbcName = "com.mysql.jdbc.Driver";dbUrl = "jdbc:mysql://localhost:3306/db_web";dbUserName = "root";dbPassword = "root";try {Class.forName(jdbcName);} catch (ClassNotFoundException e) {e.printStackTrace();}}public static Connection getConnection() throws SQLException {Connection connection = DriverManager.getConnection(dbUrl, dbUserName, dbPassword);return connection;}public static void closeConnection(Connection con) throws SQLException {if (null != con){con.close();}}}

6、编写UserDao,将User对象存储到数据库

代码:

package com.example.register_demo01.dao;import com.example.register_demo01.pojo.User;
import com.example.register_demo01.utils.DbUtil;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;public class UserDao {public int createUser(User user) {Connection connection = null;PreparedStatement preparedStatement = null;try {//1、获取连接Connection connection1 = DbUtil.getConnection();//2、准备sqlString sql = "insert into t_user values(null, ?, ?)";//3、获取PreparedStatementpreparedStatement = connection.prepareStatement(sql);//4、向问号位置设置数据preparedStatement.setString(1, user.getUserName());preparedStatement.setString(2, user.getPassword());//5、执行sqlint row = preparedStatement.executeUpdate();return row;} catch (SQLException throwables) {throwables.printStackTrace();}finally {//6、关闭资源try {DbUtil.closeConnection(connection);if(preparedStatement != null){preparedStatement.close();}} catch (SQLException throwables) {throwables.printStackTrace();}}return -1;//执行失败}
}

7、修改Servlet,添加保存进数据库的操作

  1. 代码:

    package com.example.register_demo01;import com.example.register_demo01.dao.UserDao;
    import com.example.register_demo01.pojo.User;import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.IOException;
    import java.io.PrintWriter;public class RegisterServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1、获取请求的用户名和密码String userName = request.getParameter("userName");System.out.println("获取到的用户名为:" + userName);String password = request.getParameter("password");System.out.println("获取到的密码为:" + password);//2、封装user信息,将信息保存到数据库User user = new User(userName, password);UserDao userDao = new UserDao();int res = userDao.createUser(user);//3、将处理结果响应到浏览器response.setContentType("text/html;charset=utf-8");PrintWriter writer = response.getWriter();if (1 == res){System.out.println("注册成功");writer.write("<h1>注册成功!</h1>");}else {System.out.println("注册失败");writer.write("<h1>注册失败!</h1>");}writer.close();}
    }
    
  2. 测试结果:

    在这里插入图片描述

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

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

相关文章

前端基本性能指标及lighthouse使用

文章目录 1、基本指标介绍2、Performace分析2.1 performance属性2.2 使用performace计算2.3 Resource Timing API2.4 不重复的耗时时段区分2.5 其他组合分析2.6 JS 总加载耗时2.7 CSS 总加载耗时 3、lighthouse基本使用3.1 使用Chrome插件lighthouse3.2 使用Chrome浏览器开发者…

【操作系统】测试四

文章目录 单选题填空题 单选题 在一个可变分区存储管理中&#xff0c;最佳适应算法是将空闲区表中的空闲区按【 正确答案: C】的次序排列。 A. 地址递增 B. 地址递减 C. 大小递增 D. 大小递减 动态重定位是在【 正确答案: B】进行的重定位。 A. 作业执行前 B. 作业执行过程中 …

【黄啊码】宝塔设置默认php版本无效?

宝塔面板切换默认PHP版本1.情形描述&#xff1a; 我在执行composer install 时提示PHP版本太低&#xff0c;查看了一下宝塔面板的PHP版本&#xff0c;发现有两个一个5.6一个7.3。虽然php5.6版本已经暂停了&#xff0c;但是执行composer install还是提示版本太低。 然后根据网…

信息泄露总结

文章目录 一、备份文件下载1.1 网站源码1.2 bak文件泄露1.3 vim缓存1.4 .DS_Store 二、Git泄露2.1 git知识点2.1 log2.2 stash 三、SVN泄露3.1 SVN简介3.2 SVN的文件3.3 SVN利用 四、Hg泄露 一、备份文件下载 1.1 网站源码 常见的网站源码备份文件后缀&#xff1a; tartar.gz…

hyperf console 执行

一、原理描述 hyperf中&#xff0c;不难发现比如自定义控制器中获取参数&#xff0c;hyperf.php中容器获取&#xff0c;传入的都是接口&#xff0c;而不是实体类。 这是因为框架中的配置文件有设置对应抽象类的子类&#xff0c;框架加载的时候将其作为数组&#xff0c;使用的…

零基础学Java第二天

复习回顾&#xff1a; 1.dos命令 dir 显示当前文件夹下面的所有的文件和文件夹 cd 切换目录的 mkdir 创建文件夹的 rd 删除文件夹的 del 删除文件 D: 切换盘符 cls 清屏 2.书写Java代码换行打印《静夜诗》这首古诗 class Demo1 { …

深入理解 C# 中的字符串比较:String.CompareTo vs String.Equals

深入理解 C# 中的字符串比较&#xff1a;String.CompareTo vs String.Equals 在处理字符串时&#xff0c;了解如何正确比较它们对于编写清晰、有效和可靠的 C# 程序至关重要。本文将深入探讨 C# 中的两个常用字符串比较方法&#xff1a;String.CompareTo 和 String.Equals&…

Mybatis行为配置之Ⅲ—其他行为配置项说明

专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 Mybatis枚举类型处理和类型处理器 再谈动态SQL Mybatis配置入门 Mybatis行为配置之Ⅰ—缓存 Mybatis行为配置…

电子工程师如何接私活赚外快?

对电子工程师来说&#xff0c;利用业余时间接私活是个很常见的技术&#xff0c;不仅可以赚取额外收入&#xff0c;也能提升巩固技术&#xff0c;可以说国内十个工程师&#xff0c;必有五个在接私活养家糊口&#xff0c;如果第一次接私活&#xff0c;该如何做&#xff1f; 很多工…

再升级|川石教育鸿蒙应用开发4.0教程发布

全新鸿蒙蓄势待发 HarmonyOS是一款面向未来的全场景分布式智慧操作系统。 对于消费者而言&#xff0c;HarmonyOS用一个统一的软件系统从根本上解决消费者面对大量智能终端体验割裂的问题&#xff0c;为消费者带来统一、便利、安全的智慧化全场景体验。 对于开发者而言&#xf…

十二:爬虫-Scrapy框架(上)

一&#xff1a;Scrapy介绍 1.Scrapy是什么&#xff1f; Scrapy 是用 Python 实现的一个为了爬取网站数据、提取结构性数据而编写的应用框架(异步爬虫框架) 通常我们可以很简单的通过 Scrapy 框架实现一个爬虫&#xff0c;抓取指定网站的内容或图片 Scrapy使用了Twisted异步网…

15. Mysql 变量的使用

目录 变量的概述自定义变量系统变量查看系统变量系统变量赋值 局部变量总结参考资料 变量的概述 MySQL支持不同类型的变量&#xff0c;包括自定义变量、系统变量和局部变量。自定义变量是在会话中定义的变量&#xff0c;用于存储临时数据。系统变量是MySQL服务器提供的全局变量…

【C#】关于事件的使用ii,eg:{婚礼策划公司的组织者}

场景&#xff1a; 假设你是一家婚礼策划公司的组织者&#xff0c;你需要安排婚礼的各个方面&#xff0c;如音乐、鲜花、照片等。 事件的用法&#xff1a; 你创建了一个婚礼策划事件&#xff0c;并邀请了音乐师、花店、摄影师等作为订阅者。当婚礼日期临近时&#xff0c;你触发婚…

(切图笔记)layui表格单元格添加超链接 以及传参方法 亲测可用 附代码

layui在切图网日常的工作中常常用到&#xff0c;特别是它的layer弹窗&#xff0c;基本可以满足网站切图时候遇到的绝大多数弹窗的情况&#xff0c;参数比较丰富 灵活&#xff0c;是不可多得的网页插件之一&#xff0c;我见很多人说layui过时了&#xff0c;这是相比于vue正流行的…

Linux创建Macvlan网络

最近在看Docker的网络&#xff0c;测试Macvlan部分时&#xff0c;发现Docker创建Macvlan与预期测试结果不一样。所以查阅了Linux下配置Macvlan&#xff0c;记录如下。 参考 1.Linux Macvlan 2.图解几个与Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN 3.创建ma…

Java8 - 更优雅的字符串连接(join)收集器 Collectors.joining

Java8中的字符串连接收集器 在JDK8中&#xff0c;可以采用函数式编程&#xff08;使用 Collectors.joining 收集器&#xff09;的方式对字符串进行更优雅的连接。 Collectors.joining 收集器 支持灵活的参数配置&#xff0c;可以指定字符串连接时的 分隔符&#xff0c;前缀 和…

Sentinel-3如何处理并下载LST数据-陆地表面温度”(Land Surface Temperature)

LST 通常指的是“陆地表面温度”&#xff08;Land Surface Temperature&#xff09;。陆地表面温度是指地球表面上陆地部分的温度&#xff0c;而不包括水体表面。LST 是遥感技术中一个重要的参数&#xff0c;可以通过卫星遥感等手段进行测量和监测。 陆地表面温度对于许多领域…

浅谈高并发以及三大利器:缓存、限流和降级

引言 高并发背景 互联网行业迅速发展&#xff0c;用户量剧增&#xff0c;系统面临巨大的并发请求压力。 软件系统有三个追求&#xff1a;高性能、高并发、高可用&#xff0c;俗称三高。三者既有区别也有联系&#xff0c;门门道道很多&#xff0c;全面讨论需要三天三夜&#…

kibana(elk)使用脚本统计重点URL访问次数

文章目录 前言一、Elasticsearch脚本是什么?二、使用步骤前言 在日常工作中,需要定期对系统中一些重点URL进行访问统计,这个时候就需要借助一些工具进行分析处理 一、Elasticsearch脚本是什么? Elasticsearch脚本是Elasticsearch中用于自定义数据处理和查询逻辑的脚本代码…

人工智能_机器学习072_SVM支持向量机_人脸识别模型训练_训练时间过长解决办法_数据降维_LFW人脸数据建模与C参数选择---人工智能工作笔记0112

我们先来看一下之前的代码: import numpy as np 导入数学计算库 from sklearn. svm import SVC 导入支持向量机 线性分类器 import matplotlib.pyplot as plt 加载人脸图片以后,我们用pyplot把人脸图片数据展示一下 from sklearn.model_selection import train_test_split 人脸…