项目异常问题记录

本文记录了各种项目中遇到的问题及解决方案,包括请求状态码异常(302、404、415、400)、时间相关问题、静态页面问题、数据丢失问题、项目启动失败、数据库连接问题、SpringCloud组件异常、Shiro配置问题、Hadoop问题、Mybatis错误等,提供了解决这些问题的具体方法。
摘要由CSDN通过智能技术生成

项目异常问题解决记录

请求状态码及异常解决方案

状态码 异常名 具体发生原因 常见场景 解决方式
400 bad request 前后端参数名、值不匹配 后端@RequestMapping(params={})进行了限定,前端传的参数不符合
401 权限问题
403 未授权问题
404 资源未找到 1.地址错误 地址输入错误 检查
404 资源未找到 2.后台未向前端有任何输出 后端返回void,或使用了responsebody注解但并未配置Jackson解析的依赖 视图解析器使用order属性
404 资源未找到 3. 启动类上手动@ComponentScan导致SpringbootApplication中原定义的扫描范围出问题,或者MapperScan等扫描范围出问题,找不到Controller 去掉手动加上的@ComponentScan
404 资源未找到 4.当前页面资源类型无法被默认视图解析器解析 jsp和HTML并存的项目 视图解析器使用order属性
415 Unsupported Media Type 前端传递的信息与后台接收信息类型不一致 后台使用了@RequestBody注解(接收Json数据)而前端是以form表单提交 中间使用Json接收中转一下
删除后端@RequestBody注解
415 Unsupported Media Type json依赖包问题导致无法解析 依赖包导入有问题,更换版本或依赖包
500 Ambiguous handler methods mapped for ‘XXX’ 请求的处理器不明确 两个处理器的mapping格式和方法类型一样,服务器无法判断当前请求应当使用哪个处理器 保证处理器映射的唯一性(对其中一个的path或method进行更改)

@RequestMapping(value = “/{name}”,method = RequestMethod.GET)
public …{}

@RequestMapping(value = “/”,method = RequestMethod.POST)
public…{}

WEB响应

数字 原因 解决方案
400 传递了参数但是无法解析(传参格式问题)
401 403 权限问题
404 资源无法找到(路径等问题)
405
415 参数类型不匹配(Json)
500 代码有问题

请求失败:一直302重定向

配置shiro权限拦截时接口名称写错,导致应该正常访问的login接口一直被拦截重定向

找不到资源:一上来就404

使用的静态页面,没有配置mvc:default-servlet-handler,导致中央处理器将其按照动态资源处理

响应失败:415不支持的类型

- Jackson包导入异常
- 错误使用/未使用requestBody responseBody注解

参数匹配相关异常:400

  • Required List parameter ‘ids’ is not present
    后端web层接收时错误使用了@requestparam 或未使用注解

     前后端传对象:
     前端表单+POST提交——属性和字段名一致,controller方法可以直接以对象接收,无需任何注解
     前端Json提交——后端需使用@requestBody解析为对象(记得使用解析包)
    

时间相关

时间少了8小时

数据库和存储时时间显示都正常,查询后渲染到页面时显示少8个小时
是Json解析并渲染到前端时使用的时区问题,pojo原型的Date类型参数上添加注解:@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone = “GMT+8”),明确时区为GMT+8即可

时间格式转换报错

前端某一属性值为时间字符串,pojo和数据库都是数值类型,故需要在js中进行转换才能成功!否则参数类型错误!

	 Date.parse(字符串)  转换成日期
	 日期对象.valueOf()  转换成毫秒值

        vm.activity.beginTime = Date.parse(vm.activity.beginTime).valueOf();
        vm.activity.endTime = Date.parse(vm.activity.endTime).valueOf();

前端为字符串,实体类和数据库都是用date类型(实体类必须是Util的date不是SQL的date)

	方法1,在yml中进行指定格式  spring : mvc : date-format: yyyy-MM-dd
	方法2,在实体类添加@DatetimeFormat(pattern=“yyyy-MM-dd”)注解(与方法1效果相同)
	以上2个方法,pattern指定严格(年月日时分秒)的话,就只能严格接收这样的类型的字符串;简单指定(年月日)的话,也可以接收带时分秒的,但会损失精度

POJO是date类型,前端需要格式化后展示

	在实体类属性上添加@JsonFormat(pattern="yyyy - MM -dd")注解

数据库-时区问题导致页面响应失败

	在URL后追加  &serverTimezone=GMT(或在application.yml中配置serverTimezone) 即可

静态页面问题

  1. Vue vue-router无法渲染
    router-link to无法渲染为链接a标签,也无法加载锚点:vue-router.min.js必须紧接着vue.js引用!!

丢失部分数据

属性注入失败

可能存在new的情况,同时使用new和springIOC管理会出错。请保证全程使用IOC

丢失基本类型数据

使用mapper启动器时,实体类属性必须用封装类型存放!基本类型(int,long)会显示为null

含大写字段丢失数据

application.yml中加入mybatis的全局配置(开启驼峰转换):
mybatis:
configuration:
map-underscore-to-camel-case: true

Feign中数据为null或不匹配、报405/500error Creating bean/RequestParam.value() was empty on parameter 0

基本类型,消费端可以取到,服务端取不到:
需在FeignClient 和 所有相关Controller都是用@RequestParam("")注解!必须声明参数名,才能正常传递!!

自定义类型(对象类型),无法从前端获取数据:
必须使用POST传递+@RequestBody注解,前端传输json数据;

Controller返回空数据

Lombok插件失效,某些时候需要打开注解编程并删除target目录后重新编译
在这里插入图片描述

JsonParseException…was expecting (‘true’, ‘fals

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值