当前位置: 首页 > news >正文

专业网站建设方案网站建设在国内外研究现状

专业网站建设方案,网站建设在国内外研究现状,企点财税,注册安全工程师管理系统前言 在使用 SpringMVC 开发时#xff0c;经常遇到前端传递的各种参数#xff0c;比如 form 表单#xff0c;JSON 数据#xff0c;String[] 数组#xff0c;再或者是最常见的 String 字符串等等#xff0c;总之大部分场景都是在标题这三个注解来回切换#xff0c;所以搞…前言 在使用 SpringMVC 开发时经常遇到前端传递的各种参数比如 form 表单JSON 数据String[] 数组再或者是最常见的 String 字符串等等总之大部分场景都是在标题这三个注解来回切换所以搞清楚这三个注解日常开发就可以横着走了。 正文 RequestParam 和 RequestBody 都是从 HttpServletRequest request 中取参的而 PathVariable 是映射 URI 请求参数中的占位符到目标方法的参数中的接下来一一举例说明。 希望大家能了解前端在不明确指出 Content-Type 时默认为 application/x-www-form-urlencoded 格式RequestParam 可以获取 application/x-www-form-urlencoded 以及 application/json 这两种类型的参数但是 RequestBody 是用来获取非 application/x-www-form-urlencoded 类型的数据比如 application/json、application/xml 等。 1、RequestParam 请求链接举例GET/POST?param1xxxparam2yyy http://javam4.com/m4detail?id111tagjava后端接收举例 RequestMapping(value /m4detail, method {RequestMethod.GET,RequestMethod.POST}) public void m4detail(RequestParam(valueid, requiredtrue) String isId, RequestParam String tag) {System.out.println(isIdisId);System.out.println(tagtag);}首先这种方式无论是 GET 还是 POST 请求都是可以获取到参数的举例中特意使用了 RequestParam 注解的一些参数具体参数如下 defaultValue 如果本次请求没有携带这个参数或者参数为空那么就会启用默认值name 绑定本次参数的名称要跟URL上面的一样required 这个参数不是必须的如果为 true不传参数会报错value 跟name一样的作用是name属性的一个别名 2、PathVariable 请求链接举例GET/POST/{id} http://javam4.com/m4detail/111?tagjava后端接收举例 RequestMapping(value /m4detail/{id}, method {RequestMethod.GET,RequestMethod.POST}) public void m4detail(PathVariable String id, RequestParam String tag) {System.out.println(idid);System.out.println(tagtag); }然后有的小伙伴可能会问你这就接收了一个 {id}那我能接受 2 个参数吗能。 一个 {xx} 就能对应一个参数那你的请求链接假如是这样 http://javam4.com/m4detail/111/java后端接收方式 RequestMapping(value /m4detail/{id}/{tag}, method {RequestMethod.GET,RequestMethod.POST}) public void m4detail(PathVariable String id, PathVariable String tag) {System.out.println(idid);System.out.println(tagtag); }同样 PathVariable 也有相应的参数 name 绑定参数的名称默认不传递时绑定为同名的形参。 赋值但名称不一致时则报错value 跟name一样的作用是name属性的一个别名required 这个参数不是必须的如果为 true不传参数会报错 总结使用 PathVariable 需要注意两点 参数接收类型使用基本类型如果PathVariable标明参数名称则参数名称必须和URL中参数名称一致 3、ReuqestBody不能用于GET请求 通常后端与前端的交互大多情况下是 POST 请求尤其是传递大量参数时毕竟大量参数暴露在浏览的地址栏还是不怎么优雅的而在 POST 请求中应用 JSON 串对于 Spring MVC 来说是比较友好的后端使用 RequestBody 注解就可以方便的实现 JSON 串到接收参数的数据映射。 说明一下 RequestBody 为什么不能用用于 GET 请求RequestBody 顾名思义是将请求参数设置在请求 Body 中的也就是请求体而 GET 请求无请求体。 使用 RequestBody 需要满足如下条件 Content-Type 为 application/json确保传递是 JSON 数据参数转化的配置必须统一否则无法接收数据比如 json、request 混用等 传递参数举例JSON数据 {aaa: {id: 759791ec-0175-ff808081,title: 我是标题,content: 我是内容},bbb: [123456],ccc: 10 }后端想要接收这个 JSON 数据有两种方式选择一种是建立与 JSON 数据与之对应的实体二是直接使用 MapString,Object 对象接收。 因为 SpringMVC 会帮我们把符合要求的参数封装进实体对象中所以在参数比较多的情况下直接使用对象方式会比较方便。 后端接收举例实体举例 PostMapping(/save) public void save(RequestBody QuestionVo vo) {System.out.println(vo.getAaa().getId()); }QuestionVo.java 实体 public class QuestionVo {private Question aaa;private ListString bbb;private ListString ccc;省略get\set方法... } public class Question {private String id;private String title;private String content;省略get\set方法... }在这给大家说一下 RequestBody 在一个请求中只能用一次如下是报错的 PostMapping(/save) public void save(RequestBody QuestionVo vo, RequestBody String niceyoo) {System.out.println(vo.getAaa().getId()); }报错信息 I/O error while reading input message; nested exception is java.io.IOException: Stream closed但是 RequestParam 是支持多个使用的。 总结(一定要看) 1、在 GET 请求中可以使用 RequestParam不能使用 RequestBodyRequestBody 是用来获取请求体中的参数因为 GET 请求没有请求体所以不能使用。 2、在 POST 请求中可以使用 RequestBody 和 RequestParam 其中 RequestParam 是用来获取 application/x-www-form-urlencoded 、form-data 格式数据的RequestBody 用来获取非 application/x-www-form-urlencoded 数据的比如 application/json、application/xml 等。 3、一个方法中可以同时使用多个 RequestParam 但是只能使用一个 RequestBody否则会报错。 4、PathVariable 起到的作用就是 URI 请求参数中的占位符到目标方法参数的映射。 5、前端请求的 Content-Type 默认值为 application/x-www-form-urlencoded 格式在这种格式下后端直接使用 RequestParam 就可以直接获取指定的参数但是一旦前端传递的是 JSON 数据也就是 Content-Type 的值为 application/json那么使用 RequestParam 是取不到值的不但取不到值还报错。 JSON 数据如下 {name: 哈哈哈哈 }后端接收错误演示 PostMapping(/save) public void save(RequestParam String name) {System.out.println(name); }报错内容 Required String parameter name is not present然后小伙伴就会问那么使用 RequestBody 可以直接映射 name 值 ‘哈哈哈哈’ 吗 答案也是否定的举例如下 PostMapping(/save) public void save(RequestBody String name) {System.out.println(name); }打印内容如下 {name: 哈哈哈哈 }这样其实是将 String name 当做一个对象Spirng MVC 直接将值映射到 name 上所以拿到的值是整个 JSON 数据的全部而创建实体或者是使用 Map 接收就不会出问题但显然就这 name 一个字段创建一个实体对象实属浪费直接用 MapString,Object / MapString,String 接收就可以了 PostMapping(/save) public void save(RequestBody MapString,String map) {System.out.println(map.get(name)); }希望这篇文章对你有所帮助。博客园持续更新欢迎关注。 博客园https://www.cnblogs.com/niceyoo
http://wiki.neutronadmin.com/news/312060/

相关文章:

  • 网站内容是什么广州番禺钟村
  • 跨境电商哪个平台比较好做吉林长春seo网站建设网站优化
  • 孟村县网站建设价格如何进行新产品的推广
  • win7局域网网站开发c#做的网站怎么上传
  • 邯郸网站建设恋家岳阳平台网站制作
  • 广州网站网站asp代码
  • 网站建设与开发wordpress平台
  • 网站开发背景400字做网站便宜
  • 北京网络网站建设公司长沙响应式网站设计有哪些
  • wordpress网站用户注册友情链接适用网站
  • 搜索引擎排名公司网站关键词优化ui设计的发展趋势
  • 提取卡密网站怎么做建一个公司网站要多久
  • 做网站设计多少钱wordpress添加媒体库
  • 汽车网站的建设方向wordpress+最新版本
  • 网站开发人员的岗位职责网站推广计划怎么做
  • 水滴保险官方网站高端网站设计新感觉建站
  • 上海哪家做网站好网站优化说明
  • 博乐建设工程信息网站h5页面和小程序的页面有什么区别
  • 联锁酒店网站建设需求分析优秀网站设计欣赏国内
  • 网站加速cdn自己做微信分身网页版网址
  • wordpress手动安装自助模板网站建设做seo
  • 网站实名认证需要什么定制微信
  • 网站页面设计收费报告的格式范文模板
  • 搜搜网站提交深圳网站的公司
  • 网站备案用的幕布可以淘宝做吗wordpress修复
  • 大气企业网站欣赏网站建设知识产权问题
  • 最好用的设计网站调用别人网站注册表单
  • 展厅设计图片信息流优化师是什么
  • 南通网站排名优化品牌网站建设定制
  • 建个网站需要投资多少钱开发公司采购招聘