Springboot初始化项目并完成登入注册的全过程

Spring Boot初始化项目并完成登入注册的全过程

Spring Boot是一个非常流行的Java Web框架,它提供了许多方便的功能,如自动配置、快速开发和易于部署。本文将介绍如何使用Spring Boot初始化项目并完成登入注册的全过程,并提供两个示例。

步骤

以下是使用Spring Boot初始化项目并完成登入注册的全过程的步骤:

  1. 创建Spring Boot项目

使用Spring Initializr创建Spring Boot项目非常简单。我们可以访问Spring Initializr网站,选择所需的依赖项,然后下载生成的项目。也可以使用IDE,如IntelliJ IDEA或Eclipse,来创建Spring Boot项目。

  1. 添加Spring Boot依赖

在创建项目后,我们需要添加Spring Boot依赖。可以在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <scope>runtime</scope>
</dependency>

在上面的依赖中,我们使用spring-boot-starter-web作为Spring Boot的起始依赖,使用spring-boot-starter-security作为安全依赖,使用spring-boot-starter-thymeleaf作为模板引擎依赖,使用spring-boot-starter-data-jpa作为数据访问依赖,使用postgresql作为数据库依赖。

  1. 配置数据库

在使用Spring Boot进行数据访问时,我们需要配置数据库。可以在application.properties文件中添加以下配置:

spring.datasource.url=jdbc:postgresql://localhost:5432/mydatabase
spring.datasource.username=myusername
spring.datasource.password=mypassword
spring.jpa.hibernate.ddl-auto=create

在上面的配置中,我们使用PostgreSQL作为数据库,指定了数据库的URL、用户名和密码,并使用Hibernate的自动DDL功能来创建数据库表。

  1. 创建用户实体类

在src/main/java目录下创建一个名为User的类:

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false, unique = true)
    private String username;

    @Column(nullable = false)
    private String password;

    @Column(nullable = false)
    private String role;

    // getters and setters
}

在上面的示例中,我们使用@Entity注解来标记一个实体类,并使用@Table注解来指定表名。我们还使用@Id注解来标记主键字段,并使用@GeneratedValue注解来指定主键生成策略。我们还使用@Column注解来指定字段的属性。

  1. 创建用户仓库

在src/main/java目录下创建一个名为UserRepository的接口:

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    User findByUsername(String username);
}

在上面的示例中,我们使用@Repository注解来标记一个仓库接口,并继承JpaRepository接口来获得基本的CRUD操作。我们还定义了一个findByUsername方法来根据用户名查找用户。

  1. 创建用户服务

在src/main/java目录下创建一个名为UserService的类:

@Service
public class UserService implements UserDetailsService {
    @Autowired
    private UserRepository userRepository;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        User user = userRepository.findByUsername(username);
        if (user == null) {
            throw new UsernameNotFoundException("User not found");
        }
        return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), Collections.singleton(new SimpleGrantedAuthority(user.getRole())));
    }

    public void save(User user) {
        userRepository.save(user);
    }
}

在上面的示例中,我们使用@Service注解来标记一个服务类,并实现UserDetailsService接口来提供用户认证服务。我们还使用@Autowired注解来注入UserRepository依赖。在loadUserByUsername方法中,我们根据用户名查找用户,并返回一个UserDetails对象。在save方法中,我们保存用户到数据库中。

  1. 创建控制器

在src/main/java目录下创建一个名为UserController的类:

@Controller
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/register")
    public String registerForm(Model model) {
        model.addAttribute("user", new User());
        return "register";
    }

    @PostMapping("/register")
    public String registerSubmit(@ModelAttribute User user) {
        user.setRole("ROLE_USER");
        userService.save(user);
        return "redirect:/login";
    }

    @GetMapping("/login")
    public String loginForm() {
        return "login";
    }
}

在上面的示例中,我们使用@Controller注解来标记一个控制器,并使用@Autowired注解来注入UserService依赖。在registerForm方法中,我们返回一个register.html模板,并将一个空的User对象添加到模型中。在registerSubmit方法中,我们从表单中获取用户信息,并将用户角色设置为ROLE_USER,然后保存用户到数据库中,并重定向到登录页面。在loginForm方法中,我们返回一个login.html模板。

  1. 创建模板

在src/main/resources/templates目录下创建register.html和login.html模板:

register.html:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Register</title>
</head>
<body>
    <h1>Register</h1>
    <form th:action="@{/register}" th:object="${user}" method="post">
        <div>
            <label for="username">Username:</label>
            <input type="text" id="username" th:field="*{username}">
        </div>
        <div>
            <label for="password">Password:</label>
            <input type="password" id="password" th:field="*{password}">
        </div>
        <button type="submit">Register</button>
    </form>
</body>
</html>

login.html:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
</head>
<body>
    <h1>Login</h1>
    <form th:action="@{/login}" method="post">
        <div>
            <label for="username">Username:</label>
            <input type="text" id="username" name="username">
        </div>
        <div>
            <label for="password">Password:</label>
            <input type="password" id="password" name="password">
        </div>
        <button type="submit">Login</button>
    </form>
</body>
</html>

在上面的示例中,我们使用Thymeleaf模板引擎来创建HTML模板。在register.html模板中,我们使用th:action和th:object属性来指定表单的提交地址和绑定的对象。在login.html模板中,我们使用th:action属性来指定表单的提交地址。

  1. 配置安全

在src/main/java目录下创建一个名为SecurityConfig的类:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Autowired
    private UserService userService;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/register").permitAll()
                .anyRequest().authenticated()
                .and()
            .formLogin()
                .loginPage("/login")
                .permitAll()
                .and()
            .logout()
                .permitAll();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userService);
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

在上面的示例中,我们使用@Configuration注解来标记一个配置类,并使用@EnableWebSecurity注解来启用Web安全。我们还使用@Autowired注解来注入UserService依赖。在configure方法中,我们配置了安全规则,允许所有用户访问/register页面,但需要认证才能访问其他页面。在formLogin方法中,我们指定了登录页面和允许所有用户访问登录页面。在logout方法中,我们允许所有用户注销。在configure方法中,我们使用userDetailsService方法来指定用户认证服务。在passwordEncoder方法中,我们创建了一个BCryptPasswordEncoder对象来加密密码。

示例一:使用Spring Boot完成登入注册

以下是一个示例,演示如何使用Spring Boot完成登入注册:

  1. 创建Spring Boot项目

使用Spring Initializr创建Spring Boot项目。

  1. 添加Spring Boot依赖

在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <scope>runtime</scope>
</dependency>
  1. 配置数据库

在application.properties文件中添加以下配置:

spring.datasource.url=jdbc:postgresql://localhost:5432/mydatabase
spring.datasource.username=myusername
spring.datasource.password=mypassword
spring.jpa.hibernate.ddl-auto=create
  1. 创建用户实体类

在src/main/java目录下创建一个名为User的类。

  1. 创建用户仓库

在src/main/java目录下创建一个名为UserRepository的接口。

  1. 创建用户服务

在src/main/java目录下创建一个名为UserService的类。

  1. 创建控制器

在src/main/java目录下创建一个名为UserController的类。

  1. 创建模板

在src/main/resources/templates目录下创建register.html和login.html模板。

  1. 配置安全

在src/main/java目录下创建一个名为SecurityConfig的类。

  1. 运行应用程序

使用Maven命令或IDE来运行应用程序。

示例二:使用Spring Boot完成RESTful API

以下是另一个示例,演示如何使用Spring Boot完成RESTful API:

  1. 创建Spring Boot项目

使用Spring Initializr创建Spring Boot项目。

  1. 添加Spring Boot依赖

在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <scope>runtime</scope>
</dependency>
  1. 配置数据库

在application.properties文件中添加以下配置:

spring.datasource.url=jdbc:postgresql://localhost:5432/mydatabase
spring.datasource.username=myusername
spring.datasource.password=mypassword
spring.jpa.hibernate.ddl-auto=create
  1. 创建用户实体类

在src/main/java目录下创建一个名为User的类。

  1. 创建用户仓库

在src/main/java目录下创建一个名为UserRepository的接口。

  1. 创建用户服务

在src/main/java目录下创建一个名为UserService的类。

  1. 创建控制器

在src/main/java目录下创建一个名为UserController的类:

@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("")
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }

    @GetMapping("/{id}")
    public User getUserById(@PathVariable Long id) {
        return userService.getUserById(id);
    }

    @PostMapping("")
    public User createUser(@RequestBody User user) {
        return userService.createUser(user);
    }

    @PutMapping("/{id}")
    public User updateUser(@PathVariable Long id, @RequestBody User user) {
        return userService.updateUser(id, user);
    }

    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable Long id) {
        userService.deleteUser(id);
    }
}

在上面的示例中,我们使用@RestController注解来标记一个控制器,并使用@RequestMapping注解来指定请求路径。在getAllUsers方法中,我们返回所有用户的列表。在getUserById方法中,我们根据用户ID返回用户信息。在createUser方法中,我们创建一个新用户。在updateUser方法中,我们更新一个用户的信息。在deleteUser方法中,我们删除一个用户。

  1. 运行应用程序

使用Maven命令或IDE来运行应用程序。

结束语

在本文中,我们介绍了如何使用Spring Boot初始化项目并完成登入注册的全过程,并提供了两个示例。这些技巧可以帮助我们更好地理解Spring Boot的使用,并快速创建应用程序。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Springboot初始化项目并完成登入注册的全过程 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • java中判断字段真实长度的实例(中文2个字符,英文1个字符)

    下面我将详细讲解如何在Java中判断字段真实长度,区分中文和英文字符长度的处理方式。 问题背景 在开发Web应用程序时,经常需要对表单输入的数据进行长度验证,例如用户名、密码、手机、邮箱等,但是不同的语言字符所占用的字节数是不同的,在判断字符长度时,如果不做特别处理,就会出现问题。 在Java中可以使用字符编码的方式来解决这个问题。 解决方案 1、使用Str…

    Java 2023年5月29日
    00
  • Java判断字符串是否是整数或者浮点数的方法

    Java判断字符串是否是整数或浮点数有多种方法可以实现。以下是几种常见的方法。 方法一:正则表达式 正则表达式可以匹配复杂的字符模式。下列正则表达式可以匹配整数和浮点数: ^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$ 然后将它和待匹配字符串进行比较: public static boolean isNumeric(Stri…

    Java 2023年5月27日
    00
  • Springboot+SpringSecurity+JWT实现用户登录和权限认证示例

    让我为您详细讲解一下“Springboot+SpringSecurity+JWT实现用户登录和权限认证示例”的攻略。 首先,需要安装以下工具: Java开发环境 Maven构建工具 然后,我们需要按照以下步骤进行实现: 1.添加依赖 在pom.xml文件中添加以下依赖: <dependency> <groupId>org.spring…

    Java 2023年5月20日
    00
  • ExtJS GTGrid 简单用户管理

    ExtJS GTGrid 简单用户管理 概述 在本文中,将会详细讲解通过 ExtJS GTGrid 进行简单用户管理的完整攻略。用户管理是每个 Web 系统必备的功能之一,通过 ExtJS GTGrid 可以快速搭建一个用户管理模块,同时也能与后端数据进行交互。 本文将会通过以下几个方面逐步阐述: GTGrid 的基本使用方法 GTGrid 与后端数据的交互…

    Java 2023年6月15日
    00
  • java多线程编程之捕获子线程异常示例

    首先让我们来分析一下“java多线程编程之捕获子线程异常示例”的内容意义: 在Java多线程编程中,子线程中抛出未处理的异常会导致整个程序崩溃。在生产环境中,这种意外崩溃的情况会给用户带来极差的体验。因此,如果我们能够有效地捕获子线程中的异常,并对其进行处理,是非常有必要的。 接下来,我将通过两个具体的示例,向大家详细讲解如何捕获子线程异常以及如何对其进行处…

    Java 2023年5月19日
    00
  • Spring中IOC和AOP的深入讲解

    Spring中IOC和AOP的深入讲解 Spring框架是Java企业级应用开发中最重要的轻量级框架之一,使用Spring框架可以更轻松地实现控制反转(IoC)和面向切面编程(AOP)等关键功能。本文将深入介绍Spring中IoC和AOP的概念、原理及示例使用方法。 IoC(Inversion of Control)控制反转 IoC是一个重要的面向对象编程原…

    Java 2023年5月19日
    00
  • java实现ATM机系统(2.0版)

    Java实现ATM机系统(2.0版)攻略 1. 简介 本文主要介绍如何使用Java语言实现ATM机系统。ATM机系统是现代银行业务基础设施之一,而Java是一门优秀的编程语言,因此使用Java实现ATM机系统具有重要的现实意义和学习价值。 2. 功能需求 ATM机系统需要实现以下功能: 取款 存款 查询余额 修改密码 退出系统 3. 系统架构 ATM机系统的…

    Java 2023年5月23日
    00
  • Java之Algorithm_analysis案例详解

    Java之Algorithm_analysis案例详解 本篇文章旨在介绍Java中算法分析的相关知识点和应用案例,并详细解释如何应用该知识点解决实际问题。文章包括以下内容: 算法分析的基本概念 时间复杂度和空间复杂度的定义及其度量 案例:冒泡排序 案例:二分查找 算法分析的基本概念 算法是指完成特定任务的一系列有序步骤,分为有限步骤和无限步骤两种。算法分析则…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部