瑞吉外卖day01

目录

涵盖的技术

环境搭建

1数据表

2maven的pom文件

文件配置

配置application.yml文件

编写功能

包结构

配置application启动类

设置静态资源映射 

 需求分析

查看登录信息

代码开发 

1、创建实体类Employee

2、创建Mapper层文件

3、创建Service层文件接口和实现类

4、创建 Controller层文件

5、导入通用返回结果类 ,用于相应服务端数据结果

一、登录功能开发 

1、登录功能的逻辑处理

2、编写代码

 记录一下犯的错误

3、进行断点调试,验证登录功能

二、退出功能开发 

1、需求分析

 2、逻辑处理

 3、编写代码


涵盖的技术

环境搭建

1数据表

2maven的pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.itheima</groupId>
    <artifactId>reggie_take_out</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.76</version>
        </dependency>

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

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.23</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.4.5</version>
            </plugin>
        </plugins>
    </build>

</project>

文件配置

配置application.yml文件
#配置了端口号
server:
  port: 8080
#应用名称
spring:
  application:
    name: reggie_take_out
#数据连接池信息
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/reggie?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
      username: root
      password: root
mybatis-plus:
  configuration:
    #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射
    map-underscore-to-camel-case: true
#id命名规则(由mybatis-plus提供)
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      id-type: ASSIGN_ID

编写功能

包结构

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

设置静态资源映射 
@Slf4j
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
    /**
     * 设置静态资源映射
     */
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        log.info("开始进行静态资源映射...");

        //        addResourceHandler是指你想在url请求的路径
        // addResourceLocations是存放的真实路径
        registry.addResourceHandler("/backend/**")
                .addResourceLocations("classpath:backend/");
        registry.addResourceHandler("/front/**")
                .addResourceLocations("classpath:front/");
    }
}
 需求分析
查看登录信息

代码开发 
1、创建实体类Employee
//@Data由lombok提供,用于简化开发
@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;

}

2、创建Mapper层文件
/**
 * BaseMapper<>由mubatis-plus提供的类,里面填入实体类
 */
@Mapper
public interface EmployeeMapper extends BaseMapper<Employee> {

}
3、创建Service层文件接口和实现类

接口

/**
 * IService<Employee>由mubatis-plus提供的类
 */
public interface EmployeeService extends IService<Employee> {
}

实现类

/**
 * ServiceImpl<>由mubatis-plus提供的类,里面填入映射文件和实体类
 */
@Service
public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeService {
}
4、创建 Controller层文件
@Slf4j
@RestController
@RequestMapping("/employee")
public class EmployeeController {
    @Autowired
    private EmployeeService employeeService;

    /**
     * 员工登录
     * @param request
     * @param employee
     * @return
     * @RequestBody Employee employee 接收json数据
     *     HttpServletRequest request 接收session信息
     */
    @PostMapping("/login  ")
    public R<Employee> login(HttpServletRequest request, @RequestBody Employee employee) {
        return null;
    }
}
5、导入通用返回结果类 ,用于相应服务端数据结果

/**
 * 通用返回结果类
 * @param <T>
 */
@Data
public class R<T> {

    private Integer code; //编码:1成功,0和其它数字为失败

    private String msg; //错误信息

    private T data; //数据

    private Map map = new HashMap(); //动态数据

    public static <T> R<T> success(T object) {
        R<T> r = new R<T>();
        r.data = object;
        r.code = 1;
        return r;
    }

    public static <T> R<T> error(String msg) {
        R r = new R();
        r.msg = msg;
        r.code = 0;
        return r;
    }

    public R<T> add(String key, Object value) {
        this.map.put(key, value);
        return this;
    }

}
一、登录功能开发 
1、登录功能的逻辑处理

2、编写代码
@Slf4j
@RestController
@RequestMapping("/employee")
public class EmployeeController {
    @Autowired
    private EmployeeService employeeService;

    /**
     * 员工登录
     * @param request
     * @param employee
     * @return
     * @RequestBody Employee employee 接收json数据
     *     HttpServletRequest request 接收session信息
     *通过使用session,可以方便地在不同页面和请求之间共享和访问用户数据。
     */
    @PostMapping("/login")
    public R<Employee> login(HttpServletRequest request, @RequestBody Employee employee) {

//1、将页面提交的密码password进行md5加密处理
        String password = employee.getPassword();
        password= DigestUtils.md5DigestAsHex(password.getBytes());
//        2、根据页面提交的用户名username查询数据库
//        LambdaQueryWrapper是mybatis-plus提供的对象用于查询等操作,比较浏览器传的名字和数据库名字
//        MybatisPlus的getOne方法是用于查询单条记录的方法,它会根据传入的条件查询符合条件的第一条记录,
//        并返回一个实体对象。如果查询结果为空,则返回null。
        LambdaQueryWrapper<Employee> 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().equals(password)){
            return R.error("登录失败");
        }
//        5、查看员工状态,如果已禁用状态,则返回已禁用结果
        if(emp.getStatus()==0){
            return R.error("账号已封禁");
        }
//        6、登录成功,将员工id存入Session并且返回登录成功结果
        request.getSession().setAttribute("employee",emp.getId());
        return R.success(emp);
    }
}
 记录一下犯的错误

 "/login  " login后多加了一个空格导致No mapping for POST /employee/login

3、进行断点调试,验证登录功能

设置超时时间方便调试

二、退出功能开发 
1、需求分析

分析前端页面

 

 2、逻辑处理

 3、编写代码
    /**
     * 员工退出
     * @param request
     * @return
     */
    @PostMapping("/logout")
    public R<String> logout(HttpServletRequest request){
//        清除session中保存的员工id
        request.getSession().removeAttribute("employee");
        return R.success("退出成功");
    }

4、进行测试

 退出前可以查询到浏览器保存的session信息

退出后session信息清除成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值