搭建SpringBoot项目问题汇总(下)

简介: 搭建SpringBoot项目问题汇总

10、用户登录报空指针异常

报错信息:java.lang.NullPointerException: null

at com.bobooy.ems.controller.UserController.login(UserController.java:25)。。。。。

分析:报错原因,用户名填写错误会导致从数据库中通过用户名查找用户信息会查不到这个用户,所以在user.getUserName()就会报空指针异常

解决办法:在Controller中添加一个对用户是否为空的判断

在这里插入图片描述

11、Mybatis 多对一 结果映射失败

报错:ERROR 25928 --- [io-8080-exec-10] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Could not set property 'department' of 'class com.bobooy.ems.pojo.Employee' with value 'Department(id=101, departmentName=技术部)' Cause: java.lang.IllegalArgumentException: argument type mismatch] with root cause

大概意思:在结果映射时属性和结果的类型不匹配,无法进行结果集映射

在这里插入图片描述

解决方式:修改Department这个关联属性的类型

原类型:

在这里插入图片描述

修改为:Department类型
在这里插入图片描述

12、localhost 将您重定向的次数过多

网页报错:该网页无法正常运作 localhost 将您重定向的次数过多。尝试清除 Cookie ERR_TOO_MANY_REDIRECTS

在这里插入图片描述

报错起因:设置了登录拦截之后,登录发生上述异常。

报错根本原因:在设置了登录拦截器并且判断可以放行的时候再次使用了重定向到主页面,导致登录拦截有一次重定向到主页,正常登录也有一次重定向到主页,所以两者发生了冲突,代码如下:

  • 登陆拦截器

在这里插入图片描述

  • 正常登录(UserController)

在这里插入图片描述

解决方式:删除登录拦截的重定向代码即可

在这里插入图片描述

13、查询Department 可以获取id 不能获取 部门名称 departmentName

测试查看:

在这里插入图片描述

分析原因:实体类中Department的属性部门名为 departmentName 而数据库中部门名字段为department_Name ,这就会导致结果映射不成功

解决方式:

  • 方式一:查询语句改为

    select `id`,`department_name` as departmentName from department;
  • 方式二:开启 Mybatis 驼峰命名映射 在application.yaml文件中配置 注意空格

      configuration:
        map-underscore-to-camel-case: true #开启驼峰命名

在这里插入图片描述

14、前端传给后端数据类型是对象的时候,会自动转为字符串String类型

报错:

WARN 25360 --- [nio-8080-exec-6] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved
[org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1
errors<EOL>Field error in object 'employee' on field 'department': rejected value [101]; codes
[typeMismatch.employee.department,typeMismatch.department,typeMismatch.com.bobooy.ems.pojo.Department,typeMismatch];
arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes
[employee.department,department]; arguments []; default message [department]]; default message [Failed to convert
property value of type 'java.lang.String' to required type 'com.bobooy.ems.pojo.Department' for property
'department'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String'
to required type 'com.bobooy.ems.pojo.Department' for property 'department': no matching editors or conversion
strategy found]]

Cannot convert value of type 'java.lang.String' to required type 'com.bobooy.ems.pojo.Department' for property 'department'

大致意思:不能将字符类型转换为Department类型

在这里插入图片描述

错误来源:

数据库表多对一进行 添加员工 的时候,前端传department给后端,但后端报错类型不匹配

  • 前端如下:

在这里插入图片描述

  • 后端接收

在这里插入图片描述

在这里插入图片描述

解决方式:前端传一个int类型的值,将 department 换成 department.id,这样这个数据传入到后端,数据类型是String通过Mybatis将参数自动转换为int类型,就不会出现类型不匹配的问题

在这里插入图片描述

补充:后端可以将复杂的数据类型(如:数组,对象,集合)传给前端并完好的接收,但前端传给后端的只能是字符串(这里抛开使用JSON进行前后端数据交互)

15、使用PostMapping和DeleteMapping处理删除删除数据的请求报错405

报错:网页报错 405(There was an unexpected error (type=Method Not Allowed, status=405).)

在这里插入图片描述

代码

  • 前端:

在这里插入图片描述

  • 后端

在这里插入图片描述

分析原因:

1.通过网上查阅资料,SpringBoot2.0以上版本没有启用HiddenHttpMethodFilter过滤器,不能将post转换为delete请求,需要在主配置文件中开启过滤器

2.但本次核心错误原因是前端使用a标签href链接发送的是Get请求,所以后端处理请求只能使用GetMapping或者RequestMapping

第一个问题的解决方式:配置文件中添加如下配置

spring.mvc.hiddenmethod.filter.enabled=true

第二个问题的解决方式(本次核心问题):

将controller使用GetMapping或者RequestMapping来处理请求

目录
相关文章
|
NoSQL Java 数据库连接
Idea创建SpringBoot多模块项目
我们可以定义一个维度,以此来划分模块,例如上述商城、可以划分成商品、库存和订单模块。也可以目录结构分层,`Controller`层,只不过没人这样做。这样就引申出了下一个问题`拆分策略`。
808 0
Idea创建SpringBoot多模块项目
|
Java 应用服务中间件 Maven
传统maven项目和现在spring boot项目的区别
Spring Boot:传统 Web 项目与采用 Spring Boot 项目区别
394 0
传统maven项目和现在spring boot项目的区别
|
XML Java 数据库连接
创建springboot项目的基本流程——以宠物类别为例
创建springboot项目的基本流程——以宠物类别为例
132 0
创建springboot项目的基本流程——以宠物类别为例
|
存储 机器学习/深度学习 IDE
SpringBoot 项目与被开发快速迁移|学习笔记
快速学习 SpringBoot 项目与被开发快速迁移
172 0
SpringBoot 项目与被开发快速迁移|学习笔记
|
Java Spring
自定义SpringBoot项目的启动Banner
``Banner``是``SpringBoot``框架一个特色的部分,其设计的目的无非就是一个框架的标识,其中包含了版本号、框架名称等内容,既然``SpringBoot``为我们提供了这个模块,它肯定也是可以更换的这也是``Spring``开源框架的设计理念。
|
前端开发 Java 应用服务中间件
基于springboot+mybatisplus+vue-科技项目评审及专家库管理系统
基于springboot+mybatisplus+vue-科技项目评审及专家库管理系统
214 0
基于springboot+mybatisplus+vue-科技项目评审及专家库管理系统
|
Java Spring
【Java】【Spring Boot】CP01:创建一个SpringBoot项目(Spring Initializr)
【Java】【Spring Boot】CP01:创建一个SpringBoot项目(Spring Initializr)
231 0
【Java】【Spring Boot】CP01:创建一个SpringBoot项目(Spring Initializr)
|
消息中间件 NoSQL Java
47K Star 的SpringBoot+MyBatis+docker电商项目,附超详细的文档
该项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。 前台商城系统:首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。 后台管理系统:商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。 该项目使用现阶段主流技术实现。涵盖了SpringBoot 2.3.0、MyBatis 3.4.6、Elasticsearch 7.6.2、RabbitMQ 3.7.15、Redis 5.0、MongoDB 4.2.5、
|
安全 Java 关系型数据库
Mall电商实战项目全面升级!支持最新版SpringBoot,干掉循环依赖
技术栈升级 mall项目采用现阶主流技术实现,这些主流技术基本都升级了目前最新稳定版,具体升级内容大家可以参考下表。 技术版本说明
|
Java 应用服务中间件 Linux
springboot上传下载文件(1)(项目和文件资源放在同一个服务器上)
springboot上传下载文件(1)(项目和文件资源放在同一个服务器上)
300 0
springboot上传下载文件(1)(项目和文件资源放在同一个服务器上)