springboot+html实现简单注册登录

news2024/11/25 20:43:17

前端:

register.html

<!DOCTYPE html>
<html lang="en" >
<head>
    <meta charset="UTF-8">
    <title>register</title>
    <link rel="stylesheet" type="text/css" href="/css/style.css" />
</head>
<body>
<div class="control">
    <div class="item">
        <div class="active">注册</div>
    </div>
    <div class="content">
        <div style="display: block;">
            <form action="/user/register" method="post">
            <p>用户名</p>
            <input type="text" placeholder="请输入用户名" name="username" />
            <p>密码</p>
            <input type="password" placeholder="请输入密码" name ="password"/>
            <br/>
            <input type="submit" value="注册"/>
            </form>
               <p>已注册,<a href="/user/login" target="top">去登录</a></p>

        </div>
    </div>
</div>
</body>
</html>

 

login.html

<!DOCTYPE html>
<html lang="en" >
<head>
    <meta charset="UTF-8">
    <title>login</title>
    <link href="/css/style.css"  type="text/css" rel="stylesheet">
    <script src="/static/js/change.js"></script>
</head>
<body>
<div class="control">
    <div class="item">
        <div class="active">登录</div>
    </div>
    <div class="content">
        <div style="display: block;">
            <form action="/user/login" method="post">
            <p>账号</p>
            <input type="text" placeholder="请输入用户名" name="username"/>
            <p>密码</p>
            <input type="password" placeholder="请输入密码"  name="password"/>
            <br/>
            <input type="submit" value="登录"/>
            </form>
            <p>没有账号,<a href="/user/register" target="top">去注册</a></p>
        </div>
    </div>
</div>
</body>
</html>

 

 

success.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
登录成功
</body>
</html>

 

style.css 

*{
    margin: 0;
    padding: 0;
}
body{
    background: #f3f3f3;
}
.control{
    width: 340px;
    background: white;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%);
    border-radius: 5px;
}
.item{
    width: 340px;
    height: 60px;
    background: #eeeeee;
}
.item div{
    width: 340px;
    height: 60px;
    display: inline-block;
    color: black;
    font-size: 18px;
    text-align: center;
    line-height: 60px;
    cursor: pointer;
}
.content{
    width: 100%;
}
.content div{
    margin: 20px 30px;
    display: none;
    text-align: left;
}
p{
    color: #4a4a4a;
    margin-top: 30px;
    margin-bottom: 6px;
    font-size: 15px;
}
.content input[type="text"], .content input[type="password"]{
    width: 100%;
    height: 40px;
    border-radius: 3px;
    border: 1px solid #adadad;
    padding: 0 10px;
    box-sizing: border-box;
}
.content input[type="submit"]{
    margin-top: 40px;
    width: 100%;
    height: 40px;
    border-radius: 5px;
    color: white;
    border: 1px solid #adadad;
    background: cyan;
    cursor: pointer;
    letter-spacing: 4px;
    margin-bottom: 40px;
}
.active{

    background: white;
}
.item div:hover{
    background: #f6f6f6;
}

 后端:

com.example.entity.User

@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@Table( "user")

public class User {

    private String username;
    private String password;

}

数据库建表(user)

 com.example.mapper.UserMapper

@Mapper
public interface UserMapper extends BaseMapper<User> {

    @Select(value = "select u.username,u.password from user u where u.username=#{username}")
    User findUserByName(@Param("username") String username);

}

 com.example.controller.UserController

@Controller
@RequestMapping("user")
public class UserController {
    @Autowired
    private UserMapper userMapper;
    @RequestMapping("/register")
    public String register(User user, Model m) {
        if (user.getUsername()!=null&&userMapper.findUserByName(user.getUsername()) == null) {
            //判断用户是否已经存在
           if (!user.getUsername().isEmpty()) {
                //注册的时候,用户名不能为空
                if (!user.getPassword().isEmpty()) {
                    //注册 的时候,密码不能为空*/
                    userMapper.insert(user);
                    return "html/login";
                } else {
                    m.addAttribute("msg", "用户名已经存在!");
                    return "html/register";
                }
            } else {
                m.addAttribute("msg", "用户名不能为空!");
                return "html/register";
            }
        } else {
            m.addAttribute("msg", "密码不能为空!");
            return "html/register";
        }
    }


    @RequestMapping("/login" )
    public String login(  User user, Model m){
        User exitUser=userMapper.findUserByName(user.getUsername());
        if(user.getUsername()==null||user.getUsername().isEmpty()){
            m.addAttribute("msg","用户名不能为空");
            return "html/login";
        }
        if(user.getPassword()==null||user.getPassword().isEmpty()){
            m.addAttribute("msg","密码不能为空");
            return "html/login";
        }
        if(exitUser==null){
            m.addAttribute("msg","该用户未注册");
            return "html/login";
        }
        if(!user.getPassword().equals(exitUser.getPassword())){
            m.addAttribute("msg","用户输入的密码有误");
            return "html/login";
        }else{

            m.addAttribute("msg","登录成功");
            return "html/success";
    }

    }

}

注册逻辑:

1.判断要创建的用户在数据库是否存在,如果不存在就注册

2.注册的时候用户名不能为空

3.注册的时候密码不能为空

登录逻辑:

1.判断要登录的用户在数据库是否存在,如果存在就登录

2.登录的时候,输入的密码要与数据库里对应的用户的密码保持一致

3.登录的时候,输入用户名与密码不能为空

application.properities

spring.datasource.url=jdbc:mysql://localhost:3306/springboot?serverTimezone=GMT
spring.datasource.username=root
spring.datasource.password=1234


pom.xml 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>2.5.0</version>
       <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>register-login</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>register-login</name>
    <description>register-login</description>
    <properties>
       <java.version>1.8</java.version>
    </properties>
    <dependencies>
       <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
       </dependency>

       <dependency>
          <groupId>com.mysql</groupId>
          <artifactId>mysql-connector-j</artifactId>
          <version>8.0.33</version>
          <scope>runtime</scope>
       </dependency>
       <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <optional>true</optional>
       </dependency>



       <dependency>
          <groupId>com.mybatis-flex</groupId>
          <artifactId>mybatis-flex-spring-boot-starter</artifactId>
          <version>1.6.4</version>
       </dependency>
       <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-test</artifactId>
          <scope>test</scope>
       </dependency>
       <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-thymeleaf</artifactId>
       </dependency>
       <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-devtools</artifactId>
          <optional>true</optional>
       </dependency>



       <dependency>
       <groupId>com.mybatis-flex</groupId>
       <artifactId>mybatis-flex-spring-boot-starter</artifactId>
       <version>1.6.4</version>
       </dependency>
       <dependency>
          <groupId>com.mybatis-flex</groupId>
          <artifactId>mybatis-flex-spring-boot-starter</artifactId>
          <version>1.6.4</version>
       </dependency>


       <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-data-jpa</artifactId>
       </dependency>


    </dependencies>

    <build>
       <plugins>
          <plugin>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-maven-plugin</artifactId>
             <configuration>
                <fork>true</fork>
                <excludes>
                   <exclude>
                      <groupId>org.projectlombok</groupId>
                      <artifactId>lombok</artifactId>
                   </exclude>
                </excludes>
             </configuration>
          </plugin>
       </plugins>
    </build>

</project>

 

调试:

注册:

如果注册的用户在数据库中不存在,且注册的时候,用户名与密码都不为空,则跳转到

登录界面,反之,任意一个条件都不满足的话就不会跳转到登录界面

登录:

如果登录的用户在数据库中存在,且登录的时候,用户名不为空,密码不为,则跳转到

成功界面(success.html),反之,任意一个条件都不满足的话就不会跳转到成功界面。

 

 

 

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

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

相关文章

Find My产品|智能头盔与苹果Find My结合,智能防丢,全球定位

智能头盔作为一种新兴的智能穿戴设备&#xff0c;融合了先进的技术和先进的安全特性。当下&#xff0c;全球智能头盔市场规模预计将在未来几年内达到令人吃惊的规模。智能头盔在运动、娱乐、工业等领域具有广泛的应用。 智能头盔作为一种能够提供保护和监测功能的穿戴设备&…

scrollIntoView使用与属性详解

scrollIntoView 使用与属性详解 效果图如下图所示 如果要想让元素滚动到指定位置 window.onload function () {containerItems[6].scrollIntoView({ behavior: "smooth" }); };js 代码 const containerItems document.querySelectorAll(".container div&…

jmeter(二):jmeter组件总结,利用取样器中http发送请求

JMeter 的主要测试组件总结如下 1. 测试计划是使用 JMeter 进行测试的起点&#xff0c;它是其它 JMeter 测试元件的容器 2. 线程组代表一定数量的并发用户&#xff0c;它可以用来模拟并发用户发送请求。实际的 请求内容在Sampler中定义&#xff0c;它被线程组包含。 3. 监听…

docker ---rabbitmq 安装

第一步:安装rabbitmq sudo docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.9-management第二步&#xff1a;安装延迟队列插件&#xff08;因为使用了延迟队列&#xff09; 1、将插件 放入 /plugins/ 目录下&#xff08;需要先将插件文件放入宿主…

C++项目实战——基于多设计模式下的同步异步日志系统-⑩-异步缓冲区类与异步工作器类设计

文章目录 专栏导读异步缓冲区设计思想异步缓冲区类设计异步工作器类设计异步日志器设计 专栏导读 &#x1f338;作者简介&#xff1a;花想云 &#xff0c;在读本科生一枚&#xff0c;C/C领域新星创作者&#xff0c;新星计划导师&#xff0c;阿里云专家博主&#xff0c;CSDN内容…

数据结构----算法--排序算法

数据结构----算法–排序算法 一.冒泡排序&#xff08;BubbleSort&#xff09; 1.冒泡排序的核心思想 相邻两个元素进行大小比较&#xff0c;如果前一个比后一个大&#xff0c;就交换 注意&#xff1a; 在冒泡排序的过程中&#xff0c;促进了大的数往后去&#xff0c;小的数…

2023年中国功率半导体分立器件发展趋势分析:产品向高效率、低成本发展[图]

功率半导体分立器件是指被规定完成某种基本功能&#xff0c;并且本身在功能上不能再细分的半导体器件。功率半导体分立器件的应用几乎覆盖所有的电子制造业&#xff0c;传统应用领域包括消费电子、网络通讯等&#xff1b;近年来&#xff0c;汽车电子及充电系统、新能源发电等领…

log4j2同步日志引发的性能问题 | 京东物流技术团队

1 问题回顾 1.1 问题描述 在项目的性能测试中&#xff0c;相关的接口的随着并发数增加&#xff0c;接口的响应时间变长&#xff0c;接口吞吐不再增长&#xff0c;应用的CPU使用率较高。 1.2 分析思路 谁导致的CPU较高&#xff0c;阻塞接口TPS的增长&#xff1f;接口的响应时…

零基础实战部署云服务器项目-服务器部署(window server2012)

目录 什么是服务器呢&#xff1f; 项目服务器运行环境 一、申请服务器 1.找店铺 2.1选配置 型号 2.2配置&#xff08;具体配置&#xff09; 3.下单 4.收货 情况一&#xff1a;弹窗有进入控制台 情况二&#xff1a;手快关闭了窗口 所以下一步我们远程连接 方法二&#xff1a;win…

实验室安全巡检管理系统—全面安全检查

安全巡检管理系统可以代替传统的线下纸质巡查&#xff0c;微信扫码进行巡检记录、隐患上报、设备保养维护等工作&#xff0c;管理人员可远程实时查看巡查情况&#xff0c;同时在巡查结束后对现场问题进行闭环整改管理。大大提高现场巡查效率&#xff0c;辅助用户对巡查工作实时…

代码随想录二刷 Day 35

122.买卖股票的最佳时机 II 数组两两求差&#xff0c;然后把正数加起来 class Solution { public:int maxProfit(vector<int>& prices) {int sum0;int diff0;for(int i0;i<prices.size()-1;i){diff prices[i1] - prices[i];if(diff>0){sumdiff;}} return su…

智慧公厕设计选哪家?智慧公厕厂家创新性智慧公厕建设方案揭秘

随着人们生活水平的提高&#xff0c;公共卫生设施的建设也变得越来越重要。其中&#xff0c;智慧公厕作为一种创新的建设方案&#xff0c;备受关注。那么&#xff0c;在众多智慧公厕厂家中&#xff0c;广州中期科技有限公司的智慧公厕怎么建设&#xff1f;其中的技术方案有何独…

【广州华锐互动】利用VR开展高压电缆运维实训,提供更加真实、安全的学习环境

VR高压电缆维护实训系统由广州华锐互动开发&#xff0c;应用于多家供电企业的员工培训中&#xff0c;该系统突破了传统培训的限制&#xff0c;为学员提供了更加真实、安全的学习环境&#xff0c;提高了培训效率和效果。 传统电缆井下运维培训通常是在实际井下环境中进行&#x…

Protocols/面向协议编程, DependencyInjection/依赖式注入 的使用

1. Protocols 定义实现协议&#xff0c;面向协议编码 1.1 创建面向协议实例 ProtocolsBootcamp.swift import SwiftUI/// 颜色样式协议 protocol ColorThemeProtocol {var primary: Color { get }var secondary: Color { get }var tertiary: Color { get } }struct DefaultCol…

MySQL JSON_TABLE() 函数

JSON_TABLE()函数从一个指定的JSON文档中提取数据并返回一个具有指定列的关系表。 应用&#xff1a;数据库字段以JSON 存储后&#xff0c;实际应用需要对其中一个字段进行查询 语法 JSON_TABLE(json,path COLUMNS(column[,column[,...]]))column:name参数 json必需的。一个 …

2023年全球半导体零部件市场发展现状分析:半导体零部件行业集中度高[图]

半导体零部件指的是在材料、结构、工艺、精度和品质、稳定性及可靠性等性能方面符合半导体设备技术要求的零部件&#xff0c;如O-Ring密封圈、精密轴承、射频电源、静电吸盘&#xff08;ESC&#xff09;、MFC流量计、石英件、硅及碳化硅件等。 半导体零部件分类 资料来源&…

【JVM面试】从JDK7 到 JDK8, JVM为啥用元空间替换永久代?

系列文章目录 【JVM系列】第一章 运行时数据区 【面试】第二章 从JDK7 到 JDK8, JVM为啥用元空间替换永久代&#xff1f; 大家好&#xff0c;我是青花。拥有多项发明专利&#xff08;都是关于商品、广告等推荐产品&#xff09;。对广告、Web全栈以及Java生态微服务拥有自己独到…

【京东开源项目】微前端框架MicroApp 1.0正式发布

介绍 MicroApp是由京东前端团队推出的一款微前端框架&#xff0c;它从组件化的思维&#xff0c;基于类WebComponent进行微前端的渲染&#xff0c;旨在降低上手难度、提升工作效率。MicroApp无关技术栈&#xff0c;也不和业务绑定&#xff0c;可以用于任何前端框架。 源码地址…

如何优雅的实现接口统一调用

耦合问题 有些时候我们在进行接口调用的时候&#xff0c;比如说一个push推送接口&#xff0c;有可能会涉及到不同渠道的推送&#xff0c;以我目前业务场景为例&#xff0c;我做结算后端服务的&#xff0c;会与金蝶财务系统进行交互&#xff0c;那么我结算后端会涉及到多个结算…