有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Spring启动,状态404,错误“未找到”

第二天我无法解决与404状态相关的问题。我看了一些关于这个问题的文章,其中大多数都有文件夹层次结构的问题,但我觉得一切都很好:'(

文件夹结构

image

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.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.training</groupId>
    <artifactId>regplustext</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>regplustext</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

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

</project>

UserRestController

package com.training.regplustext.controller;

import com.training.regplustext.entity.UserRegistrationEntity;
import com.training.regplustext.exception.AccountNotFound;
import com.training.regplustext.exception.NullRegistrationException;
import com.training.regplustext.service.UserService;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/welcome-page/")
@NoArgsConstructor
public class UserRestController {

    private UserService userService;

    @Autowired
    public UserRestController(UserService userService){
        this.userService = userService;
    }

    @PostMapping("registration-page/")
    public ResponseEntity<String> regPage(@RequestBody UserRegistrationEntity newUser, @RequestParam Long id) {
        try{
            userService.registration(newUser.getUsername(), newUser.getPassword());
            return ResponseEntity.ok("{id} id registration has passed successfully!");
        }catch (NullRegistrationException ex){
            return ResponseEntity.badRequest().body(ex.getMessage());
        }
    }

    @PostMapping("login-page/")
    public ResponseEntity<String> loginPage(@RequestBody UserRegistrationEntity user, @PathVariable Long id){
        try{
            userService.login(user.getUsername(), user.getPassword());
            return ResponseEntity.ok("{id} id login has passed successfully!");
        }catch (AccountNotFound ex){
            return ResponseEntity.badRequest().body(ex.getMessage());
        }
    }
}

用户注册实体

package com.training.regplustext.entity;

import lombok.Data;

import javax.persistence.*;

@Entity(name = "UserRegistrationEntity")
@Table(name = "user_registration_table")
@Data
public class UserRegistrationEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(
            name = "id",
            nullable = false
    )
    private Long id;

    @Column(
            name = "username",
            nullable = false
    )
    private String username;

    @Column(
            name = "password",
            nullable = false
    )
    private String password;
}

UserRepository

package com.training.regplustext.repository;

import com.training.regplustext.entity.UserRegistrationEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.Optional;

@Repository
public interface UserRepository extends JpaRepository<UserRegistrationEntity, Long> {

    Optional<UserRegistrationEntity>findUserRegistrationEntityByUsernameAndPassword(String username, String password);
}

用户服务

package com.training.regplustext.service;

import com.training.regplustext.entity.UserRegistrationEntity;
import com.training.regplustext.exception.AccountNotFound;
import com.training.regplustext.exception.NullRegistrationException;

public interface UserService {

    UserRegistrationEntity registration(String username, String password) throws NullRegistrationException;
    UserRegistrationEntity login(String username, String password) throws AccountNotFound;
}

UserServiceImpl

package com.training.regplustext.service;

import com.training.regplustext.entity.UserRegistrationEntity;
import com.training.regplustext.exception.AccountNotFound;
import com.training.regplustext.exception.NullRegistrationException;
import com.training.regplustext.repository.UserRepository;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
@NoArgsConstructor
public class UserServiceImpl implements UserService {

    private UserRepository userRepository;

    @Autowired
    public UserServiceImpl(UserRepository userRepository){
        this.userRepository = userRepository;
    }

    @Override
    public UserRegistrationEntity registration(String username, String password) throws NullRegistrationException{
        if(username == null || password == null)
            throw new NullRegistrationException("username or password is nullable");
        else{
            UserRegistrationEntity newUser = new UserRegistrationEntity();
            newUser.setUsername(username);
            newUser.setPassword(password);

            return userRepository.save(newUser);
        }
    }

    @Override
    public UserRegistrationEntity login(String username, String password) throws AccountNotFound{
        if(userRepository.findUserRegistrationEntityByUsernameAndPassword(
                username,
                password
        ).isEmpty())
            throw new AccountNotFound("account not found, please register first");
        else{
            return userRepository.findUserRegistrationEntityByUsernameAndPassword(
                    username,
                    password
            ).orElse(null);
        }
    }
}

RegplustextApplication

package com.training.regplustext;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan("com.training.regplustext.repository")

public class RegplustextApplication {

    public static void main(String[] args) {
        SpringApplication.run(RegplustextApplication.class, args);
    }
}

应用程序。属性

spring.datasource.url=jdbc:postgresql://localhost:5432/reg_plus_text
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.username=postgres
spring.datasource.password=admin
server.port=8081

邮递员

postman image


共 (0) 个答案