精华内容
下载资源
问答
  • springBoot登录注册功能的实现,适用于新手小白,Tomcat端口号为8088
  • SpringBoot实现登录注册功能【Demo】

    万次阅读 多人点赞 2018-07-07 23:50:39
    本文使用springboot+mybatis注解方式,完成简单的注册登录功能。且前后端分离,向前端返回json字符串。 最终效果如下: 注册: 如果用户名重复:返回json串 {"msg":"用户名已存在","success":false,"detail...

    文末有下载链接

    本文使用springboot+mybatis注解方式,完成简单的注册和登录功能。且前后端分离,向前端返回json字符串。

    最终效果如下:

    注册:

            如果用户名重复返回json串    {"msg":"用户名已存在","success":false,"detail":null}

            如果正常{"msg":"注册成功","success":true,"detail":{"id":9,"username":"test","password":"1"}}

    登录用之前注册的账户登录

            如果正常{"msg":"登录成功","success":true,"detail":{"id":1,"username":"user1","password":"a"}}

    步骤:-----------------------------------------------------------------------------------------------------------------

    1. 建立javabean和表结构对应

    //用户信息
    public class User {
        private Long id;
        private String username;
        private String password;
        //... getter and setter
    }
    //sql
    CREATE TABLE `user` (
      `id` bigint(32) NOT NULL AUTO_INCREMENT,
      `username` varchar(255) DEFAULT NULL,
      `password` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    2. 创建maven工程, 并添加spring-boot及相关依赖

    <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
        </properties>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.10.RELEASE</version>
        </parent>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!--mybatis-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.3.1</version>
            </dependency>
            <!--整合mysql-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
            <!--json @responseBody/@requestBody-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.54</version>
            </dependency>
        </dependencies>

    3. 配置文件

     整体文件结构

    在resource下创建application.yml, 内容:

    server:
      port: 9090
    spring:
      datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/login?useUnicode=true&characterEncoding=utf-8&useSSL=false
        username: root
        password: 123456
      resources:
        static-locations: classpath:/templates  #访问静态页面

    4. 页面

            注册页面: regist.html

    <head>
        <meta charset="UTF-8">
        <title>用户注册</title>
    </head>
    <body>
        <form action="/user/regist" method="post">
            用户名:<input name="username" type="text"/><br>
            密码:<input name="password" type="password"> <br>
            <input type="submit" value="注册">
        </form>
    </body>

            登录页面 login.html

    <head>
        <meta charset="UTF-8">
        <title>用户登录</title>
    </head>
    <body>
        <form action="/user/login" method="post">
            用户名:<input name="username" type="text"/><br>
            密码:<input name="password" type="password"> <br>
            <input type="submit" value="登录">
        </form>
    </body>

    5. 后端代码

        (1). 定义向前端返回的json

    /**
     * 向前端返回信息封装
     * @param <T> 可变类型
     */
    public class Result<T> {
        //返回信息
        private String msg;
        //数据是否正常请求
        private boolean success;
        //具体返回的数据
        private T detail;
        //... getter and setter
    }

        (2). 在外层包(所有类和接口所在包的外层)创建springBoot启动入口

    /**
     * @SpringBootApplication相当于3个注解
     * 1. @Configuration  定义一个配置类
     * 2. @EnableAutoConfiguration spring boot自动根据jar包的依赖来自动配置项目
     * 3. @ComponentScan  spring自动扫描类上的注解, 并注入spring容器
     */
    @SpringBootApplication
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Application.class,args);
        }
    }

        (3). controller

    @RestController    //相当于@Controller+@RequestBody
    @RequestMapping("/user")
    public class UserController {
    
        @Autowired
        private UserService userService;
        /**
         * 注册
         * @param user 参数封装
         * @return Result
         */
        @PostMapping(value = "/regist")
        public Result regist(User user){
            return userService.regist(user);
        }
        /**
         * 登录
         * @param user 参数封装
         * @return Result
         */
        @PostMapping(value = "/login")
        public Result login(User user){
            return userService.login(user);
        }
    }

        (4). service

    @Service
    @Transactional(rollbackFor = RuntimeException.class)
    public class UserService {
    
        @Autowired
        private UserMapper userMapper;
        /**
         * 注册
         * @param user 参数封装
         * @return Result
         */
        public Result regist(User user) {
            Result result = new Result();
            result.setSuccess(false);
            result.setDetail(null);
            try {
                User existUser = userMapper.findUserByName(user.getUsername());
                if(existUser != null){
                    //如果用户名已存在
                    result.setMsg("用户名已存在");
    
                }else{
                    userMapper.regist(user);
                    //System.out.println(user.getId());
                    result.setMsg("注册成功");
                    result.setSuccess(true);
                    result.setDetail(user);
                }
            } catch (Exception e) {
                result.setMsg(e.getMessage());
                e.printStackTrace();
            }
            return result;
        }
        /**
         * 登录
         * @param user 用户名和密码
         * @return Result
         */
        public Result login(User user) {
            Result result = new Result();
            result.setSuccess(false);
            result.setDetail(null);
            try {
                Long userId= userMapper.login(user);
                if(userId == null){
                    result.setMsg("用户名或密码错误");
                }else{
                    result.setMsg("登录成功");
                    result.setSuccess(true);
                    user.setId(userId);
                    result.setDetail(user);
                }
            } catch (Exception e) {
                result.setMsg(e.getMessage());
                e.printStackTrace();
            }
            return result;
        }
    }

        (5). mapper

    /**
     * mapper的具体表达式
     */
    @Mapper //标记mapper文件位置,否则在Application.class启动类上配置mapper包扫描
    @Repository
    public interface UserMapper {
    
        /**
         * 查询用户名是否存在,若存在,不允许注册
         * 注解@Param(value) 若value与可变参数相同,注解可省略
         * 注解@Results  列名和字段名相同,注解可省略
         * @param username
         * @return
         */
        @Select(value = "select u.username,u.password from user u where u.username=#{username}")
        @Results
                ({@Result(property = "username",column = "username"),
                  @Result(property = "password",column = "password")})
        User findUserByName(@Param("username") String username);
        
        /**
         * 注册  插入一条user记录
         * @param user
         * @return
         */
        @Insert("insert into user values(#{id},#{username},#{password})")
        //加入该注解可以保存对象后,查看对象插入id
        @Options(useGeneratedKeys = true,keyProperty = "id",keyColumn = "id")
        void regist(User user);
        
        /**
         * 登录
         * @param user
         * @return
         */
        @Select("select u.id from user u where u.username = #{username} and password = #{password}")
        Long login(User user);
    }

    6. 效果

    注册:

            如果用户名重复返回json串    {"msg":"用户名已存在","success":false,"detail":null}

            如果正常{"msg":"注册成功","success":true,"detail":{"id":9,"username":"test","password":"1"}}

    登录用之前注册的账户登录

            如果正常{"msg":"登录成功","success":true,"detail":{"id":1,"username":"user1","password":"a"}}

    7. 下载链接

    github链接:https://github.com/laoyog/springboot-login

    CSDN链接:https://download.csdn.net/download/bytearr/11136431

    展开全文
  • User表的设计点击打开链接SpringBoot注册登录(二):注册---验证码kaptcha的实现点击打开链接 SpringBoot注册登录(三):注册--验证账号密码是否符合格式及后台完成注册功能点击打开链接 SpringBoot注册登录(四):...

    SpringBoot注册登录(一):User表的设计点击打开链接

    SpringBoot注册登录(二):注册---验证码kaptcha的实现点击打开链接

          SpringBoot注册登录(三):注册--验证账号密码是否符合格式及后台完成注册功能点击打开链接

         SpringBoot注册登录(四):登录功能--密码错误三次,需要等待2分钟才能登录,固定时间内不能登录点击打开链接

    SpringBoot注册登录(五):登录功能--Scheduling Tasks定时作业,用于某个时间段允许/不允许用户登录点击打开链接

        SpringBoot(六):拦截器--只允许进入登录注册页面,没登录不允许查看其它页面点击打开链接

          SpringBoot--mybatis--ajax--模态框--log:注册、登录、拦截器、文件系统源代码点击打开链接




    首先重复上一篇提到的register.html,所以如果只要验证账号密码功能的,不用看上一篇也无所谓。

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8"/>
    <title>用户注册页面</title>
    <script src="webjars/jquery/3.1.1/jquery.min.js"></script>
    <script src="webjars/bootstrap/3.3.5/js/bootstrap.min.js"></script>
    <link rel="stylesheet"
    	href="webjars/bootstrap/3.3.5/css/bootstrap.min.css" />
    <script type="text/javascript" src="/js/kaptcha.js"></script>
    <script type="text/javascript" src="/js/validate.js"></script>
    <script type="text/javascript" src="/js/register.js"></script>
    </head>
    <body>
    <!-- begin:添加一个注册表单 -->
    	<div>
    		<form id="insert_modal" class="form-horizontal">
    			<div class="col-sm-10">
    				<input type="text" class="form-control" id="insert_name"
    					name="name" placeholder="请输入账号"/> <span
    					class="help-block"></span>
    			</div>
    			<div class="col-sm-10">
    				<input type="password" class="form-control" id="insert_password"
    					name="password" placeholder="请输入密码"/> <span
    					class="help-block"></span>
    			</div>
    			
    			<!-- begin:验证码 -->
    			<div class="col-sm-10">
    				<input type="text" class="form-control" id="kaptcha" name="kaptcha"
    					placeholder="请输入验证码" style="color: #000000;" /><span
    					class="help-block"></span> <img
    					src="kaptcha.jpg" width="200" id="kaptchaImage" title="看不清,点击换一张" />
    				<small>看不清,点击换一张</small>
    				
    				<p></p>
    				<button type="button" class="btn btn-primary" id="user_insert_btn">注册</button>
    			
    				<div>
    					<!-- begin:登录功能 -->
    					<p></p><p><a th:href="@{/signin} ">点击前往登录吧!</a></p>
    				</div>
    			
    			</div>
    			<!-- end:验证码 -->
    			
    		</form>
    		
    	</div>
    	
    	
    	
    	
    </body>
    </html>


    ②使用webjars引入bootstrap和jquery,不需要自己下载这两个的js文件,在这个目录下新建一个名为webjars的文件夹就可以直接引入了




    <dependency>  
                <groupId>org.webjars</groupId>  
                <artifactId>jquery</artifactId>  
                <version>3.1.1</version>  
            </dependency> 


    ③前端校验账号密码要引入的jar

                    <!-- JRS303校验 -->
    		<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
    		<dependency>
    			<groupId>org.hibernate</groupId>
    			<artifactId>hibernate-validator</artifactId>
    		</dependency>




    ④前端验证账号密码是否符合格式的validate.js


    //显示验证结果
    function show_validate_msg(ele, status, msg) {
    	if ("success" == status) {
    		// 让父容器变色
    		$(ele).parent().addClass("has-success");
    		// 给sapn赋值正确信息
    		$(ele).next("span").text(msg);
    	} else if ("error" == status) {
    		// 让父容器变色
    		$(ele).parent().addClass("has-error");
    		// 给sapn赋值错误信息
    		$(ele).next("span").text(msg);
    	}
    }
    
    // 验证账号密码
    function validate_add_form() {
    	// 验证用户名
    	var name = $("#insert_name").val();
    	var reg_name = /(^[a-zA-Z0-9_-]{6,19}$)|(^[\u2E80-\u9FFF]{2,5})/;
    	if (!reg_name.test(name)) {
    		show_validate_msg("#insert_name", "error", "用户名必须是2-5位中文或6-19位英文和数字的组合");
    		return false;
    	} else {
    		show_validate_msg("#insert_name", "success", "");
    	}
    
    	// 验证密码
    	var password = $("#insert_password").val();
    	var reg_password = /(^[a-zA-Z0-9_-]{6,19}$)/;
    	if (!reg_password.test(password)) {
    		show_validate_msg("#insert_password", "error", "密码必须是6-19位英文和数字的组合");
    		return false;
    	} else {
    		show_validate_msg("#insert_password", "success", "");
    	}
    	return true;
    }
    
    
    

    二、

         2.1 注册功能ajax请求的register.js


    $(function(){ 
    $("#user_insert_btn").click(function(){
    	
    	//前端正则表达式验证
    	if(!validate_add_form()){
    		return false;
    	}
    	//验证用户名是否已经被占用
    	if($(this).attr("ajax-va")=="error"){
    		return false;
    	} 
    	
    	var kaptcha = $("#kaptcha").val();
    	if (kaptcha.length == 0) {
    		alert("您没有输入验证码!");
    	} else {
    		var name = $("#insert_name").val();
    		var password = $("#insert_password").val();
    		
    		//发起ajax进行添加操作
    		$.ajax({
    			url:"register",
    			data:{"name":name,"password":password},  
    			type:"post",
    			success:function(msg){
    				if(msg.code==100){
    					//这里再次经过请求才进登录页面
    					//如果放在静态static下静态页面就可以直接这样子跳页面:window.location.href = "signin.html";
    					//但是在templates下必须经过请求否则就会暴露页面不安全
    					
    					//跳转到登录页面
    					window.location.href = "signin";
    				}else{
    					alert("---注册失败---");
    					//显示失败信息
    					//有哪个字段错误,就显示哪个字段
    					if(undefined!=msg.map.map.username){
    						//显示账号错误信息
    						show_validate_msg("#insert_name","error",msg.map.map.username);
    					}
    					if(undefined!=msg.map.map.password){
    						show_validate_msg("#insert_password","error",msg.map.map.password);
    					}
    				}
    
    			},
    			error:function(){
    			}
    		});
    	}
    	
    	
    	
    	
    });
    }); 

     

        2.2 后台代码

    @ResponseBody
    	@RequestMapping("/register")
    	public Msg Register(String name,String password) {
    		//判断该用户名是否已被注册
    		boolean num = userService.userRegister(name);
    		
    		if (num == false) {
    			Map<String, Object> map2 = new HashMap<String, Object>();
    			map2.put("username", "用户名已被注册");
    			return Msg.error().add("map", map2);
    		} else {
    			User user = new User();
    			user.setName(name);
    			user.setPassword(password);
    			//新注册用户错误次数都为0
    			user.setMissNumber(0);
    			//1超级管理员:直接修改数据库的用户,只能打开mySQL改的
    			//2普通会员:通过请求注册的用户
    			user.setRoleId(2);
    			int flag = userService.userInsert(user);
    			
    			if (flag==1) {
    				return Msg.success();
    			} else {
    				return Msg.error();
    			}
    		}
    	}


    展开全文
  • User表的设计点击打开链接SpringBoot注册登录(二):注册---验证码kaptcha的实现点击打开链接SpringBoot注册登录(三):注册--验证账号密码是否符合格式及后台完成注册功能点击打开链接SpringBoot注册登录(五):...

    SpringBoot注册登录(一):User表的设计点击打开链接

    SpringBoot注册登录(二):注册---验证码kaptcha的实现点击打开链接

    SpringBoot注册登录(三):注册--验证账号密码是否符合格式及后台完成注册功能点击打开链接

    SpringBoot注册登录(五):登录功能--Scheduling Tasks定时作业,用于某个时间段允许/不允许用户登录点击打开链接

    SpringBoot(六):拦截器--只允许进入登录注册页面,没登录不允许查看其它页面点击打开链接

          SpringBoot--mybatis--ajax--模态框--log:注册、登录、拦截器、文件系统源代码点击打开链接 




    首先用一个图来表达这个登录功能:





    一、前端页面

        1.1  login.html

    <!DOCTYPE html>
    <html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
    <head>
    	<script src="webjars/jquery/3.1.1/jquery.min.js"></script>  
    	<script src="webjars/bootstrap/3.3.5/js/bootstrap.min.js"></script>
    	<link rel="stylesheet"
    	href="webjars/bootstrap/3.3.5/css/bootstrap.min.css" />
    	<script type="text/javascript" src="/js/validate.js"></script>
    	<script type="text/javascript" src="/js/kaptcha.js"></script>
    	<script type="text/javascript" src="/js/login.js"></script>
        <meta charset="UTF-8"/>
        <title>登录页面</title>
    </head>
    <body>
    
    	<p id="prompt"></p>
    	
    	<p>账号:<input type="text"  id="name" name="name"/></p>
    	<p>密码:<input type="password"  id="password" name="password"/></p>
    	<p></p>
    	<!-- begin:验证码 -->
    		<input type="text" class="form-controlA" id="kaptcha" name="kaptcha"
    			placeholder="请输入验证码" style="color: #000000;" />
    			<span class="help-block"></span> 
    			<img src="kaptcha.jpg" width="200" id="kaptchaImage" title="看不清,点击换一张" /> <small>看不清,点击换一张</small>
    	<!-- end:验证码 -->
    	<p></p>
    	<p>
    	<button type="button" class="btn btn-primary" id="user_insert_btn">登录</button>
    	</p>
    
    	<!-- begin:注册功能 -->
    	<p></p><p><a th:href="@{/index} ">点击前往注册吧!</a></p>
    
    </body>
    </html>



    1.2 login.js

    $(function(){ 
    $("#user_insert_btn").click(function(){
    	
    	var kaptcha = $("#kaptcha").val();
    	if (kaptcha.length == 0) {
    		alert("您没有输入验证码!");
    	} else {
    		
    	
    	var name = $("#name").val();
    	var password = $("#password").val();
    	//发送ajax请求修改员工数据
    	$.ajax({
    		url:"login",
    		data:
    		{name:name,password:password},
    		type:"post",
    		success:function(msg){
    			console.log(msg);
    			//100表示成功
    			if (msg.code == 100) {
    				//跳到发表文章页面:因为路线二,所以把这个注释先
    				//window.location.href = "article/publish.html?";
    				
    				//跳到显示全部文章页面
    				//window.location.href = "article/showAllArticle.html?";
    				
    				//跳转到创建文件夹及显示全部文件夹功能页面
    				window.location.href = "showAllFolder";
    			
    				//后台获取要加一杠/showAllArticle
    				//window.location.href = "showAllArticle";
    			} else {
    				 $('#prompt').text(msg.map.errMsg);  
    			}
    		 },
    		 error:function(XMLHttpRequest, textStatus, errorThrown) {
    			 alert(XMLHttpRequest.status);
    			 alert(XMLHttpRequest.readyState);
    			 alert(textStatus);
    		 }
    		
    		}); 
    	
    	}
    	
    	
    	
    	
    });
    }); 



    二、后台代码

         2.1 UserController.java

    @ResponseBody
        @RequestMapping("/login")
        public Msg Login(HttpServletRequest request,String name, String password){
        	
        	//根据账号判断数据库中是否存在该用户
    		List<User> userList = userService.selectByNameForId(name);
        	//如果不存在该用户
        	if (userList.size() == 0) {
        		//返回登录页面
        		return Msg.error().add("errMsg", ErrEnum.NAME_LOGIN_ERROR.getErrorMessage());
    
        	//如果存在该用户
        	} else {
        		
        		//获得登录失败的次数
        		int intMissNumber = userList.get(0).getMissNumber();
        		
        		//因为不能有相同的用户名,所以该List<User>只有一个值,可以直接使用获得id值
    	    	int intUserId = userList.get(0).getId();
    	    	
        		//获得该用户上一次登录的时间
        		Date dateLogin = userList.get(0).getMissTime();
        		
        		//获得允许登录时间的字段:allow_time
        		Date dateAllowTime = userList.get(0).getAllowTime();
        		
        		//获得当前时间
        		Date dateNow = new Date();
        		
        		//根据账号和密码判断是否输入的都正确
    	    	int num = userService.selectByNamePassword(name,password);
    	    	
    	    	//begin:对能否登录时间的判断
    	    	
    	    	//如果该时间允许登录
    	    	//如果现在的时间大于允许登录的时间
        		if (dateAllowTime == null ||dateNow.getTime() > dateAllowTime.getTime()) {
        			
        			//begin:对错误登录次数的判断
        			//判断错误次数是否大于等于3
    	    		if (intMissNumber >= 3 ) {
    	    			//已经登录失败了三次及以上,锁定账号,不允许登录
    	    			//允许登录的时间加2分钟
    	    			logger.info("允许登录的时间没有加2分钟前是:"+dateAllowTime);
    	    			Date dateAfterAllowTime = new Date(dateNow .getTime() + 120000);
    	    			logger.info("允许登录的时间加2分钟后是:"+dateAfterAllowTime);
    	    			//修改数据库中的miss_number错误记录的数目
    	    			//把错误次数清0
    	    		    intMissNumber = 0;
    					User user = new User();
    					user.setId(intUserId);
    					user.setMissNumber(intMissNumber);
    					user.setAllowTime(dateAfterAllowTime);		
    					int intFlag = userService.updateByPrimaryKeySelective(user);
    					logger.info("intFlag:"+intFlag);
    					logger.info("222时间允许登录,但是错误次数超过三次!");    	
    	    			return Msg.error().add("errMsg", ErrEnum.MISS_LOGIN_ERROR.getErrorMessage());
    	    			
    	    		//错误次数小于三次,可以登录	
    	    		}else {
    	    			
    	    			//begin:对密码是否正确的判断
    	    			//如果密码对了
    			    	if (num != 0) {
    			    		//把错误次数清0
    			    		intMissNumber = 0;
    			    		//记录最新登录的时间
    			    		dateLogin = new Date();
    			    		//记录最新的允许登录时间
    			    		dateAllowTime = new Date();
    			    		
    			    		//修改数据库中的miss_number错误记录的数目
    						User user = new User();
    						user.setId(intUserId);
    						user.setMissTime(dateLogin);
    						user.setMissNumber(intMissNumber);
    						user.setAllowTime(dateAllowTime);
    						
    						int intFlag = userService.updateByPrimaryKeySelective(user);
    				    	logger.info("intFlag:"+intFlag);
    				    	//把id保存进session,在后面的文章发表、评论发表时候会用到
    				    	HttpSession session = request.getSession();
    				    	session.setAttribute("intUserId", intUserId);
    				    	
    				    	//begin:拦截器所需
    				    	session.setAttribute("userList", userList);
    				    	//end:拦截器所需
    				    	return Msg.success();
    				    
    				    //如果密码错了
    					}else {
    						//把错误次数+1
    						intMissNumber = intMissNumber + 1;
    						//修改数据库中的miss_number错误记录的数目
    						User user = new User();
    						user.setId(intUserId);
    						user.setMissNumber(intMissNumber);
    						int intFlag = userService.updateByPrimaryKeySelective(user);
    				    	logger.info("密码错误的intFlag:"+intFlag);
    						
    						return Msg.error().add("errMsg", ErrEnum.PASSWORD_LOGIN_ERROR.getErrorMessage());
    					}
    			    	//end:对密码是否正确的判断
    				}
    	    		//end:错误登录次数的判断
        			
        		//该时间不允许登录
        		}else {
        			logger.info("111对时间的判断结果:当前时间不允许登录!");
    				return Msg.error().add("errMsg", ErrEnum.ALLOW_LOGIN_ERROR.getErrorMessage());
    			}
        		
        		//end:对能否登录时间的判断
    		}
        
        
       } 
       //end:login方法

    展开全文
  • 使用Springboot实现登录注册功能 注册: 实质操作为,在数据库中做insert添加操作,同时判断输入密码和再次输入密码是否一致,一致进行注册,否则失败。 登录: 实质操作为,在数据库中做select,通过手机号和...

    使用Springboot实现登录注册功能

    仿猫眼电影网站登录注册功能实现:

    本人博客园:https://www.cnblogs.com/djhzzl/p/14117459.html

    注册

    实质操作为,在数据库中做insert添加操作,同时判断输入密码和再次输入密码是否一致,一致进行注册,否则失败。

    登录

    实质操作为,在数据库中做select,通过手机号和密码进行查找,如果查出不为空,则登录成功,否则失败。

    实体类

    用户uid、用户名user_name、用户密码user_password、用户手机号_user_tel

    package com.hut.maoyanmovie.bean;
    
    /**
     * @author HP
     * @data 2020-12-08
     */
    public class User {
        private Integer uid;
        private String user_name;
        private String user_password;
        private String user_tel;
    //省略get、set、toString、构造方法
    }

    mapper

    mapper中sql语句:

        <select id="loginUserByTel" resultType="com.hut.maoyanmovie.bean.User">
            SELECT
            *
            FROM
            user
            WHERE
            user_tel = #{user_tel} and
            user_password = #{user_password}
        </select>
    
        <insert id="saveUserByUid">
            insert into
            user (user_name, user_password, user_tel)
            value (#{user_name},#{user_password},#{user_tel})
        </insert>

    Dao

        User loginUserByTel (String user_tel ,String user_password);
    
        void saveUserByUid (String user_name,String user_password ,String user_tel);

    Service

        User loginUserByTel (String user_tel ,String user_password);
    
        void saveUserByUid (String user_name,String user_password ,String user_tel);

    Servicelmpl

        @Override
        public User loginUserByTel(String user_tel, String user_password) {
            return userMapper.loginUserByTel(user_tel, user_password);
        }
    
        @Override
        public void saveUserByUid(String user_name, String user_password, String user_tel) {
            userMapper.saveUserByUid(user_name, user_password, user_tel);
        }

    Controller

    package com.hut.maoyanmovie.controller;
    
    import com.hut.maoyanmovie.bean.User;
    import com.hut.maoyanmovie.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.ModelMap;
    import org.springframework.web.bind.annotation.GetMapping;
    
    /**
     * @author HP
     * @data 2020-12-09
     */
    @Controller
    public class UserController {
        @Autowired
        private UserService userService;
    
    
        @GetMapping("saveUserByUid")
        //注册功能,保存数据
        public String saveUserByUid(String user_name, String user_password, String user_tel,String user_repassword){
            if(user_password.equals(user_repassword)){
                //判断密码重复密码是否一致
                //未实现弹窗
            userService.saveUserByUid(user_name, user_password, user_tel);
            return "login";
            }
            return "register";
        }
        @GetMapping("loginUserByTel")
        //登录功能
        public String loginUserByTel(ModelMap modelMap , String user_tel , String user_password ){
                    User user = userService.loginUserByTel(user_tel, user_password);
                    if(user != null){
                        //成功
                        modelMap.put("user",user);
                        return "loginsuccess";
                    }
                    return "login";
                        //错误
                        //未实现弹窗
        }
    
        @GetMapping("/loginsuccess")
        public String loginsuccess(){
            //欢迎页面
            return "loginsuccess";
        }
    
    }

    前端界面:部分代码

    登录:

                   <form action="loginUserByTel" method="get">
                        <div class="head">
                            <p>
                                <span>账号登录</span>
                            </p>
                        </div>
    
                        <div class="info">
                            <input type="text" value="手机号" id="user_tel" name="user_tel">
                            <input type="password" value="  密码" id="user_password" name="user_password">
                        </div>
                        <div class="choose">
                            <input type="checkbox" name="seven" id="seven">
                            <label for="seven">7天内自动登录</label>
                            <p><a href="#">忘记密码?</a></p>
                        </div>
                        <div class="submit">
                            <input type="submit" value="登录">
                        </div>
                        <div class="tail">
                            <p>还没有账号?<span><a href="./register">免费注册</a></span></p>
                        </div>
    
    
                    </form>

    注册:

                <form action="saveUserByUid" method="get">
                    <span>手机号码</span>
                    <input type="text" class="input" id="user_tel" name="user_tel"><br/>
                    <span>注册成功后,全美团通用</span><br/>
                        用户昵称<input type="text" class="input" id="user_name" name="user_name"><br/>
                        创建密码<input type="password" class="input" id="user_password" name="user_password"><br/>
                        确认密码<input type="password" class="input" id="user_repassword" name="user_repassword"><br/>
    
                    <div class="agree">
                        <input type="submit" value="同意以下协议并注册">
                    </div>
                </form>

    欢迎:

                <form action="/maoyanmovie">
                    <div class="head">
                        <h1>
                            <span>账号登录成功!</span>
                        </h1>
                    </div>
                    <div class="info">
                        <h2> 欢迎你!</h2><h1 th:text = ${user.user_name}></h1>
                    </div>
                    <div class="submit">
                        <input type="submit" value="返回首页">
                    </div>
                </form>

    后续还添加拦截器功能

    运行截图:

     

     

     

     

     

     

     

    后续拦截器功能实现

    https://blog.csdn.net/weixin_45910779/article/details/113576712

    完整源码

    https://github.com/MaoYanMovieWeb/maoyanmovie

    展开全文
  • SpringBoot注册登录(二):注册---验证码kaptcha的实现

    千次阅读 热门讨论 2018-03-07 20:55:04
    SpringBoot注册登录(一):User表的设计点击打开链接 SpringBoot注册登录(三):注册--验证账号密码是否符合格式及后台完成注册功能点击打开链接 SpringBoot注册登录(四):登录功能--密码错误三次,需要等待2分钟...
  • User表的设计点击打开链接SpringBoot注册登录(二):注册---验证码kaptcha的实现点击打开链接SpringBoot注册登录(三):注册--验证账号密码是否符合格式及后台完成注册功能点击打开链接SpringBoot注册登录(四):...
  • vue+springboot 登录注册功能

    千次阅读 2020-06-01 22:25:49
    }) .then(function (response) { // console.log(response.data.status) if(response.data.status === 200){ alert("恭喜你,注册成功") // _this.$message({ // message: '恭喜你,注册成功', // type: 'success' ...
  • SpringBoot简单实现登录注册功能

    千次阅读 多人点赞 2019-12-04 22:13:11
    SpringBoot 整合MyBatis实现登录注册功能
  • SpringBoot注册登录(一):User表的设计

    千次阅读 2018-03-09 16:07:39
    SpringBoot注册登录(二):注册---验证码kaptcha的实现点击打开链接SpringBoot注册登录(三):注册--验证账号密码是否符合格式及后台完成注册功能点击打开链接SpringBoot注册登录(四):登录功能--密码错误三次,需要...
  • 该项目结构完整,代码齐全,配有运行说明文档,前后端分离,主要用到了vue、springboot与Mybatis整合,Mysql数据库,适合初学者使用,通过一个简单的登录实例,了解运行原理。
  • Springboot-登录功能-拦截器-保持登录状态 在原先的简单方法后,完善了功能 前文登录功能:https://blog.csdn.net/weixin_45910779/article/details/113576610 本人博客园:...
  • springboot 登录注册

    2018-08-01 09:17:41
    springboot整合freemarker模板的登录注册功能,适合初学者
  • springboot整合mybatis实现登录注册功能springboot整合mybatis实现登录注册功能
  • 本文结合Shiro手撸一个自动登录功能 我们知道Cokkie都是存在本地的,而Session是存在服务器上的。 我们创建了普通对话Session它的生命周期只存在于浏览器开启关闭期间。 那我们难道需要每次进网址都需要登录? 那也...
  • SpringBoot实现登录注册

    千次阅读 2019-11-06 15:52:38
    话不多说,一个小小登录注册的案例向你展示SpringBoot的魅力 1 设计数据库 1.1表结构 1.2属性 id自增主键,name非空约束,唯一约束,password 2 IDEA配置 2.1 pom文件 <dependency> <groupId>...
  • 这是SpringBoot整合MyBatis实现的简易登陆注册。这里所使用的开发环境是:IDEA、MySQL_8.0.17、Java8;其中用到了Druid数据库连接池。这个登录注册demo中,登录失败有两种情况:①账户不存在;②密码错误。注册失败...
  • springboot后台 文件目录 1、用spring Initializr方式创建项目,引入相关依赖 2、引入阿里巴巴的数据源 <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter <version>1.1.10 ...
  • 主要介绍了springboot实现注册的加密与登录的解密功能,本文通过demo实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 初次使用SpringBoot编写基本功能前言基本功能设计方案1.首先从收集和储存的数据库创建开始(可在entity自动更新创建)2.application.properties配置信息3.entity层4.dao层5.controller6.前端代码总结 前言 本次...
  • springboot+mybatis完成简单注册登录功能。可以进行前后端数据的交互。 具体查看博客:https://blog.csdn.net/byteArr/article/details/80955703
  • 前端项目地址:https://pan.baidu.com/s/1saAx-3NrwMBCSb5sqf2ShQ 后端项目地址: ... 后端只提供接口,有注册登录,验证功能,记住密码功能前端实现(cookie)。...
  • springboot 入门案例(登录注册功能登录注册功能是一个经常需要又适合入门的功能。 从这里你将跟随我从0开始搞一个登录、注册的简单版功能。 本文章非常适合有java基础,第一次使用springboot。 环境 需要安装...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,378
精华内容 20,951
关键字:

springboot注册登录功能

spring 订阅