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


    1.配置静态资源映射

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

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

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

    1. @Slf4j
    2. @Configuration
    3. public class WebMvcConfig extends WebMvcConfigurationSupport {
    4. /**
    5. * 设置静态资源映射
    6. * @param registry
    7. */
    8. @Override
    9. protected void addResourceHandlers(ResourceHandlerRegistry registry) {
    10. log.info("开始进行静态资源映射...");
    11. registry.addResourceHandler("/backend/**").addResourceLocations("classpath:/back
    12. end/");
    13. registry.addResourceHandler("/front/**").addResourceLocations("classpath:/front/
    14. ");
    15. }
    16. }

    2.登录后台代码验证

    1. @Slf4j
    2. @RestController
    3. //@Controller + @ResponseBody = @RestController
    4. //@ResponseBody 注解是将返回的数据结构转换为 Json 格式
    5. @RequestMapping("/employee")
    6. public class EmployeeController {
    7. @Autowired
    8. private EmployeeService employeeService;
    9. @PostMapping("/login")
    10. /*@RequestBody 注解用于接收前端传来的实体,接收参数也是对应的实*/
    11. public R login(HttpServletRequest request, @RequestBody Employee employee) {
    12. //1.加密密码
    13. String password = employee.getPassword();
    14. password = DigestUtils.md5DigestAsHex(password.getBytes());
    15. //2.数据库查询
    16. LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
    17. queryWrapper.eq(Employee::getUsername, employee.getUsername());
    18. Employee emp = employeeService.getOne(queryWrapper);
    19. //3.如果没有查询到则返回登录失败结果
    20. if (emp == null) {
    21. return R.error("登录失败");
    22. }
    23. //4、密码比对,如果不一致则返回登录失败结果
    24. if (!emp.getPassword().equals(password)) {
    25. return R.error("登录失败");
    26. }
    27. //5、查看员工状态,如果为已禁用状态,则返回员工已禁用结果
    28. if (emp.getStatus() == 0) {
    29. return R.error("账号已禁用");
    30. }
    31. //6、登录成功,将员工id存入Session并返回登录成功结果
    32. request.getSession().setAttribute("employee", emp.getId());
    33. return R.success(emp);
    34. }

    3.通用结构类R

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

    1. @Data
    2. public class R {
    3. private Integer code; //编码:1成功,0和其它数字为失败
    4. private String msg; //错误信息
    5. private T data; //数据
    6. private Map map = new HashMap(); //动态数据
    7. public static R success(T object) {
    8. R r = new R();
    9. r.data = object;
    10. r.code = 1;
    11. return r;
    12. }
    13. public static R error(String msg) {
    14. R r = new R();
    15. r.msg = msg;
    16. r.code = 0;
    17. return r;
    18. }
    19. public R add(String key, Object value) {
    20. this.map.put(key, value);
    21. return this;
    22. }

  • 相关阅读:
    Python vs C#:首先学习哪种编程语言最好?
    echarts折线图每段显示不同的颜色
    一行代码优化 pdfjs 加载大文件的pdf 速度
    MyBatis的TypeAliasRegistry
    Pytorch从零开始实现Vision Transformer (from scratch)
    使用EasyExcel导入导出数据字典
    【虚拟机】
    Rust中的 into和from如何使用?
    excel映射xml方法
    Docker重量级监控系统CIG - CAdvisor + InfluxDB + Grafana
  • 原文地址:https://blog.csdn.net/Wdasdasda/article/details/132723184