day02 瑞吉外卖一 环境搭建以及登录退出功能实现

1.数据库文件的导入

注意:项目中的mysql用的是5.7

1.创建数据库 reggie

2.导入sql文件 资料/数据模型/db_reggie.sql

day02 瑞吉外卖一 环境搭建以及登录退出功能实现_第1张图片

2.搭建maven项目

2.1 创建maven项目

day02 瑞吉外卖一 环境搭建以及登录退出功能实现_第2张图片

 day02 瑞吉外卖一 环境搭建以及登录退出功能实现_第3张图片

2.2 引入依赖pom.xml

找到资料/项目配置文件

2.3 引入配置文件 application.yml

找到资料/项目的配置文件

2.4 编写启动类 

day02 瑞吉外卖一 环境搭建以及登录退出功能实现_第4张图片

package com.itheima.reggie;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@Slf4j
@SpringBootApplication
public class ReggieApplication {
    public static void main(String[] args) {
        SpringApplication.run(ReggieApplication.class,args);
        log.info("项目启动成功...");
    }
}

2.5 引入前端资源

(1)资料前端资源 粘贴到 idea中resourse下

启动项目 

day02 瑞吉外卖一 环境搭建以及登录退出功能实现_第5张图片

无法访问 因为在springboot框架中 前端资源部分要放在 static下 如果没有 就需要自己进行拦截配置

(2)config包下创建 WebMvcConfig

package com.itheima.reggie.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;


@Slf4j
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        log.info("开始对静态资源映射");
        registry.addResourceHandler("/backend/**").addResourceLocations("classpath:/backend/");
        registry.addResourceHandler("/front/**").addResourceLocations("classpath:/front/");
    }
}

WebMvcConfigurationSupport是webmvc的配置类,如果在springboot项目中,有配置类继承了WebMvcConfigurationSupport,那么webmvc的自动配置类WebMvcAutoConfiguration就会失效。

该注解表示只有当spring的容器中没有装载继承了WebMvcConfigurationSupport类型的bean时,自动配置类才会生效。WebMvc自动配置类中不仅定义了classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/等路径的映射,还定义了配置文件spring.mvc开头的配置信息等。

如果想要使用自动配置生效,又要按自己的需要重写某些方法,比如增加拦截器。那么将配置类继承
WebMvcConfigurationSupport改为实现WebMvcConfigurer接口即可。
关于该注解的详细配置看下文链接
原文链接:https://blog.csdn.net/weixin_43606226/article/details/105047572

再次启动项目 进行访问 成功显示页面

day02 瑞吉外卖一 环境搭建以及登录退出功能实现_第6张图片

3 登录功能

3 .1 登录功能结构(mapper、service、controller、entity)

day02 瑞吉外卖一 环境搭建以及登录退出功能实现_第7张图片

 

entity

package com.itheima.reggie.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 员工实体
 */
@Data
public class Employee implements Serializable {

    private static final long serialVersionUID = 1L;

    private Long id;

    private String username;

    private String name;

    private String password;

    private String phone;

    private String sex;

    private String idNumber;//身份证号码

    private Integer status;

    private LocalDateTime createTime;

    private LocalDateTime updateTime;

    @TableField(fill = FieldFill.INSERT)
    private Long createUser;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updateUser;

}

mapper

package com.itheima.reggie.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.itheima.reggie.entity.Employee;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface EmployeeMapper extends BaseMapper {
}

service

package com.itheima.reggie.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.itheima.reggie.entity.Employee;

public interface EmployeeService extends IService {
}

impl

package com.itheima.reggie.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.itheima.reggie.entity.Employee;
import com.itheima.reggie.mapper.EmployeeMapper;
import com.itheima.reggie.service.EmployeeService;
import org.springframework.stereotype.Service;

@Service
public class EmployeeServiceImpl extends ServiceImpl implements EmployeeService {
}

controller

package com.itheima.reggie.controller;

import com.itheima.reggie.service.EmployeeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@RestController
@RequestMapping("/employee")
public class EmployeeController {

    @Autowired
    private EmployeeService employeeService;
}

3.2 导入R类

common包下导入R

day02 瑞吉外卖一 环境搭建以及登录退出功能实现_第8张图片

 3.3 登录业务流程

day02 瑞吉外卖一 环境搭建以及登录退出功能实现_第9张图片

 

package com.itheima.reggie.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.itheima.reggie.commom.R;
import com.itheima.reggie.entity.Employee;
import com.itheima.reggie.service.EmployeeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.DigestUtils;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

@Slf4j
@RestController
@RequestMapping("/employee")
public class EmployeeController {

    @Autowired
    private EmployeeService employeeService;

    /**
     * 登录功能
     * @return
     */
    public R login(HttpServletRequest request, @RequestBody Employee employee){
        //1.将前台页面发传来的password进行md5加密
        String password = employee.getPassword();
        password = DigestUtils.md5DigestAsHex(password.getBytes());

        //2.根据页面传来的用户名username查询数据库
        LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Employee::getUsername,employee.getUsername());
        Employee emp = employeeService.getOne(queryWrapper);

        //3.如果没有查询到结果就返回登录失败的结果
        if(emp==null){
            return R.error("登录失败");
        }
        //4.密码对比,如果密码不一致返回登录失败结果
        if(emp.getPassword()!=employee.getPassword()){
            return R.error("密码不正确");
        }
        //5.查看员工状态,如果状态为0,员工被禁,返回禁用结果
        if(emp.getStatus()==0){
            return R.error("该账号被禁用")
        }
        //6.登录成功,将员工id存放在Session中返回登录成功的结果
        request.getSession().setAttribute("employee",emp.getId());
        return R.success(emp);
    }
}

4. 退出登录

@PostMapping("/logout")
    public R logout(HttpServletRequest request){
        request.getSession().removeAttribute("employee");
        return R.success("退出成功");
    }

你可能感兴趣的:(瑞吉外卖,java,spring,boot,maven)