springmvc请求参数获取的几种方法 |
您所在的位置:网站首页 › springmvc获取表单的几种方式 › springmvc请求参数获取的几种方法 |
装载:https://www.cnblogs.com/xiaoxi/p/5695783.html 1、直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交。 ![]() ![]() url形式:http://localhost/SSMDemo/demo/addUser1?username=lixiaoxi&password=111111 提交的参数需要和Controller方法中的入参名称一致。 2、通过HttpServletRequest接收,post方式和get方式都可以。 ![]() ![]() 3、通过一个bean来接收,post方式和get方式都可以。(1)建立一个和表单中参数对应的bean ![]() ![]() (2)用这个bean来封装接收的参数 ![]() ![]() 4、通过@PathVariable获取路径中的参数 ![]() ![]() 例如,访问http://localhost/SSMDemo/demo/addUser4/lixiaoxi/111111 路径时,则自动将URL中模板变量{username}和{password}绑定到通过@PathVariable注解的同名参数上,即入参后username=lixiaoxi、password=111111。5、使用@ModelAttribute注解获取POST请求的FORM表单数据Jsp表单如下: ![]() ![]() Java Controller如下: ![]() ![]() 6、用注解@RequestParam绑定请求参数到方法入参 当请求参数username不存在时会有异常发生,可以通过设置属性required=false解决,例如: @RequestParam(value="username", required=false) ![]() ![]()
装载:https://www.cnblogs.com/jichen/p/8295830.html 1, ajax 请求 无论为 post ,或者 get ,url中带有?形式的参数,后台都能以String类型变量接收,变量名称和参数名称必须一致 前台ajax: $.ajax( "productForm?loginname2=jichen",// 发送请求的URL字符串。{dataType : "JSON", // 预期服务器返回的数据类型。如果服务器返回不一致,报 parseError type : "post" 或者 “get”, // 请求方式 POST或GET contentType:"application/json;", // 发送信息至服务器时的内容编码类型 。。。 }); 后台springMVC: @RequestMapping(value="/productForm") @ResponseBody(这个注解意味着这个方法的返回值不是页面名称,而是同一次请求的返回体(也就是服务器返回给客户端的数据))public String ProductPost(String loginname2){ (此处必须和前台传的参数名称一致) System.out.println(loginname2);打印的值就是 jichen }
2,ajax 请求 为 post , contentType 必须为 "application/json;charset=UTF-8",data 必须用 JSON.stringify 格式化: JSON.stringify({id : 1}),则后台可以用 Map 类型的@RequestBody Map data 来接收,缺一不可; 前台ajax: $.ajax( "productForm?loginname2=jichen",// 发送请求的URL字符串。{type : "post", contentType:"application/json;charset=UTF-8", // 发送信息至服务器时的内容编码类型,如果不加 charset,则中文传到后台为乱码 // 发送到服务器的数据。data:JSON.stringify({id : 1, loginname : "Spring MVC企业应用实战"}) } 后台springMVC: @RequestMapping(value="/productForm")@ResponseBody(这个注解意味着这个方法的返回值不是页面名称,而是同一次请求的返回体(也就是服务器返回给客户端的数据))public String ProductPost(String loginname2,@RequestBody Map data){ System.out.println(data.get("loginname"));打印出来 Spring MVC企业应用实战 }
3 ,ajax 请求 为 get,data 不能用 JSON.stringify 格式化: JSON.stringify({id : 1}),可以直接传一个对象:{id : 1},如果传的是一个对象,则相当于给 url 加?形式的参数 productForm?id=1 ,如果用 JSON.stringify 格式化,报错: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986 还有,如果为 get 请求,则后台 springMVC 不能用 @RequestBody注解,因为http 1.1协议不支持,如果使用,报错: Required request body is missing 前台ajax: $.ajax("productForm?loginname=jichen",// 发送请求的URL字符串。{dataType : "JSON", // 预期服务器返回的数据类型。如果服务器返回不一致,报 parseError type : "get", // 发送到服务器的数据。 data:{id : 1, loginname : "Spring MVC企业应用实战",auto:123} } 后台springMVC: @RequestMapping(value="/productForm")@ResponseBody(这个注解意味着这个方法的返回值不是页面名称,而是同一次请求的返回体(也就是服务器返回给客户端的数据))public String ProductPost(String loginname){ System.out.println(data.get("loginname"));打印出来 jichen,Spring MVC?????(使用?方式传参,中文为乱码) } 4,如果把 3 的 type 改为 post,contentType 不能写 application/json (可直接省略,如果写成 application/json ,则data 对象传不到后台), data传的是对象{id : 1, loginname : "Spring MVC企业应用实战",auto:123},其它不变,则还是相当于给url带参,?id=1&auto=123.。。。,但是,传到后台的中文不是乱码,神奇!
5,后台接收前台传递的参数的方式 (1)直接用 后台springMVC: @RequestMapping(value="/productForm")@ResponseBody(这个注解意味着这个方法的返回值不是页面名称,而是同一次请求的返回体(也就是服务器返回给客户端的数据))public String ProductPost(String loginname){ System.out.println(data.get("loginname"));打印出来 jichen,Spring MVC?????(使用?方式传参,中文为乱码) }
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |