SpringMVC + JPA 开发常见问题
新项目用到SpringMVC + JPA架构,开发过程中遇到各种奇葩问题,在此记录下来,以便日后查阅。
xxx.xxx should be mapped with insert=”false” update=”false”
检查POJO类中是否存在多个字段映射同一个数据库字段。
前台页面提交时报400异常
这种一般是SpringMVC封装参数时抛出的异常,解决办法是检查Controller中对应方法的入参是否有自定义类型,如果有,则将org.springframework的日志级别调至DEBUG,重启后查看具体异常。
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
这是由于高版本tomcat加入了新的特性:严格按照 RFC 3986规范进行请求解析,而 RFC 3986规范定义了Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符(RFC3986中指定了以下字符为保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ])。当我们的url传入的参数中有不在RFC3986范围内的字符,就会报这个错。
解决方法1:使用低版本tomcat(低版本有较多漏洞,不推荐使用)
解决方法2:使用urlencode函数对参数进行URL编码