Android 는 OKhttp 3 를 사용 하여 로그 인 등록 기능+springboot 구축 백 엔 드 의 상세 한 과정 을 실현 합 니 다.

1.Android 전단 실현
로그 인 항목 을 새로 만 듭 니 다.주요 파일 은 여기에 있 습 니 다.
在这里插入图片描述
1.gradle 도입 OKhttp 3 의존

implementation 'com.squareup.okhttp3:okhttp:3.14.7'
    implementation 'com.squareup.okio:okio:1.17.5'
2、activity_main.xml 레이아웃 파일

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <EditText
        android:id="@+id/username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="   "
        android:textSize="34sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.051" />
    <EditText
        android:id="@+id/password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="  "
        android:textSize="34sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/username"
        app:layout_constraintVertical_bias="0.067" />
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="register"
        android:text="  "
        android:textSize="24sp"
        app:backgroundTint="#E91E63"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.501"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/password"
        app:layout_constraintVertical_bias="0.058" />
    <Button
        android:id="@+id/getUser"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="getUser"
        android:text="  "
        android:textSize="24sp"
        app:backgroundTint="#E91E63"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.501"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button3"
        app:layout_constraintVertical_bias="0.174" />
    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="  "
        android:textSize="24sp"
        app:backgroundTint="#E91E63"
        android:onClick="login"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.501"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button"
        app:layout_constraintVertical_bias="0.113" />
</androidx.constraintlayout.widget.ConstraintLayout>
3.AndroidManifest.xml 프로필
네트워크 요청 권한 을 추가 해 야 합 니 다.네트워크 권한 을 추가 할 때 주의:res 디 렉 터 리 에 xml 디 렉 터 리 를 새로 만 들 고 network 를 만 듭 니 다.security_config.xml 파일

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>
설정 파일 에 이 줄 코드 를 추가 합 니 다:

android:networkSecurityConfig="@xml/network_security_config"
전체 AndroidManifest.xml 파일 은 다음 과 같 습 니 다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.login">

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:networkSecurityConfig="@xml/network_security_config"
        android:supportsRtl="true"
        android:theme="@style/Theme.Login">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
4.사용자 실체 클래스 만 들 기
새 entity 디 렉 터 리 에서 User 실체 클래스 를 만 듭 니 다.여기 서 저 는 백 엔 드 데이터 뱅 크 의 필드 에 따라 만 들 었 습 니 다.로그 인 등록 을 실현 할 때 id,username,password 몇 개의 기본 필드 만 있 으 면 됩 니 다.여 기 는 제 가 비교적 많 기 때문에 독자 들 이 스스로 무시 할 수 있 습 니 다.
User.java

package com.example.login.entity;
public class User {
    private Integer userId;
    private String userName;
    private String userPassword;
    private String currentVersion;
    private String latestVersion;
    private String updateDescription;
    private String headPortrait;
    private String nickName;
    private String vipTime;
    private String userCategory;
    private String registerDate;

    public User(Integer userId, String userName, String userPassword, String currentVersion, String latestVersion, String updateDescription, String headPortrait, String nickName, String vipTime, String userCategory, String registerDate) {
        this.userId = userId;
        this.userName = userName;
        this.userPassword = userPassword;
        this.currentVersion = currentVersion;
        this.latestVersion = latestVersion;
        this.updateDescription = updateDescription;
        this.headPortrait = headPortrait;
        this.nickName = nickName;
        this.vipTime = vipTime;
        this.userCategory = userCategory;
        this.registerDate = registerDate;
    }

    public User() {
    }

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserPassword() {
        return userPassword;
    }

    public void setUserPassword(String userPassword) {
        this.userPassword = userPassword;
    }

    public String getCurrentVersion() {
        return currentVersion;
    }

    public void setCurrentVersion(String currentVersion) {
        this.currentVersion = currentVersion;
    }

    public String getLatestVersion() {
        return latestVersion;
    }

    public void setLatestVersion(String latestVersion) {
        this.latestVersion = latestVersion;
    }

    public String getUpdateDescription() {
        return updateDescription;
    }

    public void setUpdateDescription(String updateDescription) {
        this.updateDescription = updateDescription;
    }

    public String getHeadPortrait() {
        return headPortrait;
    }

    public void setHeadPortrait(String headPortrait) {
        this.headPortrait = headPortrait;
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    public String getVipTime() {
        return vipTime;
    }

    public void setVipTime(String vipTime) {
        this.vipTime = vipTime;
    }

    public String getUserCategory() {
        return userCategory;
    }

    public void setUserCategory(String userCategory) {
        this.userCategory = userCategory;
    }

    public String getRegisterDate() {
        return registerDate;
    }

    public void setRegisterDate(String registerDate) {
        this.registerDate = registerDate;
    }
}
LoginUser.java

public class LoginUser {
    private String userName;
    private String userPassword;

    public LoginUser(String userName, String userPassword) {
        this.userName = userName;
        this.userPassword = userPassword;
    }

    public LoginUser() {
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserPassword() {
        return userPassword;
    }

    public void setUserPassword(String userPassword) {
        this.userPassword = userPassword;
    }
}
5、MainActivity.java

package com.example.login;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.example.login.entity.User;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

public class MainActivity extends AppCompatActivity {
    private EditText username;
    private EditText password;
    private User user;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        username = findViewById(R.id.username);
        password = findViewById(R.id.password);

    }

    public void register(View view) {
        user = new User();
        user.setUserName(username.getText().toString());
        user.setUserPassword(password.getText().toString());
        Log.d("whqusername",username.getText().toString());
        Log.d("whqpassword",password.getText().toString());
        new Thread(new Runnable() {
            @Override
            public void run() {
                MediaType JSON = MediaType.parse("application/json;charset=utf-8");
                JSONObject jsonObject = new JSONObject();
                OkHttpClient httpClient = new OkHttpClient();
                try {
                    jsonObject.put("userId",10);
                    jsonObject.put("userName",user.getUserName());
                    jsonObject.put("userPassword",user.getUserPassword());
                    jsonObject.put("currentVersion",null);
                    jsonObject.put("latestVersion",null);
                    jsonObject.put("updateDescription",null);
                    jsonObject.put("headPortrait",null);
                    jsonObject.put("nickName",user.getUserName());
                    jsonObject.put("vipTime",null);
                    jsonObject.put("userCategory",null);
                    jsonObject.put("registerDate",null);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                RequestBody requestBody = RequestBody.create(JSON, String.valueOf(jsonObject));
                String url = "http://ip:8001/server/user/addUser/";
                Request request = new Request.Builder()
                        .url(url)
                        .post(requestBody)
                        .build();

                Call call = httpClient.newCall(request);
                call.enqueue(new Callback() {
                    @Override
                    public void onFailure(Call call, IOException e) {
                        Log.d("whq","   ");
                    }

                    @Override
                    public void onResponse(Call call, Response response) throws IOException {
                        Log.d("whq",response.toString()+"------------------");
                        Log.d("whq",response.body().toString()+"------------------");

                    }
                });

            }
        }).start();
    }

    public void getUser(View view) {
        OkHttpClient httpClient = new OkHttpClient();

        String url = "http://ip:8001/server/user/getAllUserName";
        Request getRequest = new Request.Builder()
                .url(url)
                .get()
                .build();

        Call call = httpClient.newCall(getRequest);

        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    //    ,        
                    Response response = call.execute();
                    Log.i("whq+getAllUserName", "okHttpGet run: response:"+ response.body().string());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();

    }

     public void login(View view) {
        loginUser = new LoginUser();
        loginUser.setUserName(username.getText().toString());
        loginUser.setUserPassword(password.getText().toString());
        new Thread(new Runnable() {
            @Override
            public void run() {
                MediaType JSON = MediaType.parse("application/json;charset=utf-8");
                JSONObject jsonObject = new JSONObject();
                OkHttpClient httpClient = new OkHttpClient();
                try {
                    jsonObject.put("userName",loginUser.getUserName());
                    jsonObject.put("userPassword",MD5.encrypt(loginUser.getUserPassword()));
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                RequestBody requestBody = RequestBody.create(JSON, String.valueOf(jsonObject));
                String url = "http://ip:8001/server/user/login";
                Request request = new Request.Builder()
                        .url(url)
                        .post(requestBody)
                        .build();

                Call call = httpClient.newCall(request);
                call.enqueue(new Callback() {
                    @Override
                    public void onFailure(Call call, IOException e) {
                        Log.d("whq  ","   ");
                    }

                    @Override
                    public void onResponse(Call call, Response response) throws IOException {
                        String MyResult = response.body().string();
                        Log.d("whq  ",response+"---------response---------");
                        Log.d("whq  ",response.message()+"---------message---------");
                        Log.d("whq  ",response.body().toString()+"------------------");
                        Log.d("whq  ",MyResult+"-----------MyResult-------");
                    }
                });
            }
        }).start();
    }
}
여기까지 안 드 로 이 드 의 전단 실현 이 이 루어 졌 다.
데이터베이스
데이터 베 이 스 는 간단 한 user 표 입 니 다.

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `userId` int(11) NOT NULL AUTO_INCREMENT,
  `userName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `userPassword` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `currentVersion` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `latestVersion` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `updateDescription` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `headPortrait` mediumblob NULL,
  `nickName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `vipTime` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `userCategory` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT 'normal',
  `registerDate` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`userId`, `userName`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;

SET FOREIGN_KEY_CHECKS = 1;
3.SpringBoot 백 엔 드 구축
백 엔 드 구축 은 SSM 프레임 워 크 를 사용 합 니 다.
1.springboot 프로젝트 를 새로 만 들 고 의존 도 를 추가 합 니 다.
pom.xml 파일.my batis-plus+swagger+velocity 가 있 습 니 다.코드 생 성 기 를 사 용 했 습 니 다.

 <properties>
        <java.version>1.8</java.version>
        <mybatis-plus.version>3.0.5</mybatis-plus.version>
        <swagger.version>2.7.0</swagger.version>
        <jodatime.version>2.10.1</jodatime.version>
        <poi.version>3.17</poi.version>
        <httpclient.version>4.5.1</httpclient.version>
        <gson.version>2.8.2</gson.version>
        <velocity.version>2.0</velocity.version>
    </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>

            <!--Spring Cloud-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--mybatis-plus    -->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatis-plus.version}</version>
            </dependency>

            <!-- velocity     , Mybatis Plus         -->
            <dependency>
                <groupId>org.apache.velocity</groupId>
                <artifactId>velocity-engine-core</artifactId>
                <version>${velocity.version}</version>
            </dependency>

            <!--swagger-->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>${swagger.version}</version>
            </dependency>
            <!--swagger ui-->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>${swagger.version}</version>
            </dependency>
            <!--      -->
            <dependency>
                <groupId>joda-time</groupId>
                <artifactId>joda-time</artifactId>
                <version>${jodatime.version}</version>
            </dependency>
            <!--mysql-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
            <!--lombok       :    lombok  -->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
        </dependencies>
2,application.properties 파일

#     
server.port=8001
#    
spring.application.name=heartrate

#     :dev、test、prod
spring.profiles.active=dev

# mysql     
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://ip:3310/heartrate?serverTimezone=GMT%2B8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456


#  json       
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8

##mybatis  //   logback  ,      
#mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

#  mapper xml     
mybatis-plus.mapper-locations=classpath:com/atguigu/eduservice/mapper/xml/*.xml
이곳 의 데이터베이스 연결 은 내 가 3310 포트 를 사용 하 는 것 을 발견 했다.왜냐하면 나의 서버 는 docker 를 사용 하여 데이터 베 이 스 를 만 들 었 기 때문이다.제 이전의 문장 을 스스로 살 펴 보 세 요.
3.CodeGenerator.java 코드 생 성기

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.Test;

/**
 * @author ahuwhq
 * @since 2021/7/27
 */
public class CodeGenerator {

    @Test
    public void run() {

        // 1、       
        AutoGenerator mpg = new AutoGenerator();

        // 2、    
        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        //         
        gc.setOutputDir("E:\\LaboratoryCode\\service\\server" + "/src/main/java");
        gc.setAuthor("ahuwhq");
        gc.setOpen(false); //            
        gc.setFileOverride(false); //           
        gc.setServiceName("%sService");	//  Service      I
        gc.setIdType(IdType.ID_WORKER_STR); //    
        gc.setDateType(DateType.ONLY_DATE);//             
        gc.setSwagger2(true);//  Swagger2  

        mpg.setGlobalConfig(gc);

        // 3、     
        DataSourceConfig dsc = new DataSourceConfig();
        //           
        dsc.setUrl("jdbc:mysql://ip:3310/heartrate?serverTimezone=GMT%2B8");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("123456");
        dsc.setDbType(DbType.MYSQL);
        mpg.setDataSource(dsc);

        // 4、   
        PackageConfig pc = new PackageConfig();
        pc.setParent("com.message");
        pc.setModuleName("server"); //   

        pc.setController("controller");
        pc.setEntity("entity");
        pc.setService("service");
        pc.setMapper("mapper");
        mpg.setPackageInfo(pc);

        // 5、    
        StrategyConfig strategy = new StrategyConfig();
        //           
        strategy.setInclude("user");
        strategy.setNaming(NamingStrategy.underline_to_camel);//              
        strategy.setTablePrefix(pc.getModuleName() + "_"); //          

        strategy.setColumnNaming(NamingStrategy.underline_to_camel);//                
        strategy.setEntityLombokModel(true); // lombok    @Accessors(chain = true) setter    

        strategy.setRestControllerStyle(true); //restful api     
        strategy.setControllerMappingHyphenStyle(true); //url       

        mpg.setStrategy(strategy);


        // 6、  
        mpg.execute();
    }
}
실행 을 누 르 면 파일 이 자동 으로 생 성 됩 니 다.
在这里插入图片描述
4.config 디 렉 터 리 추가
config 디 렉 터 리 코드 생 성 기 는 생 성 되 지 않 았 습 니 다.이 디 렉 터 리 를 추가 하 는 것 은 주로 swagger 테스트(Swagger Config)를 사용 하고 코드 생 성 기 를 사용 하여 파일 을 생 성 한 후에 mapper 파일(ServerConfig)을 검색 할 수 있 도록 설정 해 야 합 니 다.
ServerConfig.java

package com.message.server.config;


import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@MapperScan("com.message.server.mapper")
public class ServerConfig {

    /**
     *       
     */
    @Bean
    public ISqlInjector sqlInjector() {
        return new LogicSqlInjector();
    }

    /**
     *     
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}
SwaggerConfig.java

import com.google.common.base.Predicates;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration//   
@EnableSwagger2//swagger2  
public class SwaggerConfig {
    @Bean
    public Docket webApiConfig(){
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("webApi")
                .apiInfo(webApiInfo())
                .select()
//                .paths(Predicates.not(PathSelectors.regex("/admin/.*")))
                .paths(Predicates.not(PathSelectors.regex("/error.*")))
                .build();

    }
    private ApiInfo webApiInfo(){

        return new ApiInfoBuilder()
                .title("  -    API  ")
                .description("                 ")
                .version("1.0")
                .contact(new Contact("java", "http://ahuwhq.com", "[email protected]"))
                .build();
    }
}
5.Controller 층 은 UserController.java 를 실현 합 니 다.
여기 서 저 는 여러 가지 방법 을 실 현 했 습 니 다.로그 인 등록 뿐만 아니 라 안 드 로 이 드 전단 계 에서 저 희 는 로그 인 등록 과 모든 사용 자 를 얻 을 수 있 습 니 다.

import com.message.server.entity.User;
import com.message.server.entity.vo.UserAll;
import com.message.server.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
/**
 * <p>
 *       
 * </p>
 *
 * @author ahuwhq
 * @since 2021-07-27
 */
@RestController
@RequestMapping("/server/user")
public class UserController {
    //    :http://ip:8001/server/user/findAll                    
    //    :http://localhost:8001/server/user/findAll            Swagger  
    @Autowired
    private UserService userService;

    /**
     *        
     * @return
     */
    @GetMapping("getAllUsers")
    public List<User> findAllUser(){
        //      
        List<User> list = userService.list(null);
        return list;
    }

    /**
     *     ,    
     * @param user
     * @return
     */
    @PostMapping("addUser")
    public Boolean addUser(@RequestBody User user){
        boolean save = userService.save(user);
        return save;

    }

    /**
     *        
     */
    @GetMapping("getAllUserName")
    public List<UserAll> getAllUserName(){
        List<UserAll> userNamelist = userService.getAllUserName();
        return userNamelist;
    }


    /**
     *     ID       
     * @param id
     * @return
     */
    @GetMapping("getUserNickname/{id}")
    public String getUserNickname(@PathVariable Integer id){
        User user = userService.getById(id);
        String nickName = user.getNickName();
        return nickName;
    }

    /**
     *    
     * @param userName
     * @return
     */
    @PostMapping("changePassword/{userName}/{password}")
    public Boolean changePassword(@PathVariable String userName,
                                  @PathVariable String password){
        Boolean result = userService.changePassword(userName,password);
        return result;
    }


    /**
     *        PostMapping
     * @param loginuser
     * @return
     */
    @PostMapping("login")
    public R login(@RequestBody loginUser loginuser){
        String token = userService.login(loginuser);
        if (token == "wrong Password"){
            return R.error().data("result",token);
        }else{
            return R.ok().data("result",token);
        }
    }
}
여기에 몇 개의 파일 R.java,ResultCode.java,MyException.java 를 사 용 했 습 니 다.
R.java

//      

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.HashMap;
import java.util.Map;

@Data
public class R {
    @ApiModelProperty(value = "    ")
    private Boolean success;

    @ApiModelProperty(value = "   ")
    private Integer code;

    @ApiModelProperty(value = "    ")
    private String message;

    @ApiModelProperty(value = "    ")
    private Map<String, Object> data = new HashMap<String, Object>();


    //       
    private R(){}



    //    
    //      

    public static R ok(){
        R r = new R();
        r.setSuccess(true);
        r.setCode(ResultCode.SUCCESS);
        r.setMessage("  ");
        return r;
    }

    //      
    public static R error(){
        R r = new R();
        r.setSuccess(false);
        r.setCode(ResultCode.ERROR);
        r.setMessage("  ");
        return r;
    }

    public R success(Boolean success){
        this.setSuccess(success);
        return this;
    }

    public R message(String message){
        this.setMessage(message);
        return this;
    }

    public R code(Integer code){
        this.setCode(code);
        return this;
    }

    public R data(String key, Object value){
        this.data.put(key, value);
        return this;
    }

    public R data(Map<String, Object> map){
        this.setData(map);
        return this;
    }

}
ResultCode.java

public interface ResultCode {

    public static Integer SUCCESS = 20000;//  

    public static Integer ERROR = 20001;//  
}
MyException.java

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor//        
@NoArgsConstructor//        
public class MyException extends RuntimeException{


    private Integer code;//   

    private String msg;//    
}
5.UserService 인터페이스

public interface UserService extends IService<User> {

    /**
     *        
     * @return
     */
    List<UserAll> getAllUserName();

    /**
     *     
     * @param userName
     * @return
     */
    Boolean changePassword(String userName,String password);

    /**
     *        
     * @param userName
     * @param password
     * @return
     */
    Boolean login(String userName, String password);
}
6、UserServiceImpl.java

public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

    @Autowired
    private UserService userService;

    /**
     *        
     */
    @Override
    public List<UserAll> getAllUserName() {

        //       
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        //     userName
        wrapper.eq("userName",0);
        //      UserAll  ,          
        List<User> users = baseMapper.selectList(wrapper);

        List<UserAll> userAlls = new ArrayList<>();
        for (int i = 0; i < users.size(); i++) {
            User user = users.get(i);
            String userName = user.getUserName();
            UserAll userAll = new UserAll();
            userAll.setUserName(userName);
            userAlls.add(userAll);
        }
        return userAlls ;
    }

    /**
     *     
     * @param userName
     * @param password
     * @return
     */
    @Override
    public Boolean changePassword(String userName,String password) {
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.eq("userName",userName);
        User user = baseMapper.selectOne(wrapper);
        if (user == null){
            return false;
        }
        user.setUserPassword(password);
        boolean save = userService.update(user,null);
        return save;
    }

    /**
     *        PostMapping
     * @param loginuser
     * @return
     */
    @Override
    public String login(loginUser loginuser) {
        String userName = loginuser.getUserName();
        String userPassword = loginuser.getUserPassword();
        //          
        if(org.springframework.util.StringUtils.isEmpty(userName) || org.springframework.util.StringUtils.isEmpty(userPassword)) {
            return "wrong Password";
        }
        //         
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.eq("userName",userName);
        User user = baseMapper.selectOne(wrapper);
        //    
        //               
        //          ,           
        //     MD5
        if(!userPassword.equals(user.getUserPassword())) {
            return "wrong Password";

        }
        else {
            return "success login";
        }
    }
}
메모:첫 번 째 로 모든 사용자 이름 을 가 져 오 는 방법 은 제 가 실체 류 를 만 드 는 것 을 발견 할 수 있 습 니 다.이 유 는 제 데이터베이스 시트 에 필드 가 많 기 때 문 입 니 다.그러나 제 가 전단 에서 보 여 드릴 때 몇 개의 필드 만 표시 할 수 있 습 니 다.바로 프라이버시 를 보호 하 는 역할 을 합 니 다.그래서 저 는 User All 류 를 새로 만 들 었 습 니 다.이러한 논 리 를 읽 는 데 영향 을 주지 않 는 다.
在这里插入图片描述
UserAll.java

@Data
public class UserAll {

    private String userName;
}
7.springboot 실행
이것 이 바로 모든 코드 입 니 다.우 리 는 실행 한 후에 시작 에 성 공 했 습 니 다.그리고 swagger 테스트 를 엽 니 다.
在这里插入图片描述
이곳 에서 인터페이스 테스트 를 진행 할 수 있다.여 기 는 전시 하지 않 겠 습 니 다.
4.서버 에 배치
우 리 는 마 븐 으로 포장 합 니 다.패 키 지 를 클릭 하 십시오.jar 가방 을 만 들 수 있 습 니 다.
在这里插入图片描述
서버 에 업로드 합 니 다.
在这里插入图片描述
여기 서 자바-jar server-0.0.1-SNAPSHOT.jar 명령 을 사용 하여 실행 하면 됩 니 다.
在这里插入图片描述
이렇게 뛰 기 시작 했다.
주의:
서버 8001 포트 가 열 려 있 는 지 확인 해 야 합 니 다.그렇지 않 으 면 ip 로 접근 할 수 없습니다.

firewall-cmd --list-port
firewall-cmd --zone=public --add-port=8001/tcp --permanent
firewall-cmd --reload
firewall-cmd --query-port=8001/tcp

firewall-cmd --zone=public --remove-port=8001/tcp --permanent  #   

netstat -anp|grep 8001
在这里插入图片描述
그리고 인 터 페 이 스 를 켜 주세요.
在这里插入图片描述
5.테스트 실행
AS 를 열 고 APP 를 실행 하고 로 그 를 인쇄 합 니 다.
在这里插入图片描述
간단 한 로그 인 등록 기본 기능 논 리 는 이미 실현 되 었 고 대체적으로 절차 가 통 할 수 있다.이제 다른 개발 을 계속 할 수 있 을 겁 니 다.
주:여 기 는 가장 기본 적 인 로그 인 등록 일 뿐 아직 완선 되 지 않 습 니 다.예 를 들 어 여기 비밀번호 사용자 이름 은 명문 으로 전송 되 고 가방 에 잡 히 기 쉬 우 므 로 이 편 은 시간 이 좀 걸 려 서 만 든 demo 가 완선 되 지 않 고 나중에 완전 하 게 보충 할 것 입 니 다.
안 드 로 이 드 가 OKhttp 3 를 사용 하여 로그 인 등록 기능 을 실현 하 는+springboot 구축 백 엔 드 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 안 드 로 이 드 백 엔 드 springboot 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기