实战 Java 第3章:登录、注册接口
java 2021-06-18 11:23:11

1、添加数据库依赖,参照第二章

2、定义接口返回格式,entity/Response

Java Code复制内容到剪贴板
  1. package com.yoyo.tool.entity;  
  2.   
  3. public class Response {  
  4.     String message;  
  5.     int code;  
  6.     Boolean isSuccess = true;  
  7.   
  8.     public Response(){}  
  9.     public Response(int code,String msg, Boolean isSuccess) {  
  10.         this.code = code;  
  11.         this.message = msg;  
  12.         this.isSuccess = isSuccess;  
  13.     }  
  14.   
  15.     public Boolean getIsSuccess() {  
  16.         return isSuccess;  
  17.     }  
  18.     public void setIsSuccess(Boolean isSuccess){  
  19.         this.isSuccess = isSuccess;  
  20.     }  
  21.   
  22.     public String getMessage() {  
  23.         return message;  
  24.     }  
  25.   
  26.     public void setMsg(String msg) {  
  27.         this.message = msg;  
  28.     }  
  29.   
  30.     public int getCode() {  
  31.         return code;  
  32.     }  
  33.   
  34.     public void setCode(int code) {  
  35.         this.code = code;  
  36.     }  
  37. }  

 

3、定义用户表字段属性,entity/User

Java Code复制内容到剪贴板
  1. package com.yoyo.tool.entity;  
  2.   
  3. import org.springframework.util.DigestUtils;  
  4.   
  5. public class User {  
  6.     public String username;  
  7.     public String password;  
  8.     public String email;  
  9.     public int status;  
  10.   
  11.     public User(){}  
  12.     public User(String username, String password, String email) {  
  13.         this.username = username;  
  14.         this.password = password;  
  15.         this.email = email;  
  16.     }  
  17.   
  18.     public String getUserName(String username){  
  19.         return username;  
  20.     }  
  21.   
  22.     public void setUsername(String username){  
  23.         this.username = username;  
  24.     }  
  25.   
  26.     /** 
  27.      * 对原密码md5转换 
  28.      * @param password 
  29.      */  
  30.     public void setPassword(String password){  
  31. //        this.password_hash = DigestUtils.md5DigestAsHex(password.getBytes());  
  32.         this.password = password;  
  33.     }  
  34.   
  35.     public String getPassword(){  
  36.         return password;  
  37.     }  
  38.   
  39.     /** 
  40.      * 一组获取邮箱,设置邮箱,值为String型 
  41.      * @param email 
  42.      * @return 
  43.      */  
  44.     public String getEmail(String email){  
  45.         return email;  
  46.     }  
  47.     public void setEmail(String email){  
  48.         this.email = email;  
  49.     }  
  50.   
  51.     /** 
  52.      * 一组获取状态,设置状态,值为int型 
  53.      * @param status 
  54.      * @return 
  55.      */  
  56.     public int getStatus(int status){  
  57.         return status;  
  58.     }  
  59.     public void setStatus(int status){  
  60.         this.status = status;  
  61.     }  
  62. }  

 

4、Dao层的增、查,resourses/mapper/UserMapper.xml

Java Code复制内容到剪贴板
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  3. <mapper namespace="com.yoyo.tool.mapper.UserMapper">  
  4.     <resultMap id="BaseResultMap" type="com.yoyo.tool.entity.User">  
  5.         <result column="id" jdbcType="INTEGER" property="id" />  
  6.         <result column="username" jdbcType="VARCHAR" property="username" />  
  7.         <result column="email" jdbcType="VARCHAR" property="email" />  
  8.     </resultMap>  
  9.     <insert id="addUser" parameterType="com.yoyo.tool.entity.User">  
  10.         INSERT INTO `enewsuser` (`username`, `password`,`email`,`status`) VALUES(#{username},#{password},#{email},#{status})  
  11.     </insert>  
  12.     <select id="queryByUsername" resultType="com.yoyo.tool.entity.User">  
  13.         SELECT * FROM `enewsuser` WHERE username = #{username}  
  14.     </select >  
  15. </mapper>  

 

5、根据mapper写好的sql操作,操作数据库

Java Code复制内容到剪贴板
  1. package com.yoyo.tool.mapper;  
  2.   
  3. import com.yoyo.tool.entity.User;  
  4. import org.apache.ibatis.annotations.Mapper;  
  5.   
  6. import java.util.List;  
  7.   
  8. @Mapper  
  9. public interface UserMapper {  
  10.     int addUser(User user);  
  11.     List<User> queryByUsername(String username);  
  12. }  

 

 

 

6、impl实现具体的业务逻辑,service/impl/UserServiceIMpl

Java Code复制内容到剪贴板
  1. package com.yoyo.tool.service.impl;  
  2.   
  3. import com.yoyo.tool.entity.User;  
  4. import com.yoyo.tool.mapper.UserMapper;  
  5. import com.yoyo.tool.service.UserService;  
  6. import org.springframework.stereotype.Service;  
  7. import javax.annotation.Resource;  
  8. import java.util.List;  
  9.   
  10. @Service  
  11. public class UserServiceImpl implements UserService {  
  12.   
  13.     @Resource  
  14.     UserMapper userMapper;  
  15.     public int addUser(String username,String password,String email){  
  16.         User user = new User(username,password,email);  
  17. //        user.setUsername(username);  
  18. //        user.setEmail(email);  
  19. //        user.setPassword(password);  
  20. //        user.setStatus(0); // 默认正常  
  21.         int id = userMapper.addUser(user);  
  22.         return id;  
  23.     }  
  24.   
  25.     public List<User> queryByUsername(String username){  
  26.         List <User> userList = userMapper.queryByUsername(username);  
  27.         return userList;  
  28.     }  
  29.   
  30. }  

 

7、根据impl已经写好的具体业务逻辑,调用

Java Code复制内容到剪贴板
  1. package com.yoyo.tool.service;  
  2.   
  3. import com.yoyo.tool.entity.User;  
  4.   
  5. import java.util.List;  
  6.   
  7. public interface UserService {  
  8.     int addUser(String username,String password,String phone);//用于注册时,添加用户  
  9.     List<User> queryByUsername(String username);//用于登陆时,验证用户  
  10. }  

 

8、控制器,调用service

Java Code复制内容到剪贴板
  1. package com.yoyo.tool.controller;  
  2.   
  3. import com.yoyo.tool.entity.Response;  
  4. import com.yoyo.tool.entity.User;  
  5. import com.yoyo.tool.service.UserService;  
  6. import org.springframework.beans.factory.annotation.Autowired;  
  7. import org.springframework.web.bind.annotation.RequestBody;  
  8. import org.springframework.web.bind.annotation.RequestMapping;  
  9. import org.springframework.web.bind.annotation.RequestMethod;  
  10. import org.springframework.web.bind.annotation.RestController;  
  11.   
  12. import java.util.List;  
  13. import java.util.Map;  
  14.   
  15. @RestController  
  16. public class UserController {  
  17.   
  18.     @Autowired  
  19.     private UserService service;  
  20.   
  21.     @RequestMapping(value = "/register",method = RequestMethod.POST)  
  22.     public Response register(@RequestBody Map<String, String> person){  
  23.         String username = person.get("username");  
  24. //        int password = Integer.parseInt(person.get("password"));// 如果password必须为数字的话  
  25.         String password = person.get("password");  
  26.         String email = person.get("email");  
  27.         //1.判断用户名、密码、手机号是否为空  
  28. //        if(username != null && password != 0 && phone != null){ // 如果判断password必须为数字的话  
  29.         if(username != null && password != null){  
  30.             List<User> users =  service.queryByUsername(username);  
  31.             // 2.判断是否有重复用户名  
  32.             if(users!=null && users.size()>0){  
  33.                 return new Response(-1,"注册失败,用户名重复,请更换",true);  
  34.             }else {  
  35.                 int count = service.addUser(username,password,email);  
  36.                 if(count>0){  
  37.                     // 3.没有重复用户名,注册成功  
  38.                     return new Response(1,"注册成功",true);  
  39.                 }else {  
  40.                     return new Response(-1,"注册失败",true);  
  41.                 }  
  42.             }  
  43.         }else{  
  44.             return new Response(-1,"注册失败,请检查用户名、密码、手机号是否为空",true);  
  45.         }  
  46.     }  
  47.   
  48.     @RequestMapping(value = "/login",method = RequestMethod.POST)  
  49.     public Response login(@RequestBody Map<String, String> person){  
  50.         String username = person.get("username");  
  51. //        int password =Integer.parseInt(person.get("password"));// 如果password必须为数字的话  
  52.         String password = person.get("password");  
  53.         //1. 判断用户名、密码是否为空  
  54. //        if(username != null && password != 0 ){ // 如果password必须为数字的话  
  55.         if(username != null && password != null ){  
  56.             List<User> users =  service.queryByUsername(username);  
  57.             //2. 判断用户名是否存在  
  58.             if(users!=null && users.size()>0){  
  59.                 User user = users.get(0);  
  60.                 //3. 判断密码是否正确,string不属于数据基本类型(byte short int long float double boolean char),所以==判断没有用,需要用equals  
  61.                 if(password.equals(user.getPassword())){  
  62. //                    System.out.println("可以使用 equals  来比较");  
  63.                     return new Response(200,"登陆成功",true);  
  64.                 }else{  
  65. //                    System.out.println("不可以使用 equals  来比较");  
  66.                     return new Response(400,"登陆失败,密码错误,传参密码:" + password + ",数据库密码:" + user.getPassword(),false);  
  67.                 }  
  68. //                if(password == user.getPassword()){  
  69. //                    //4. 密码正确,登陆成功  
  70. //                    return new Response(200,"登陆成功",true);  
  71. //                }else {  
  72. //                    return new Response(400,"登陆失败,密码错误,传参密码:" + password + ",数据库密码:" + user.getPassword(),false);  
  73. //                }  
  74.             }else {  
  75.                 return new Response(400,"登陆失败,用户名不存在",false);  
  76.             }  
  77.         }else {  
  78.             return new Response(400,"登陆失败,请检查用户名、密码是否为空",false);  
  79.         }  
  80.     }  
  81.   
  82. }  

 

tool_3.zip
文件类型: .zip dace485c063f1cb88cca886421b6dac1.zip (65.47 KB)

 

 

 

 

本文来自于:http://www.yoyo88.cn/study/java/578.html

下一篇 返回列表
Powered by yoyo苏ICP备15045725号