JAVAspringboot连接mysql实现用户登录模块
如何实现呢?
- 构建springboot项目,添加thymeleaf、web、mysql、jdbc、lombok依赖。导入静态资源html页面到resources下的templates下,其css、img和js放在resources下的static里面。
- 创建一个yml的配置文件,用来写连接数据库的相关信息、端口等。
- 在config包下创建一个mvccontroller类,用来控制URL定位页面。
- 在dao包下创建一个logindao的接口,使用jpa程序运行时获得用户账号和密码。
- 在model包下创建一个实体类userbean,对接mysql数据表中的字段。
- 在service包下创建一个类LoginClservice,写要怎么做,也就是要怎么实现用户登录。
- 在controller包下创建一个类logincontroller,用来控制页面,是登录跳转还是返回用户账号密码错误。
- 在controller包下创界一个类jumpcontroller,用来实现页面跳转。
1. 构建springboot项目,添加thymeleaf、web、mysql、jdbc、lombok依赖。导入静态资源html页面到resources下的templates下,其css、img和js放在resources下的static里面。
2. 创建一个yml的配置文件,用来写连接数据库的相关信息、端口等。
spring:
jpa:
open-in-view: false
datasource:
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/yeujuan?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
server:
port: 8080
3. 在config包下创建一个mvccontroller类,用来控制URL定位页面。
写入首页或者其他页面的路径,就可以直接在URL上写地址定位到某个页面。如:localhost:8080 就可以直接定位到index页。
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Controller
public class MyMvccontroller implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
registry.addViewController("/index").setViewName("index");
}
}
4. 在dao包下创建一个logindao的接口,jpa程序运行时获得用户账号和密码。
import com.example.demo.model.UserBean;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface LoginDao extends JpaRepository<UserBean, Integer> {
UserBean findByUsernameAndPassword(String name, String password);
//这是使用的jpa,程序运行时,会自动识别findBy后面的字段部分。
}
5. 在model包下创建一个实体类userbean,对接mysql数据表中的字段。
id为主键,自动增长。
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "user")
public class UserBean {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String username;
private String password;
private int role;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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 int getRole() {
return role;
}
public void setRole(int role) {
this.role = role;
}
}
6. 在service包下创建一个类LoginClservice,写要怎么做,也就是要怎么实现用户登录。
定义chick方法比较前台页面传来的用户名和密码是否一致
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.demo.dao.*;
import com.example.demo.model.*;
@Service
public class LoginClservice {
@Autowired
private LoginDao loginDao;//与dao层进行交互
public String chick(String username,String userpassword) {
UserBean b = loginDao.findByUsernameAndPassword(username, userpassword);
if (b == null) {
return "null";
}
String aString = b.getUsername();
String bString = b.getPassword();
if (aString.equals(username) && bString.equals(userpassword)) {
return "success";
} else {
return "error";
}
}
}
7. 在controller包下创建一个类logincontroller,用来控制页面,是登录跳转还是返回用户账号密码错误。
如果登录成功就跳转到std_index页面,如果登录失败就跳转到原来的登录界面,并显示用户账号或密码错误的信息。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import com.example.demo.model.*;
import com.example.demo.service.*;
@Controller
@RequestMapping(value = "/intologin/")//接口注解
public class LoginController {
@Autowired //与service层进行交互
private LoginClservice loginClService;
@RequestMapping(value = "user")
public String getLoginCl(@RequestParam("name") String name, @RequestParam("password") String password, Model model){
String b;
b=loginClService.chick(name,password);
if(b=="success"){
return "std_index";
}
else {
model.addAttribute("msg","用户名或者密码错误");
return "login";
}
}
}
8. 在controller包下创界一个类jumpcontroller,用来实现页面跳转。
实现页面跳转需要在HTML页面做上标注,例如index页面点击登录后页面跳转到log_cover页面。
代码如下:
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class JumpController {
@RequestMapping(value = "/log_login")
public String log_login(){
return "log_cover";
}
@RequestMapping(value = "login")
public String login(){
return "login";
}
}
最后导入HTML页面的时候不要忘了要更改一下HTML页面,一些语法要注意,附上例图:
结果展示:
登录成功页面
登录失败页面