关于@RequestParam的使用所遇到的404问题

 更新时间:2021年08月17日 14:52:02   作者:challengelongyj  
这篇文章主要介绍了关于@RequestParam的使用所遇到的404问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

@RequestParam的使用所遇到的404

问题困扰:

114028_3ZAw_3693384.png

最近在学习springmvc,但是学习到@RequestParam的使用过程中,遇到了以上的404报错问题,让我很无奈,教程的可以,为什么我的不可以!!!此时有点烦躁!!!

问题所在及解决:

经过百度之后的说法也是一堆一堆的,最后得知是jsp页面传到controller类方法的形参类型不适合,jsp页面中写的是字符串,controller类方法的形参我写成了Integer类型(毕竟id定义成了Integer类型的)

下面附上jsp页面代码图:会发现value="/items/editItems.action?id='${item.id }'"中的id为字符串有单引 号'',这是错误的写法!!!

114341_v1dZ_3693384.png

重点是这里:正确的应该是value="/items/editItems.action?id=${item.id }"去掉单引号即可

以下附上controller类方法图:

下面是第一种方式:

要求形参名称id与jsp中通过request传过来的参数名称一致

114617_szzn_3693384.png

第二种方式:

不要求形参名称items_id与jsp中通过request传过来的参数名称一致,但是需要加上声明 @RequestParam(value="id")指定request传入参数名称和形参进行绑定

114636_TlRc_3693384.png

@RequestParam注解在使用过程一些注意

在项目开发过程的一些教训经验记录

http接口定义如下:

@RequestMapping(value="/fetchResData",method = RequestMethod.POST,
consumes = MediaType.APPLICATION_JSON_VALUE)
void fetchResData(
  @RequestParam(value = "id")Long id 
 ,@RequestParam(value = "start") String start
 ,@RequestParam(value = "end") String end);

请求方式为POST,Content-Type是json格式,@RequestParam的required属性值默认是true。

客户端在调用该接口,正常传入参数值,但是请求没有进入服务端设置的断点。根据跟踪的异常提示如下:

{
  "timestamp": 1560339674464,
  "status": 400,
  "error": "Bad Request",
  "exception": "org.springframework.web.bind.MissingServletRequestParameterException",
  "message": "Required Long parameter 'id' is not present",
  "path": "/Service/fetchResData"
}

进一步分析客户端的请求体信息,如果接口使用@RequestParam绑定基本数据类型情况下,请求的参数是接在URL后面,消息体是没有数据的。而接口定义使用的consumes = MediaType.APPLICATION_JSON_VALUE。因此无法从消息体中获取有效的参数值。从而服务端认为接口参数是必填的,而实际情况是空值。

针对上述问题的解决办法

1、修改接口定义中

consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE 

等同于http中content-type为

Content-Type=mutipart/form-data和Content-Type=application/x-www-form-urlencoded

2、Post方式改为Get方式

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 基于rocketmq的有序消费模式和并发消费模式的区别说明

    基于rocketmq的有序消费模式和并发消费模式的区别说明

    这篇文章主要介绍了基于rocketmq的有序消费模式和并发消费模式的区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • JavaWeb之会话技术案例详解

    JavaWeb之会话技术案例详解

    这篇文章主要介绍了JavaWeb之会话技术案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • 背包问题-动态规划java实现的分析与代码

    背包问题-动态规划java实现的分析与代码

    这篇文章主要给大家介绍了关于背包问题动态规划java实现的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 浅谈Springboot实现拦截器的两种方式

    浅谈Springboot实现拦截器的两种方式

    本文详细的介绍了Springboot拦截器的两种方式实现,一种就是用拦截器,一种就是过滤器,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 详解Java对象转换神器MapStruct库的使用

    详解Java对象转换神器MapStruct库的使用

    在我们日常开发的程序中,为了各层之间解耦,一般会定义不同的对象用来在不同层之间传递数据。当在不同层之间传输数据时,不可避免地经常需要将这些对象进行相互转换。今天给大家介绍一个对象转换工具MapStruct,代码简洁安全、性能高,强烈推荐
    2022-09-09
  • Java基于jdbc连接mysql数据库操作示例

    Java基于jdbc连接mysql数据库操作示例

    这篇文章主要介绍了Java基于jdbc连接mysql数据库操作,结合完整实例形式分析了java使用jdbc连接mysql数据库的具体步骤与相关注意事项,需要的朋友可以参考下
    2017-07-07
  • javaWeb使用Kaptcha组件生成验证码

    javaWeb使用Kaptcha组件生成验证码

    这篇文章主要为大家详细介绍了javaWeb使用Kaptcha组件生成验证码的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • java 单播、广播、组播详解及实例代码

    java 单播、广播、组播详解及实例代码

    这篇文章主要介绍了java 单播、广播、组播详解及实例代码的相关资料,需要的朋友可以参考下
    2017-02-02
  • Go Java算法重复的DNA序列详解

    Go Java算法重复的DNA序列详解

    这篇文章主要为大家介绍了Go Java算法之重复的DNA序列的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Java Swing组件复选框JCheckBox用法示例

    Java Swing组件复选框JCheckBox用法示例

    这篇文章主要介绍了Java Swing组件复选框JCheckBox用法,结合具体实例形式分析了Swing复选框JCheckBox简单用法与相关操作注意事项,需要的朋友可以参考下
    2017-11-11

最新评论