You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Apache NetBeans中实现Spring Boot连MySQL及登录页输入处理

解决Spring Boot接收登录输入+MySQL连接问题

一、接收登录页(index.html)的输入

你的现有控制器只有GET请求映射,要处理登录表单提交,需要补充POST请求处理逻辑,按以下步骤操作:

1. 创建登录数据实体类

新建com.example.demo.entity.UserLogin.java,用来绑定表单输入字段:

package com.example.demo.entity;

public class UserLogin {
    private String username;
    private String password;

    // 必须保留无参构造器
    public UserLogin() {}

    // getter和setter方法
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

2. 修改控制器处理POST请求

给MavenSbApplication类添加@Controller注解(仅@SpringBootApplication无法处理页面请求),再添加POST映射:

package com.example.demo;

import com.example.demo.entity.UserLogin;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ModelAttribute;

@SpringBootApplication
@Controller // 必须添加该注解才能处理页面请求
public class MavenSbApplication {

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

    @GetMapping("/index")
    public String showLoginPage(Model model) {
        // 传入空的UserLogin对象,用于绑定表单数据
        model.addAttribute("userLogin", new UserLogin());
        return "index";
    }

    // 处理登录表单提交
    @PostMapping("/login")
    public String handleLogin(@ModelAttribute UserLogin userLogin) {
        // 直接获取表单输入的用户名和密码
        String inputUsername = userLogin.getUsername();
        String inputPassword = userLogin.getPassword();
        
        // 这里可以后续添加数据库验证逻辑
        System.out.println("提交的用户名:" + inputUsername);
        System.out.println("提交的密码:" + inputPassword);
        
        // 验证成功跳转首页,失败返回登录页
        return "redirect:/home"; // 需确保存在home.html页面
    }
}

3. 前端index.html表单配置

确保表单为POST请求,action指向/login,input的name属性与UserLogin字段名一致:

<!-- 静态HTML版本 -->
<form action="/login" method="post">
    <div>
        <label>用户名:</label>
        <input type="text" name="username" required>
    </div>
    <div>
        <label>密码:</label>
        <input type="password" name="password" required>
    </div>
    <button type="submit">登录</button>
</form>

如果用Thymeleaf模板,可改为:

<form th:action="@{/login}" th:object="${userLogin}" method="post">
    <div>
        <label>用户名:</label>
        <input type="text" th:field="*{username}" required>
    </div>
    <div>
        <label>密码:</label>
        <input type="password" th:field="*{password}" required>
    </div>
    <button type="submit">登录</button>
</form>

二、在NetBeans中配置Spring Boot连接MySQL

1. 添加依赖(修改pom.xml)

打开项目pom.xml,添加MySQL驱动和Spring Data JPA依赖(JPA比原生JDBC更适合新手快速开发):

<!-- MySQL驱动 -->
<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <scope>runtime</scope>
</dependency>
<!-- Spring Data JPA -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

NetBeans会自动下载依赖,等待加载完成即可。

2. 配置数据库连接(application.properties)

在src/main/resources/application.properties中添加数据库配置:

# 数据库连接信息
spring.datasource.url=jdbc:mysql://localhost:3306/你的数据库名?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
spring.datasource.username=你的MySQL用户名(如root)
spring.datasource.password=你的MySQL密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# JPA调试配置
spring.jpa.hibernate.ddl-auto=update # 自动创建/更新表结构,开发阶段使用
spring.jpa.show-sql=true # 控制台打印SQL语句,方便调试
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect

替换你的数据库名、你的MySQL用户名、你的MySQL密码为实际值,确保本地MySQL服务已启动。

3. 测试数据库连接(实现登录验证)

创建用户实体类(对应数据库表)

新建com.example.demo.entity.User.java:

package com.example.demo.entity;

import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;

@Entity
@Table(name = "users") // 对应数据库中的users表
public class User {
    @Id
    private String username;
    private String password;
    private String email;

    // 无参构造器、getter、setter
    public User() {}

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

创建Repository接口(操作数据库)

新建com.example.demo.repository.UserRepository.java:

package com.example.demo.repository;

import com.example.demo.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;

// JpaRepository<实体类, 主键类型>
public interface UserRepository extends JpaRepository<User, String> {
    // 自动根据方法名生成SQL,根据用户名查询用户
    User findByUsername(String username);
}

在控制器中注入Repository完成登录验证

修改handleLogin方法,注入UserRepository实现数据库验证:

import com.example.demo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;

// ...其他代码...

@Autowired
private UserRepository userRepository;

@PostMapping("/login")
public String handleLogin(@ModelAttribute UserLogin userLogin) {
    User dbUser = userRepository.findByUsername(userLogin.getUsername());
    if (dbUser != null && dbUser.getPassword().equals(userLogin.getPassword())) {
        // 登录成功跳转首页
        return "redirect:/home";
    } else {
        // 登录失败返回登录页,可添加错误提示
        return "index";
    }
}

注意事项

  • 确保MySQL服务处于运行状态,且已提前创建好配置中的数据库。
  • 若使用Thymeleaf,需在pom.xml中添加spring-boot-starter-thymeleaf依赖。
  • 生产环境不要明文存储密码,后续可学习BCrypt加密方案。

内容的提问来源于stack exchange,提问作者GooseMan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 07:30:27