SpringBoot + Thymeleaf 实现模拟登录功能详解

在本文中,我将详细介绍如何使用SpringBoot框架结合Thymeleaf模板引擎实现一个简单的模拟登录功能。这个示例包含了完整的MVC架构,适合初学者学习SpringBoot Web开发的基础知识。

一、项目概述

本项目实现了一个基本的用户登录系统,包含以下功能:

  1. 显示登录页面

  2. 验证用户输入的用户名和密码

  3. 登录成功跳转到用户信息页面

  4. 登录失败返回错误信息

二、核心代码解析

1. 实体类 (User.java)

package com.qcby.entity;

public class User {
    private int id;
    private String name;
    private String password;
    
    // getter和setter方法
    // toString方法
}

 这个简单的POJO类表示用户实体,包含id、name和password三个属性。

2. 配置类 (UserConfig.java) 

package com.qcby.config;

import com.qcby.entity.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class UserConfig {
    @Bean(name="user")
    public User user(){
        User user = new User();
        user.setId(1);
        user.setName("test");
        user.setPassword("123456");
        return user;
    }
}

 

这个配置类创建了一个User Bean,作为我们模拟的"数据库"中的用户数据。

3. 服务层接口 (UserService.java)

package com.qcby.service;

import com.qcby.entity.User;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public interface UserService {
    public String login(User user, HttpServletRequest request, 
                       HttpSession session, HttpServletResponse response);
}

 定义了登录功能的接口。

4. 服务实现类 (UserLoginServiceImpl.java) 

package com.qcby.service.Impl;

import com.qcby.entity.User;
import com.qcby.service.UserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.*;

@Service
public class UserLoginServiceImpl implements UserService {
    @Resource(name="user")
    private User user2;
    
    @Override
    public String login(User user1, HttpServletRequest request, 
                       HttpSession session, HttpServletResponse response) {
        String msg="登录失败";
        if(user1.getName()!=null&&user1.getPassword()!=null){
            if(user1.getName().equals(user2.getName())){
                if(user1.getPassword().equals(user2.getPassword())){
                    msg="登录成功";
                } else {
                    msg="密码错误";
                }
            } else {
                msg="用户名不存在";
            }
        } else {
            msg="用户名不存在";
        }
        return msg;
    }
}

 这个实现类包含了具体的登录验证逻辑,将用户输入与配置的Bean进行比较。

5. 控制器 (UserLoginController.java)

package com.qcby.controller;

import com.qcby.entity.User;
import com.qcby.service.UserService;
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 javax.servlet.http.*;

@Controller
public class UserLoginController {

    @RequestMapping("/login")
    public String login(User user, Model model) {
        model.addAttribute("msg", "请输入用户名和密码");
        return "login";
    }

    @Autowired
    private UserService userService;
    
    @RequestMapping("/dologin")
    public String login2(Model model, User user, 
                        HttpSession session, HttpServletRequest request, 
                        HttpServletResponse response) {
        String msg = userService.login(user, request, session, response);
        model.addAttribute("msg", msg);
        
        if("登录成功".equals(msg)){
            session.setAttribute("user", user);
            User u = (User)session.getAttribute("user");
            model.addAttribute("user", u);
            return "user";
        } else {
            return "login";
        }
    }
}

控制器处理HTTP请求,协调模型和视图的交互。

6. 视图模板 (login.html)




    登录页面
    


用户名:

密码:

7. 视图模板 (user.html)




    用户信息
    


用户名:

密码:

三、运行结果

SpringBoot + Thymeleaf 实现模拟登录功能详解_第1张图片

SpringBoot + Thymeleaf 实现模拟登录功能详解_第2张图片 

SpringBoot + Thymeleaf 实现模拟登录功能详解_第3张图片 

你可能感兴趣的:(spring,boot,后端,java)