SpringBoot项目搭建+登录功能实现(小结)

项目目录

登录功能实现思路

目录

1.pom.xml添加依赖

2.配置application.yml文件

3.sql映射文件配置---UserMapper.xml

4.导入页面资源

5.Springboot启动类的配置

6.编写全局配置类  config->AppConfig

7.创建实体类--数据表对应

8.修改login.html页面

9.编写UserController的login方法

10.编写IUserService接口的login方法

11.编写UserServiceImpl实现类的login方法

12.编写IUserMapper接口的login方法

13.编写UserMapper.xml映射文件

14.idea中配置数据源

15.运行结果


1.pom.xml添加依赖

<dependencies>
    <!--jdbc依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>

    <!--thymeleaf模板引擎 依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

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

    <!--mybatis 依赖-->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.2.2</version>
    </dependency>

    <!--MySQL驱动 依赖-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>

    <!--测试-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <!--以上依赖创建项目可以自动生成(mysql驱动自己复制),以下需要自己添加-->
    <!--jquery框架依赖-->
    <dependency>
        <groupId>org.webjars</groupId>
        <artifactId>jquery</artifactId>
        <version>3.5.1</version>
    </dependency>

    <!--druid阿里数据库连接池-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.8</version>
    </dependency>

    <!--提示-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
    </dependency>

    <!--校验工具-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.projectlombok</groupId>
       <artifactId>lombok</artifactId>
    </dependency>

    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.5</version>
    </dependency>

</dependencies>

2.配置application.yml文件

#数据源配置
spring:
  datasource:
    username: root
    password: rootroot
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/travel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
    type: com.alibaba.druid.pool.DruidDataSource
  #禁用thymeleaf缓存
  thymeleaf:
    cache: false
#加载mybatis配置文件
mybatis:
  #指定mapper映射文件路径
  mapper-locations: classpath:mapper/*.xml
  #设置类型别名
  type-aliases-package: com.etc.travelsys.model

#mybatis sql打印(方法接口所在的包,不是Mapper.xml所在的包)
logging:
  level:
    com.etc.travelsys.mapper: debug

3.sql映射文件配置---UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--为这个mapper指定一个唯一的namespace,namespace的值设置成DAO接口名,这样就能够保证能够匹配DAO接口-->
<mapper namespace="com.etc.travelsys.mapper.UserMapper">

4.导入页面资源

css js img 复制到static目录 , html页面复制到templates目录下

5.Springboot启动类的配置


import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//启动类
@SpringBootApplication
//在指定包下扫描mapper接口
@MapperScan(basePackages = {"com.shenu.travelsys.mapper"})
public class TravelSysApplication {

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

}

6.编写全局配置类  config->AppConfig


import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class AppConfig implements WebMvcConfigurer {

    //统一视图跳转
    @Override
    public void addViewControllers(ViewControllerRegistry registry){
        //访问路径为http://localhost:8080/时,那么就是访问login文件夹下的login.html页面
        registry.addViewController("/").setViewName("login/login");
    }
}

7.创建实体类--数据表对应

entity->UserEntity


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.sql.Timestamp;
import java.util.Date;

/**
 * @description: 用户实体类
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserEntity {
    private int userid;//用户id
    private String username;//用户名
    private String password;//密码
    private String email;//邮箱
    private String sex;//性别 1-男 2-女
    private int status;//状态 1-账户正常 2-账户异常
    private Date birthday;//出生日期
    private String location;//地址
    private String QQ;//qq号
    private String mobile;//手机号
    private String hobby;//爱好
    private String introduction;//个人介绍
    private String headimg;//头像地址
    private Timestamp registertime;//注册时间
    private int role;
}

8.修改login.html页面

templates/login/login.html

9.编写UserController的login方法


import com.etc.travelsys.model.entity.UserEntity;
import com.etc.travelsys.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpSession;

/**
 * @description: 用户相关的控制层
 **/
@Controller //标记控制层,把当前类的对象交给容器管理
//映射路径(访问路径,可以声明在类和方法上),只要访问此类中的资源,一级路径必须是user
@RequestMapping("/user")
public class UserController {
    @Autowired //根据类型自动注入对象
    @Qualifier("userService")  //如果指定注入的对象,使用Qualifier注解
    private IUserService userService;

    //登录
    @RequestMapping("/login")
    public String login(String username, String password, Model model, HttpSession session){
        //1.接收请求中的参数(view-controller):方法的入参直接获取(页面输入的username和password)
        //2.处理数据
        //(1)创建UserServiceImpl的对象 --- 成员变量自动注入
        //(2)调用service中的方法  参数:username password  返回值:UserEntity
        UserEntity user =  userService.login(username,password);

        //3.保存数据(controller-view)并跳转页面
        String url = "";
        //(1)判断登录是否成功
        if (user != null){
            //(2)成功 1.把数据保存到session中  2.跳转页面到index.html
            session.setAttribute("USER",user);

            if (user.getRole() == 1){   //role 1-普通用户  2-管理员用户
                url = "index";
            }else{
                url = "/admin/index";
            }

        }else{
            //(3)失败 1.把异常信息保存到model中  2.跳转到login.html
            model.addAttribute("msg","登录名或者密码错误");
            url = "/login/login";
        }

        //经过视图解析器,最终路径解析为 前缀(/templates/)+url+后缀(.html)
        return url;
    }


}

10.编写IUserService接口的login方法


import com.shenu.travelsys.model.entity.UserEntity;

/**
 * 用户相关的业务逻辑层接口
 */
public interface IUserService {
    UserEntity login(String username, String password);
}

11.编写UserServiceImpl实现类的login方法


import com.etc.travelsys.mapper.UserMapper;
import com.etc.travelsys.model.entity.UserEntity;
import com.etc.travelsys.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @description: 用户相关的业务逻辑层接口实现类
 **/
@Service("userService") //用于标注业务层组件
public class UserServiceImpl implements IUserService {

    //自动注入UserMapper对象
    @Autowired
    private UserMapper userMapper;

    //重写接口的登录方法
    @Override
    public UserEntity login(String username, String password) {
        return userMapper.login(username,password);
    }
}

12.编写IUserMapper接口的login方法


import com.etc.travelsys.model.entity.UserEntity;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

/**
 * @description:用户相关的数据持久层接口
 **/
@Repository
public interface UserMapper {

    //登录抽象方法,如果是两个以上的参数,可以使用@Param注解;如果是一个参数--不需要
    UserEntity login(@Param("username") String username,
                     @Param("password") String password);

}

13.编写UserMapper.xml映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--为这个mapper指定一个唯一的namespace,namespace的值设置成DAO接口名,这样就能够保证能够匹配DAO接口-->
<mapper namespace="com.shenu.travelsys.mapper.UserMapper">

    <!--登录-->
    <select id="login" resultType="UserEntity">
        select *
        from t_user
        where username = #{username}
          and `password` = #{password}
    </select>
</mapper>

14.idea中配置数据源

15.运行结果

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>