在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
相关产品推荐
相关产品推荐

