第一天 关于项目遇到的问题和缺少的知识点

1.配置静态资源映射

配置文件使用的都是配置类方式

创建配置类WebMvcConfig,设置静态资源映射

用于在Springboot项目中, 默认静态资源的存放目录为 : "classpath:/resources/", "classpath:/static/", "classpath:/public/" ; 而在我们的项目中静态资源存放在 backend, front 目录中, 那么这个时候要想访问到静态资源, 就需要设置静态资源映射

java 复制代码
@Slf4j
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
/**
* 设置静态资源映射
* @param registry
*/
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
log.info("开始进行静态资源映射...");
registry.addResourceHandler("/backend/**").addResourceLocations("classpath:/back
end/");
registry.addResourceHandler("/front/**").addResourceLocations("classpath:/front/
");
}
}

2.登录后台代码验证

java 复制代码
@Slf4j
@RestController
//@Controller + @ResponseBody = @RestController
//@ResponseBody 注解是将返回的数据结构转换为 Json 格式
@RequestMapping("/employee")
public class EmployeeController {
    @Autowired
    private EmployeeService employeeService;

    @PostMapping("/login")
    /*@RequestBody 注解用于接收前端传来的实体,接收参数也是对应的实*/
    public R<Employee> login(HttpServletRequest request, @RequestBody Employee employee) {
        //1.加密密码
        String password = employee.getPassword();
        password = DigestUtils.md5DigestAsHex(password.getBytes());

        //2.数据库查询
        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);
    }

3.通用结构类R

此类是一个通用结果类,服务端响应的所有结果最终都会包装成此种类型返回给前端页面

java 复制代码
@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;
}
相关推荐
TG_yunshuguoji19 小时前
阿里云代理商:2026年云端与本地双轨部署OpenClaw 方案
服务器·阿里云·云计算·openclaw
Linux运维技术栈19 小时前
Cloudflare Argo Smart Routing全球加速:优化跨境回源链路,提升跨区域访问体验
大数据·前端·数据库
楼田莉子19 小时前
Linux网络:IP协议
linux·服务器·网络·c++·学习·tcp/ip
小锋java123419 小时前
【技术专题】Matplotlib3 Python 数据可视化 - Matplotlib3 绘制饼状图(Pie)
java
极客on之路19 小时前
线上 JVM 出问题
运维·服务器·jvm
wuminyu19 小时前
专家视角看JVM_StartThread
java·linux·c语言·jvm·c++
阿林爱吃大米饭19 小时前
[AutoDL] 预防系统盘爆满:一键将Conda环境和Pip缓存迁移到数据盘(autodl-tmp)
服务器
awljwlj19 小时前
黑马点评复习—缓存相关【包含可能的问题和基础知识复习】
java·后端·spring·缓存
Gofarlic_OMS19 小时前
ENOVIA基于Token的许可证消费模式分析与分点策略
java·大数据·开发语言·人工智能·制造
ROLL.719 小时前
Git和Repo
java·git·安卓