javaWeb连接数据库实现简单的登陆注册功能_javaweb注册功能的实现,包括确认密码-程序员宅基地

技术标签: java  maven  数据库  

作者自述

现在初学javaWeb,还没有学完,只学了一半中的一少半,这个小程序自我感觉还可以,如有更好的改进方法或者更简单的请为作者留言(不要嘲笑)

实现步骤

创建maven项目 配置Tomcat 这些都不细说了

jar包

因为要连接数据库所以一定要在maven项目下的xml文件下配置数据库的jar包依赖

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.28</version>
    </dependency>

这个千万不要忘了 重重之重

数据库的驱动以及用户密码

package com.li.Servlet.blit;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class JDBC {
    
    private static String url = null;
    private static String name = null;
    private static String password = null;

    static {
    
        try {
    
            Class.forName ( "com.mysql.cj.jdbc.Driver" );
        } catch (Exception e) {
    
            e.printStackTrace ( );
        }
        url = "jdbc:mysql://localhost:3306/zhiqingli?useUnicode=true&characterEncoding=utf8&useSSL=true";
        name = "root";
        password = "root";
    }

    public static Connection getConn() throws Exception {
    
        return DriverManager.getConnection ( url, name, password );
    }

    public static void release(Connection conn, PreparedStatement pst, ResultSet res) {
    
        try {
    
            if (res != null) {
    
                res.close ( );
            }
            if (pst != null) {
    
                pst.close ( );
            }
            if (conn != null) {
    
                conn.close ( );
            }
        } catch (Exception e) {
    
            e.printStackTrace ( );
        }

    }
}

这个类可以直接复制使用,但要改成自己的数据库名字

jsp页面

登陆页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
<form action="${pageContext.request.contextPath}/test" method="get">
   <h3>账号:<input type="text" name="account"></h3>
   <h3>密码:<input type="password" name="paw"></h3>
   <h3><input type="submit" value="登陆"><a href="Register.jsp" target="_blank">注册</a></h3>
</form>
</body>
</html>
注册页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
   <title>注册</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/res" method="post">
   <h3>账号:<input type="text" placeholder="请输入注册的账号" name="number"></h3>
   <h3>密码:<input type="password" placeholder="请输入注册的密码" name="word" id="one"></h3>
   <h3>确认密码:<input type="password" placeholder="确认一遍密码" name="u" id="two"></h3>
   <input type="submit" value="提交" οnclick="show()">
</form>
<Script>
function show(){
    var one = document.getElementById("one").value;
    var two = document.getElementById("two").value;
    if (one === two){
        alert("注册成功");
        window.open("index.jsp")
    }else {
        alert("两次输入的密码不一致");
    }
}
</Script>
</body>
</html>
登陆成功和失败的页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>成功页面</title>
</head>
<body>
<h1>登陆成功,感谢使用</h1>
</body>
</html>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>失败页面</title>
</head>
<body>
<h1>登陆失败,账号密码找不到或者错误</h1>
</body>
</html>

工具类

工具人上线

//登陆使用的方法
Connection conn = null;
  PreparedStatement pst = null;
  ResultSet res = null;
  boolean isQ;
   public boolean Select(String username,String paw)  {
    
      try {
    
          conn = JDBC.getConn ( );
          String sql = "SELECT * FROM `username` where `name`=? and `password`=?";
          pst = conn.prepareStatement (sql);
          pst.setObject ( 1,username );
          pst.setObject ( 2,paw );
          res = pst.executeQuery ( );
          if (res.next ()){
    
              isQ = true;
              System.out.println (res.getObject ( "name" )+" "+res.getObject ( "password" ));
              System.out.println ("登陆成功");
          }else {
    
              isQ = false;
              System.out.println ("登陆失败");
          }
      }catch (Exception e){
    
          e.printStackTrace ();
      }finally {
    
          JDBC.release ( conn,pst,res );
      }
      return isQ;
  }
  //注册用的方法
   public void addUser(String name,String paw){
    
      try {
    
          conn = JDBC.getConn ( );
          String sql = "insert into `username`(`name`,`password`) values (?,?)";
          pst = conn.prepareStatement ( sql );
          pst.setObject ( 1,name );
          pst.setObject ( 2,paw );
          int i = pst.executeUpdate ( );
          if (i>0){
    
              System.out.println ("添加成功");
          }
      }catch (Exception e){
    
          e.printStackTrace ();
      }finally {
    
          JDBC.release ( conn,pst,res );
      }
  }

登陆的类

package com.li.Servlet.test;

import com.li.Servlet.blit.Way;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class index extends HttpServlet {
    
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
      String account = req.getParameter ( "account" );
      String paw = req.getParameter ( "paw" );
      Way way = new Way ();
      if (way.Select ( account,paw )){
    
          resp.sendRedirect ( "/s4/true.jsp" );
      }else {
    
          resp.sendRedirect ( "/s4/false.jsp" );
      }
  }

  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
      doGet ( req, resp );
  }
}

注册的类

package com.li.Servlet.test;

import com.li.Servlet.blit.Way;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class index02 extends HttpServlet {
    
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
      String number = req.getParameter ( "number" );
      String word = req.getParameter ( "word" );
       String u = req.getParameter ( "u" );
    if (word.equals ( u )){
    
          Way way = new Way ( );
          way.addUser ( number,word );
      }else {
    
          //当两次密码不一致的时候浏览器响应给用户当前注册的页面
          resp.sendRedirect ( "/s4/Register.jsp" );
      }
  }

  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
      doGet ( req, resp );
  }
}

两个映射路径

<!--登陆-->
  <servlet>
      <servlet-name>test</servlet-name>
      <servlet-class>com.li.Servlet.test.index</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>test</servlet-name>
      <url-pattern>/test</url-pattern>
  </servlet-mapping>
<!--注册-->
  <servlet>
      <servlet-name>res</servlet-name>
      <servlet-class>com.li.Servlet.test.index02</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>res</servlet-name>
      <url-pattern>/res</url-pattern>
  </servlet-mapping>

思路

登陆

这个就是用户输入的账号和密码看看数据库里有没有,
有的话就重定向到成功或这失败的页面,相当于浏览器响应给用户的请求结果

注册

相当于就是往数据库里面添加一个账号或者密码然返回到登陆页面
这里我在注册类面没有用到重定向,而是在注册的jsp页面里判断之后跳转到登陆页面
注意:这里为什么没在注册类里面用重定向
因为使用重定向之后就直接返回了登陆类运行的结果
(如有更好的思路,浏览作者 ! 谢谢)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_56864310/article/details/122992399

智能推荐

关于错误:ORA-12592: TNS: 包错误 和 Io 异常: Connection reset by peer: socket write error_insert ora-12592-程序员宅基地

文章浏览阅读9.4k次。最近几天在这边做导入数据的工作,但是遇到了很多问题,还好推迟上线了,不然真的要耽误工时了(谁让专业的DBA们都不见了呢)今天周三了,今天报的错误清一色和前天的一样,而昨天的错误如下:ORA-12592: TNS: 包错误 和 Io 异常: Connection reset by peer: socket write error_insert ora-12592

基于Java的医院挂号系统_java后端开发 预约挂号功能 可以使用什么技术-程序员宅基地

文章浏览阅读382次。医院挂号系统是基于Java Web技术的SSM框架的系统,基于Mysql数据。对9张数据库表进行增删改查操作。适合毕业设计、课程设计、大作业等。医院挂号系统是基于Java Web技术的SSM框架的系统,基于Mysql数据。对9张数据库表进行增删改查操作。适合毕业设计、课程设计、大作业等。医院挂号系统是基于Java Web技术的SSM框架的系统,基于Mysql数据。对9张数据库表进行增删改查操作。适合毕业设计、课程设计、大作业等。_java后端开发 预约挂号功能 可以使用什么技术

Spring Data JPA复杂动态查询_jpa multiselect-程序员宅基地

文章浏览阅读9.4k次,点赞5次,收藏28次。Spring Data JPA其诸多优点给我们的工作带来了很多便利,但对于接触不久的同学来说,有些情况让我们头疼。一些复杂的查询,比如涉及到聚合函数、动态多条件等,着实有些棘手。在不够了解的情况下,觉得Spring Data JPA在这方面不太人性化,有时候我们干脆使用原生sql粗暴的来解决这类查询问题。但这与Spring Data JPA的初衷是相悖的,在不断的学习中,慢慢发现Spring Da..._jpa multiselect

vue实现的步骤条组件——2种方法_vue步骤条 如何实现-程序员宅基地

文章浏览阅读3.5k次,点赞4次,收藏6次。一、语言:vue样式如下:2.代码:根据长度百分比计算样式<template> <!-- 步骤条盒子 --> <div class="steps-box"> <!-- 步骤条 --> <div class="Article-steps" :class="data.stepList.length <= activeIndex ? 'step-over' : ''" > _vue步骤条 如何实现

printf串口打印数据以及进阶调试用法_ll库printf-程序员宅基地

文章浏览阅读2.6k次。一、前言实现原理:在C库中,printf()等输出流函数都是通过fputc()这个函数实现的,所以我们通过重映射的方式,修改这个函数的定义使它输出在STM32的寄存器中,便可以实现使用printf()函数在STM32串口上输出数据的功能。二、printf串口打印实现1.使用LL库添加下面的fputc重定义代码://重映射fputc函数,此函数为多个输出函数的基础函数int fputc(int ch, FILE *f){ while (USART_GetFlagStatus(USART1, _ll库printf

ORACLE 编程的集合_oracle编程声明集合-程序员宅基地

文章浏览阅读587次。文章正文: oracle|问题ORACLE常用傻瓜问题1000问 1. Oracle安装完成后的初始口令?  internal/oracle   sys/change_on_install   system/manager   scott/tiger   sysman/oem_temp 2. ORACLE9IAS WEB CACHE的_oracle编程声明集合

随便推点

在JavaScript中实现Array.count()方法-程序员宅基地

文章浏览阅读8.2k次。在JavaScript中实现Array.count()方法 正如我在博客上撰写有关MooTools的文章一样,我大部分时间都是在PHP上度过的。 如您所知,在PHP中获取数组大小的一种方法是使用count()函数: echo count($my_array); 在JavaScript中,获取数组大小的方法是使用length属性,如下所示: alert(my_array.length);..._js count函数

图片文字识别-管理敏感词_ocr实现对图片敏感信息检测-程序员宅基地

文章浏览阅读165次。OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程方案说明百度OCR收费Google维护的开源OCR引擎,支持Java,Python等语言调用Tess4J封装了Tesseract-OCR ,支持Java调用Tesseract支持UTF-8编码格式,并且可以“开箱即用”地识别100多种语言。_ocr实现对图片敏感信息检测

【常见问题】error LNK2005: 函数已经在某文件中定义_error lnk2005 已经在 中定义 cmake-程序员宅基地

文章浏览阅读631次。出现背景:在尝试用cmake编译调用yolo网络的c++项目时出现问题:main 已经在detect_cuda_compute_capabilities.obj 中定义错误说明:其实就是一个重定义问题解决方法:打开项目的解决方案管理器,在项目文件中找到出现重复定义的文件,右键移除项目即可。..._error lnk2005 已经在 中定义 cmake

Spring学习(四)引用外部属性文件、自动装配_spring factory 配置文件自动装配-程序员宅基地

文章浏览阅读119次。引用外部属性文件:当bean的配置信息逐渐增多时,查找和修改一些bean的配置信息变得更加困难。这时,可以将一部分信息提取到bean配置文件的外部,以properties格式的属性文件保存起来,同时在bean的配置文件中引用properties属性文件中的内容,从而实现一部分属性值在发生变化时只修改properties文件即可。这种技术多用于连接数据库的基本信息的配置以连接数据库的基本信息..._spring factory 配置文件自动装配

大学课程 操作系统 知识点总结 期末复习用,2024年最新阿里、百度等大厂技术面试题汇总-程序员宅基地

文章浏览阅读355次,点赞3次,收藏9次。Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察。

gateway 转发weboskct 报错 ClassCastException_org.apache.catalina.connector.responsefacade canno-程序员宅基地

文章浏览阅读3.1k次,点赞5次,收藏5次。使用环境: springcloud gateway 转发 websocket 报错报错内容:15:30:38.092 [http-nio-9999-exec-1] ERROR c.m.g.e.GlobalErrorWebExceptionHandler - [handle,38] - org.apache.catalina.connector.ResponseFacade cannot be cast to reactor.netty.http.server.HttpServerResponsej._org.apache.catalina.connector.responsefacade cannot be cast to reactor.netty

推荐文章

热门文章

相关标签