Springboot实现登录注册

功能:1、实现用户的登录

2、实现用户的注册以及重名的判断

LoginControl:

package com.example.demo.controls;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import com.example.demo.service.*;@RestController
public class LoginControl {@Autowiredprivate UserInfServiceInterface userInfService;@RequestMapping("/login")public ModelAndView login(String userid, String userpwd) {if (userInfService.login(userid, userpwd) == 1)return new ModelAndView("login_success.jsp");elsereturn new ModelAndView("login_failure.jsp");}}

RegisterControl:

package com.example.demo.controls;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;import com.example.demo.service.*;import com.example.demo.model.UserInf;@RestController
public class RegisterControl {@Autowiredpublic UserInfServiceInterface userInfService;@RequestMapping("/register")public ModelAndView register(UserInf ui) {if (userInfService.register(ui) == 1)return new ModelAndView("register_success.jsp");else if (userInfService.register(ui) == 0)return new ModelAndView("register_failure_user.jsp");elsereturn new ModelAndView("register_failure.jsp");}}

UserInfDaoInterface:

package com.example.demo.dao;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Component;import com.example.demo.model.*;
@Mapper
public interface UserInfDaoInterface {@Select("select count(*) from userinf where userid=#{userid} and userpwd=#{userpwd}")public int selectByIdPwd(@Param("userid")String userid,@Param("userpwd")String userpwd);@Select("select count(*) from userinf where realname=#{realname}")public int selectByRealname(@Param("realname")String realname);@Insert("insert into userinf values(#{userid},#{userpwd},#{realname})")public int insert(UserInf ui);
}

UserInf:

package com.example.demo.model;public class UserInf {private String userid;private String userpwd;private String realname;public String getUserid() {return userid;}public void setUserid(String userid) {this.userid = userid;}public String getUserpwd() {return userpwd;}public void setUserpwd(String userpwd) {this.userpwd = userpwd;}public String getRealname() {return realname;}public void setRealname(String realname) {this.realname = realname;}
}

UserInfService:

package com.example.demo.service;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import com.example.demo.dao.UserInfDaoInterface;
import com.example.demo.model.UserInf;@Service
@Transactional
public class UserInfService implements UserInfServiceInterface {
@Autowiredprivate UserInfDaoInterface userInfDao;@Overridepublic int login(String userid, String userpwd) {return userInfDao.selectByIdPwd(userid, userpwd);}@Overridepublic int register(UserInf ui) {// TODO Auto-generated method stub// TODO Auto-generated method stubif(userInfDao.selectByRealname(ui.getRealname())==1)return 0;else{if(userInfDao.insert(ui)==1)return 1;elsereturn 2;}}}

UserInfServiceInterface:

package com.example.demo.service;import com.example.demo.model.UserInf;public interface UserInfServiceInterface {public int login(String userid,String userpwd);public int register(UserInf ui);}

DemoApplication:

package com.example.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}}

application.properties:

server.port=8082spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/ssm?characterEncoding=utf8&useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root

login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
<head>
<title>登录界面</title>
</head>
<body><form method="post" action="login"><table><tr><th colspan="2">用户登录</th></tr><tr><td align="right">用户名:</td><td><input type="text" name="userid" /></td></tr><tr><td align="right">密码:</td><td><input type="password" name="userpwd" /></td></tr><tr><td align="left"><input type="submit" value="登录" /></td><td>未注册者,请先注册,单击 <a href="register.jsp">注册</a></td></tr></table></form><br>
</body>
</html>

login_success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head><title>登录成功</title>
</head>
<body>欢迎你,${user.userRealName} ,你登入成功!!<br>进入主页面,请点击<a href="index.jsp">主页面</a>。。。   
</body>
</html>

login_failure

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html><head>    <title>你的账号密码不匹配!</title>	</head>  <body><h2 align="center"><font color="red">对不起,你填写的账号和密码不正确!请</font><a href="login.jsp">重新登录</a>!</h2></body>
</html>

register.jsp

<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注册页面</title>
<script type="text/javascript">    function isValidate(form) {		var username=document.getElementById("username").value;			var userpass=document.getElementById("userpassword").value;		var userpass1=document.getElementById("userpass1").value;		if (userpass != userpass1) {alert("两次密码输入不一致,请重新输入!");			return false;}else if (userpass.length<=0 ||username.length<=0 ) {alert("用户名 以及密码不能为空,请重新输入!");			return false;}else{return true;}        }
</script>
</head><body><h3 align="left">欢迎注册我们的系统,请认真填写您的信息</h3><form action="register" method="post" onsubmit="return isValidate()"><table><tr><td align="right">账户名:</td><td><input type="text" name="userid" id="username"></td></tr><tr><td align="right">为您的账户设置密码:</td><td><input type="password" name="userpwd" id="userpassword"></td></tr><tr><td align="right">再次确认您的密码:</td><td><input type="password" id="userpass1"></td><td></td></tr><tr><td align="right">真实姓名:</td><td><input type="text" name="realname" id="userrealname"></td><td></td></tr><tr><td align="right"><input type="submit" value="提交"></td><td colspan="2"><input type="reset" value="重新填写"></td></tr></table></form></body>
</html>

register_success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html><head>    <title>注册成功!</title>	</head>  <body ><h3>恭喜,${ui.realname},你成功注册了我们的管理系统!点此<a href="login.jsp">登录</a></h3></body>
</html>

register_failure

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html><head>    <title>注册失败</title></head>  <body><h3>对不起,数据库出错,没有正确保存,请重新注册。</h3> <br><h2>请点击<a href="register.jsp">注册</a>。。。</h2></body>
</html>

register_failure_user

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html><head>    <title>注册失败</title></head>  <body><h3>对不起,此用户名:${ui.realname}已被占用,请重新注册。</h3> <br><h2>请点击<a href="register.jsp">注册</a>。。。</h2></body>
</html>

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>3.2.0</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>Demo project for Spring Boot</description><properties><java.version>17</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.20</version></dependency>	<dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId><scope>provided</scope></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-devtools</artifactId><optional>true</optional></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

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

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

相关文章

CEC2017(Python):五种算法(HHO、RFO、OOA、PSO、GWO)求解CEC2017

一、5种算法简介 1、哈里斯鹰优化算法HHO 2、红狐优化算法RFO 3、鱼鹰优化算法OOA 4、粒子群优化算法PSO 5、灰狼优化算法GWO 二、CEC2017简介 参考文献&#xff1a; [1]Awad, N. H., Ali, M. Z., Liang, J. J., Qu, B. Y., & Suganthan, P. N. (2016). “Problem d…

resnet18

ResNet18的基本含义是&#xff0c;网络的基本架构是ResNet&#xff0c;网络的深度是18层。但是这里的网络深度指的是网络的权重层&#xff0c;也就是包括池化&#xff0c;激活&#xff0c;线性层。而不包括批量化归一层&#xff0c;池化层。 transforms.RandomCrop(32, pa…

RabbitMQ 核心概念(交换机、队列、路由键),队列类型等介绍

RabbitMQ 核心概念(交换机、队列、路由键)&#xff0c;队列类型等介绍 RabbitMQ 是一个消息队列系统&#xff0c;它的核心概念包括交换机&#xff08;Exchange&#xff09;、队列&#xff08;Queue&#xff09;和路由键&#xff08;Routing Key&#xff09;&#xff0c;它们一起…

Apache Flink连载(二十):Flink On Yarn运行 - Yarn Per-Job模式(弃用)

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录 1. 任务提交命令 2. 任务…

OCP NVME SSD规范解读-4.NVMe IO命令-2

NVMe-IO-3&#xff1a; 由于设备具有掉电保护功能&#xff08;如Power Loss Protection&#xff0c;PLP&#xff09;&#xff0c;因此在以下情况下&#xff0c;性能不应降低&#xff1a; FUA&#xff08;Force Unit Access&#xff09;&#xff1a;是计算机存储设备中的一种命…

Grafana告警发送至飞书配置指定at某人或所有人

1.问题描述 通过webhook向飞书机器人发送消息&#xff0c;根据飞书机器人官方文档&#xff0c;始终无法指定某个人或者所有人通知&#xff0c;后来发现是文档参数有问题。 文档地址&#xff1a;https://open.feishu.cn/document/client-docs/bot-v3/add-custom-bot 官方文档给…

谷达冠楠:抖店怎么运营提升销量

随着电商行业的快速发展&#xff0c;抖店作为抖音平台上的一种新型电商模式&#xff0c;越来越受到商家和消费者的青睐。然而&#xff0c;如何在众多的抖店中脱颖而出&#xff0c;提升销量呢?本文将从以下几个方面为大家分享一些运营技巧。 选品策略&#xff1a;选对产品是提升…

day3双指针

输入一字符串&#xff0c;然后将该字符串中的单词分割开来 #include <iostream> #include <string.h> using namespace std; int main() {char str[1000];gets(str);int nstrlen(str);for(int i0;i<n;i){int ji;while(str[j]! &&j<n) j;for(int ki;k…

Gooxi受邀出席2023松山湖软件和信息服务业高质量发展大会

为推动粤港澳大湾区的软件和先进制造产业的融合发展&#xff0c;“2023松山湖软件和信息服务业高质量发展大会”于今日在松山湖畔隆重举办&#xff0c;会议以“推动软件和制造业深度融合发展&#xff0c;打造软件和信息服务业集聚高地”为主题&#xff0c;聚焦工业软件应用、智…

JavaScript(简写js)常用事件举例演示

目录 1.窗口事件onblur :失去焦点onfocus:获得焦点onload:窗口加载事件onresize:窗口大小缩放事件 二、表单事件oninput &#xff1a;当文本框内容改变时 &#xff0c;立即将改变内容 输出在控制台onchange&#xff1a; 内容改变事件onclick&#xff1a;鼠标单击时触发此事件 三…

Arduino串口发送接收和串口中断事件

目录 一、硬件介绍 1、控制器 2、TTL转USB串口 二、软件程序 1、单片机发送字符串 &#xff08;1&#xff09;每个串口对应的类名称介绍 &#xff08;2&#xff09;发送功能 &#xff08;3&#xff09;代码 &#xff08;4&#xff09;测试 2、单片机接收字符串 &…

Kafka:本地设置

这是设置 Kafka 将数据从 Elasticsearch 发布到 Kafka 主题的三部分系列的第一部分;该主题将被 Neo4j 使用。第一部分帮助您在本地设置 Kafka。第二部分将讨论如何设置Elasticsearch将数据发布到Kafka主题。最后 将详细介绍如何使用连接器订阅主题并使用数据。 Kafka Kafka 是…

JavaScript中实现页面跳转的几种常用方法

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍在JavaScript中实现页面跳转的几种常用方法以及部分理论知识 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主收将持续更新学习记录获&#xff0c;友友们有任何问题…

《Spring Cloud学习笔记:分布式事务Seata》

1.分布式事务理论基础 1.1.本地事务 本地事务&#xff0c;也就是传统的单机事务&#xff0c;在传统的数据库事务中&#xff0c;必须要满足ACID四个原则&#xff1a; 1.2.分布式事务 分布式事务&#xff0c;就是指不是在单个服务或单个数据库架构下产生的事务。 分布式事务是…

状态模式-举例

在软件系统中&#xff0c;有些对象也像水一样具有多种状态&#xff0c; 这些状态在某些情况下能够相互转换&#xff0c; 而且对象在不同的状态下也将具有不同的行为。 参考日志来设置状态。 如何判断一个设计模式是行为模式还是什么其他模式&#xff1f; 什么叫行为模式&#…

蓝桥圣诞树(C++)

问题描述 输入样例&#xff1a; 1 3 101 1 2 2 3 输出样例&#xff1a; YES 思路&#xff1a; 这道题还是比较好想的&#xff0c;因为它构造的二叉树是用边连接起来的&#xff0c;不是像之前一样从上到下从左到右按编号构造的&#xff0c;所以可以用邻接表来存每个点还有边&am…

腾讯云价格计算器,一键计算精准报价,好用!

腾讯云价格计算器&#xff1a;可以计算腾讯云服务器不同CVM实例规格、CPU内存、公网带宽和系统盘费用明细表&#xff0c;可以一键计算出精准报价明细表&#xff0c;腾讯云服务器网txyfwq.com分享大家腾讯云服务器价格计算器入口链接、使用方法及限制说明&#xff1a; 腾讯云服…

Python 操作 MySQL:使用 mysql-connector-python 操作 MySQL 数据库

大家好&#xff0c;我是水滴~~ 当涉及到使用 Python 操作 MySQL 数据库时&#xff0c;mysql-connector-python 库是一个强大而常用的选择。该库提供了与 MySQL 数据库的交互功能&#xff0c;使您能够执行各种数据库操作&#xff0c;如连接数据库、执行查询和插入数据等。在本文…

第十一章 Stream消息驱动

Stream消息驱动 gitee:springcloud_study: springcloud&#xff1a;服务集群、注册中心、配置中心&#xff08;热更新&#xff09;、服务网关&#xff08;校验、路由、负载均衡&#xff09;、分布式缓存、分布式搜索、消息队列&#xff08;异步通信&#xff09;、数据库集群、…

maven命令行安装依赖测试

mvn dependency:get -DgroupIdorg.springframework -DartifactIdspring-core -Dversion5.3.9作用&#xff1a;可用于测试配置环境变量后&#xff0c;能否下载依赖到本地仓库